MbCoverSurface Coons Surface

Class MbCoverSurface is declared in file surf_cover_surface.h.

Coons surface MbCoverSurface is defined by curves MbCurve3D curve0, curve1, curve2, curve3, four points MbCartPoint3D vertex[4], four pairs of boundary values of the parameters of the corresponding curves: t0min, t0max, t1min, t1max, t2min, t2max, t3min, t3max, a flag of periodicity of the surface in the first parameter uclosed, a flag of periodicity of the surface in the second parameter vclosed, a flag of the presence of a pole of the surface at the initial value of the first parameter poleUMin, a flag of the presence of a pole of the surface at the final value of the first parameter poleUMax, a flag of the presence of a pole of the surface at the initial value of the second parameter poleVMin, and a flag of the presence of a pole of the surface at the final value of the second parameter poleVMax. 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 can be periodic in the first parameter if curves curve0 and curve2 are periodic.

The second parameter of the surface v takes values on the segment 0 ≤ v ≤ 1. The surface can be periodic in the second parameter if curves curve1 and curve3 are periodic.

Adjacent curves curve0, curve1, curve2, curve3 must have intersection points or crossing points with each other. Parameters of the curves t0min, t0max, t1min, t1max, t2min, t2max, t3min, t3max are computed from the intersection or crossing points of the curves and define the working segments of the curves and points vertex[4]. 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) = (1 - v) \left( \mathbf{curve0}(t_{0}) - (1 - u) \mathbf{vertex}[0] \right) + u \left( \mathbf{curve1}(t_{1}) - (1 - v) \mathbf{vertex}[1] \right) + v \left( \mathbf{curve2}(t_{2}) - u \mathbf{vertex}[2] \right) + \\ (1 - u) \left( \mathbf{curve3}(t_{3}) - v \mathbf{vertex}[3] \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} = (1 - u) \cdot t0min + u \cdot t0max \end{equation}

is the parameter of curve curve0,

\begin{equation} t_{1} = (1 - v) \cdot t1min + v \cdot t1max \end{equation}

is the parameter of curve curve1,

\begin{equation} t_{2} = (1 - u) \cdot t2min + u \cdot t2max \end{equation}

is the parameter of curve curve2,

\begin{equation} t_{3} = (1 - v) \cdot t3min + v \cdot t3max \end{equation}

is the parameter of curve curve3.

Coons surface on four crossing curves is shown in Fig. 1.

../../../../_images/O.5.18.1.png

Fig. 1

The shape of the surface depends on the shape of the curves. If adjacent curves intersect at points vertex[4], the surface passes along segments of the curves: for u = 0 the surface passes along a segment of curve curve3, for v = 0 the surface passes along a segment of curve curve0, for u = 1 the surface passes along a segment of curve curve1, and for v = 1 the surface passes along a segment of curve curve2.