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:

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;