Navigation
Navigate Navigate Navigate Navigate Navigate Navigate Navigate Navigate

IfcRationalBezierCurve

Definition from IAI: A rational Bezier curve 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.

NOTE: The IfcRationalBezierCurve is an entity that had been adopted from ISO 10303, Industrial automation systems and integration—Product data representation and exchange, Part 42: Integrated generic resource: Geometric and topological representation.

NOTE: The specific subtype IfcRationalBezierCurve has been introduced to avoid the complexity of ANDOR subtype relationships in the ISO 10303-42 specification

All weights shall be positive and the curve is given by:

Math

where

k+1 number of control points
Pi control points
wi weights
d degree

NOTE: Corresponding STEP entity: rational_b_spline_curve. Please refer to ISO/IS 10303-42:1994, p. 45 for the final definition of the formal standard.

HISTORY: New entity in Release IFC2x Edition 2.

EXPRESS specification:

ENTITY IfcRationalBezierCurve
SUBTYPE OF ( IfcBezierCurve);
WeightsData  :  LIST [2:?] OF REAL;
DERIVE
Weights  :  ARRAY [0:255] OF REAL :=  IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints);
WHERE
WR1  :  SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList);
WR2  :  IfcCurveWeightsPositive(SELF);
END_ENTITY;

Attribute definitions:

WeightsData  :  The supplied values of the weights.
Weights  :  The array of weights associated with the control points. This is derived from the weights data.

Inheritance graph

ENTITY IfcRationalBezierCurve;
ENTITY IfcRepresentationItem;
INVERSE
LayerAssignments  :  SET OF IfcPresentationLayerAssignment FOR AssignedItems;
StyledByItem  :  SET [0:1] OF IfcStyledItem FOR Item;
ENTITY IfcGeometricRepresentationItem;
ENTITY IfcCurve;
DERIVE
Dim  :  IfcDimensionCount :=  IfcCurveDim(SELF);
ENTITY IfcBoundedCurve;
ENTITY IfcBSplineCurve;
Degree  :  INTEGER;
ControlPointsList  :  LIST [2:?] OF IfcCartesianPoint;
CurveForm  :  IfcBSplineCurveForm;
ClosedCurve  :  LOGICAL;
SelfIntersect  :  LOGICAL;
DERIVE
ControlPoints  :  ARRAY [0:255] OF IfcCartesianPoint :=  IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints);
UpperIndexOnControlPoints  :  INTEGER :=  (SIZEOF(ControlPointsList) - 1);
ENTITY IfcBezierCurve;
ENTITY IfcRationalBezierCurve;
WeightsData  :  LIST [2:?] OF REAL;
DERIVE
Weights  :  ARRAY [0:255] OF REAL :=  IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints);
END_ENTITY;