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.