.. role:: blue :class: blue Equidistant Curve MbOffsetCurve3D ================================= .. _MbOffsetCurve3D_Equidistant_Curve_: .. kernel version: The :blue:`MbOffsetCurve3D` class is declared in the *cur_offset_curve3d.h* file. An equidistant curve is defined by the base curve :ref:`MbCurve3D ` **basisCurve** and the offset vector :ref:`MbVector3D ` **offset**. The curve also has some additional data that is optional and is used to speed up the curve methods. The base curve **basisCurve** is a :blue:`MbSpine` object, which constructs a moving local coordinate system along the curve, with the first coordinate axis directed along the tangent to the curve. The offset vector **offset** defines the displacement of the start point of the base curve to the start point of the equidistant curve. The offset vector **offset** is orthogonal to the tangent vector of the base curve at the start point. In the moving local coordinate system, the displacement of all points of the base curve to the corresponding points of the equidistant curve is equal to the offset vector and orthogonal to the tangent vector of the base curve at the current point. The radius vector of a point of the equidistant curve is computed as follows. For a given parameter of the base curve, a point on the spine curve and a local coordinate system with the origin at this point and the first coordinate axis directed along the tangent to the curve at this point are computed. Then the rotation matrix of the local coordinate system during its movement from the start point of the base curve to the given point is computed. A copy of the offset vector is transformed by this rotation matrix, and the computed point of the base curve is shifted by the resulting vector. In the :blue:`PointOn`\( double & *t*, :ref:`MbCartPoint3D ` & **r**) method, the radius vector of the curve **r** is described by the vector function .. math:: \mathbf{r}(t) = \mathbf{basisCurve}(t) + \mathbf{offset} \cdot \mathbf{A}(t), where **A**\(t) is the rotation matrix of the local coordinate system during its movement from the start point of the base curve to the given point. The equidistant curve to a conical spiral is shown in the figure: .. figure:: /MODELER/CURVES/pictures/O.4.12.1.png :width: 12cm :align: center The parameter range of the equidistant curve coincides with the parameter range of the base curve. Another equidistant curve must not be used as the base curve for an equidistant curve; the spine curve of the latter must be used with the corresponding recalculation of the offset vector.