Equal Curve Properties
C3D Solver supports equality of four curve properties: lengths GCE_AddEqualLength, radii GCE_AddEqualRadius, offsets of equidistant curves GCE_AddEqualOffset, and curvatures at specified points GCE_AddEqualCurvature. Let’s explore each of these types.
The lengths of two curves can be equalized using the GCE_AddEqualLength function.
constraint_item GCE_AddEqualLength(GCE_system gSys, geom_item curve1,
geom_item curve2);
It takes a constraint system gSys and two curves, curve1 and curve2, and returns a descriptor of a new constraint.
The Equal Length constraint can be applied to curves that either have endpoints (i.e., queries for their GCE_FIRST_END and GCE_SECOND_END coordinates return a result other than GCE_NULL_G) or are closed. This constraint is supported for any combination of curves for which the GCE_AddLength constraint is available.
The radii of two curves can be equalized using the GCE_AddEqualRadius function.
constraint_item GCE_AddEqualRadius(GCE_system gSys, geom_item c1,
geom_item c2);
It takes a constraint system gSys and two curves, curve1 and curve2, and returns a descriptor of a new constraint.
The Equal Radius constraint can be applied to curves for which querying the GCE_RADIUS value is valid.
The offsets of two equidistant curves can be equalized using the GCE_AddEqualOffset function.
geom_item GCE_AddEqualOffset(GCE_system gSys, geom_item curve1,
geom_item curve2);
It takes a constraint system gSys and two equidistant curves, curve1 and curve2, and returns a descriptor of a new constraint.
The Equal Offset constraint can be applied to curves for which querying GCE_OFFSET value is valid.
The curvatures at given points on two curves can be equalized using the GCE_AddEqualCurvature function.
constraint_item GCE_AddEqualCurvature(GCE_system gSys, geom_item curves[2],
var_item tPars[2]);
It takes a constraint system gSys, two curves curves, and parameters (if required), in which curvatures should be equal, and returns a descriptor of a new constraint
If given a GCE_CIRCLE or a GCE_BOUNDED_CURVE, based on a circle, the corresponding tPars[i] is expected to be set to GCE_NULL_V, since the curvature of a circle is same at every point. For a GCE_LINE or a GCE_LINE_SEGMENT the method is applied only in conjunction with GCE_SPLINE.