MbCornerSurface Surface Based on Three Curves

Class MbCornerSurface is declared in file surf_corner_surface.h.

Surface based on three curves MbCornerSurface is defined by curves MbCurve3D * curve0, curve1, curve2, three points MbCartPoint3D vertex[3], and three pairs of boundary values of the parameters of the corresponding curves: t0min, t0max, t1min, t1max, t2min, t2max. The surface also has some additional data that are not mandatory and are used to speed up the work of the surface methods.

The first parameter of the surface u takes values on the segment 0 ≤ u ≤ 1. The surface cannot be periodic in the first parameter. The surface has a singular point at the minimum value of the first parameter u = 0. At the singular point, the derivative of the radius vector of the surface with respect to the second parameter is equal to zero.

The second parameter of the surface v takes values on the segment 0 ≤ v ≤ 1. The surface cannot be periodic in the second parameter.

Curves curve0, curve1, curve2 must have intersection points or crossing points with each other. Parameters of the curves t0min, t0max, t1min, t1max, t2min, t2max are computed from the intersection or crossing points of the curves and define the working segments of the curves and points vertex[3]. The directions of the curves are not important for the surface.

In method PointOn( double u, double v, MbCartPoint3D & s ) the radius vector of the surface s is described by the vector function

\begin{equation} \mathbf{s}(u, v) = w_{0} \left( \mathbf{curve2}(t_{2}) + \mathbf{curve1}(s_{1}) - \mathbf{vertex}[0] \right) + w_{1} \left( \mathbf{curve0}(t_{0}) + \mathbf{curve2}(s_{2}) - \mathbf{vertex}[1] \right) + w_{2} \left( \mathbf{curve1}(t_{1}) + \mathbf{curve0}(s_{0}) - \mathbf{vertex}[2] \right), \end{equation}

where w0 = 1 - u, w1 = 0.5(u - uv), w2 = 0.5(u + uv) are the barycentric coordinates of the surface,

\begin{equation} t_{0} = w_{2} \cdot t0min + (1 - w_{2}) \cdot t0max, \quad s_{0} = (1 - w_{1}) \cdot t0min + w_{1} \cdot t0max \end{equation}

are parameters of curve curve0,

\begin{equation} t_{1} = w_{0} \cdot t1min + (1 - w_{0}) \cdot t1max, \quad s_{1} = (1 - w_{2}) \cdot t1min + w_{2} \cdot t1max \end{equation}

are parameters of curve curve1,

\begin{equation} t_{2} = w_{1} \cdot t2min + (1 - w_{1}) \cdot t2max, \quad s_{2} = (1 - w_{0}) \cdot t2min + w_{0} \cdot t2max \end{equation}

are parameters of curve curve2.

Surface based on three crossing curves is shown in Fig. 1:

../../../../_images/O.5.17.1.png

Fig. 1

Fig. 2 shows a surface coinciding with a part of a sphere surface constructed on three identical circular arcs: the planes of the circular arcs are orthogonal to each other, the arcs intersect at end points, and each arc contains a quarter of a circle.

../../../../_images/O.5.17.2.png

Fig. 2

The shape of the surface depends on the shape of the curves. If the curves do not intersect, the surface does not pass through the curves. If the curves intersect, points vertex[3] lie at the intersection points, and the surface passes along segments of the curves: for w0 = 0 the surface passes along a segment of curve curve0, for w1 = 0 the surface passes along a segment of curve curve1, and for w2 = 0 the surface passes along a segment of curve curve2.