## Виды равенств характеристик кривых C3D Solver поддерживает четыре вида равенств характеристик кривых: равенство длин GCE_AddEqualLength, равенство радиусов GCE_AddEqualRadius, равенство смещений эквидистантных кривых GCE_AddEqualOffset и равенство кривизны двух кривых в заданных точках GCE_AddEqualCurvature. Последовательно рассмотрим каждый из них. Равенство длин двух кривых задается методом ```cpp constraint_item GCE_AddEqualLength(GCE_system gSys, geom_item curve1, geom_item curve2); ``` Метод принимает систему ограничений **gSys** и пару кривых -- **curve1** и **curve2**, а возвращает дескриптор нового ограничения. Равенство длин двух кривых можно накладывать на кривые, которые имеют концы (т.е. у них можно запросить GCE_FIRST_END и GCE_SECOND_END), либо являются замкнутыми. Поддерживается для любых комбинаций кривых, для которых поддерживается ограничение [GCE_AddLength](./Length_Fixing.md). Равенство радиусов для двух кривых задается методом ```cpp constraint_item GCE_AddEqualRadius(GCE_system gSys, geom_item c1, geom_item c2); ``` Метод принимает систему ограничений **gSys** и пару кривых -- **c1** и **c2**, а возвращает дескриптор нового ограничения. Равенство радиусов для двух кривых можно накладывать на кривые, у которых можно запросить GCE_RADIUS. Равенство смещений эквидистантных кривых задаётся методом ```cpp geom_item GCE_AddEqualOffset(GCE_system gSys, geom_item curve1, geom_item curve2); ``` Метод принимает систему ограничений **gSys** и пару эквидистантных кривых -- **curve1** и **curve2**, а возвращает дескриптор нового ограничения. Равенство смещений эквидистантных кривых можно накладывать на кривые, у которых можно запросить GCE_OFFSET. Равенство кривизны двух кривых в заданных точках задается методом ```cpp constraint_item GCE_AddEqualCurvature(GCE_system gSys, geom_item curves[2], var_item tPars[2]); ``` Метод принимает систему ограничений **gSys**, пару кривых **curves** и параметры параметрических кривых (если требуются), в которых должно выполняется равенство кривизны. Возвращает дескриптор нового ограничения. Если тип кривой GCE_CIRCLE или GCE_BOUNDED_CURVE, базовой кривой которой является окружность, то соответствующее этой кривой значение tPars\[i\] должно равняться GCE_NULL_V, так как кривизна окружности одинакова во всех её точках. Если тип кривой GCE_LINE или GCE_LINE_SEGMENT, то равенство кривизны можно задать только в паре с GCE_SPLINE.