8.9.3.53 IfcRationalBSplineCurveWithKnots
8.9.3.53.1 Semantic definition
A rational B-spline curve with knots is a B-spline curve described in terms of control points and basic functions. It describes weights in addition to the control points defined at the supertype IfcBSplineCurve.
All weights shall be positive and the curve is given by:

where:
Variable | Definition |
---|---|
k+1 | number of control points |
Pi | control points |
wi | weights |
d | degree |
8.9.3.53.2 Entity inheritance
-
- IfcCurve
- IfcAnnotationFillArea
- IfcBooleanResult
- IfcBoundingBox
- IfcCartesianPointList
- IfcCartesianTransformationOperator
- IfcCsgPrimitive3D
- IfcDirection
- IfcFaceBasedSurfaceModel
- IfcFillAreaStyleHatching
- IfcFillAreaStyleTiles
- IfcGeometricSet
- IfcHalfSpaceSolid
- IfcLightSource
- IfcPlacement
- IfcPlanarExtent
- IfcPoint
- IfcSectionedSpine
- IfcSegment
- IfcShellBasedSurfaceModel
- IfcSolidModel
- IfcSurface
- IfcTessellatedItem
- IfcTextLiteral
- IfcVector
8.9.3.53.3 Attributes
# | Attribute | Type | Description |
---|---|---|---|
IfcRepresentationItem (2) | |||
IfcCurve (1) | |||
IfcBSplineCurve (7) | |||
IfcBSplineCurveWithKnots (4) | |||
Click to show 14 hidden inherited attributes Click to hide 14 inherited attributes | |||
IfcRationalBSplineCurveWithKnots (2) | |||
9 | WeightsData | LIST [2:?] OF IfcReal |
The supplied values of the weights. |
* | Weights | ARRAY [0:UpperIndexOnControlPoints] OF IfcReal |
This attribute is formally derived.
The array of weights associated with the control points. This is derived from the weights data. |
8.9.3.53.4 Formal propositions
Name | Description |
---|---|
SameNumOfWeightsAndPoints |
There shall be the same number of weights as control points. |
|
|
WeightsGreaterZero |
All the weights shall have values greater than 0.0. |
|
8.9.3.53.5 Formal representation
ENTITY IfcRationalBSplineCurveWithKnots SUBTYPE OF (IfcBSplineCurveWithKnots); WeightsData : LIST [2:?] OF IfcReal; DERIVE Weights : ARRAY [0:UpperIndexOnControlPoints] OF IfcReal := IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints); WHERE SameNumOfWeightsAndPoints : SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList); WeightsGreaterZero : IfcCurveWeightsPositive(SELF); END_ENTITY;