Two-Dimensional Projection Curve MbProjCurve

The MbProjCurve class is declared in the cur_projection_curve.h file.

A two-dimensional projection curve is described by a space curve MbCurve3D* spaceCurve, a surface MbSurface* surface and a two-dimensional curve MbCurve* curve. The curve also has some additional data that is optional and is used to speed up the curve methods.

A two-dimensional projection curve represents the projection of the space curve spaceCurve onto the surface surface, which is approximately described by the two-dimensional curve curve within the definition domain of the surface parameters. The definition domains of the parameters of the curves spaceCurve and curve coincide. The two-dimensional curve curve is usually a spline whose control points are obtained by projecting points of the space curve spaceCurve onto the surface surface. The parametrization of the curve curve is consistent with the parametrization of the space curve at the control points. The two-dimensional curve curve may lie outside the definition domain of the surface parameters.

In the method

PointOn( double & t, MbCartPoint & r)

the radius vector of the curve r is described by the vector function

\[\mathbf{r}(t) = [u \quad v],\]

where u, v are the parameters of the projection of the point spaceCurve(t) onto the surface surface.

The PointOn() method corrects the parameter t if it is outside the curve domain. The _PointOn() method is used to calculate a point without correcting the parameter.

An initial approximation of the parameters u and v is computed by the method

curve->PointOn(t, point),

u = point.x, v = point.y.

Then the parameters u and v are refined by an iterative method using the equations

\[ \begin{align}\begin{aligned}\mathbf{deriveU} \cdot (\mathbf{spaceCurve}(t) - \mathbf{surface}(u,\, v)) = 0,\\\mathbf{deriveV} \cdot (\mathbf{spaceCurve}(t) - \mathbf{surface}(u,\, v)) = 0,\end{aligned}\end{align} \]

where deriveU and deriveV are the partial derivatives of the radius vector of the surface, which are calculated by the methods

surface->_DeriveU(u, v, deriveU)

and

surface->_DeriveV(u, v, deriveV),

respectively.

A projection curve is shown in the figure:

../../../../_images/O.3.16.1.png

The projection curve is used for an exact description of the projection of a space curve onto a surface.