MbMeshSurface Surface Based on a Network of Curves
Class MbMeshSurface is declared in the surf_mesh_surface.h file.
The mesh surface MbMeshSurface is defined by the set of curves RPArray< MbCurve3D > uCurves, the set of curves RPArray< MbCurve3D > vCurves, the set of values of the first surface parameter uParams, the set of values of the second surface parameter vParams, the boundary values of the first surface parameter umin and umax, the boundary values of the second surface parameter vmin and vmax, the flags that indicate the presence of the surface pole at the boundary values of the first parameter poleUMin, poleUMax, the flags that indicate the presence of the surface pole at the boundary values of the second parameter poleVMin, poleVMax, the flag of the surface periodicity in the first parameter uclosed, the flag of the surface periodicity in the second parameter vclosed, the type type0 of the surface continuity at the edge that corresponds to the second parameter vmin, the type type1 of the surface continuity at the edge that corresponds to the first parameter umin, the type type2 of the surface continuity at the edge that corresponds to the second parameter vmax, the type type3 of the surface continuity at the edge that corresponds to the first parameter umax. The surface also has some additional data that is optional and is used to speed up the surface methods.
The number of elements in the set of curves vCurves and in the set of values of the first surface parameter uParams is coordinated so that parameter uParams[j] corresponds to the points of the curve vCurves[j]. The first surface parameter u takes values on the segment uParams[0] ≤ u ≤ uParams[uParams.MaxIndex()]. The surface can be periodic in the first parameter if all curves uCurves are periodic.
The number of elements in the set of curves uCurves and in the set of values of the second surface parameter vParams is coordinated so that parameter vParams[i] corresponds to the points of the curve uCurves[i]. The second surface parameter v takes values on the segment vParams[0] ≤ v ≤ vParams[vParams.MaxIndex()]. The surface can be periodic in the second parameter if all curves vCurves are periodic.
Each curve uCurves[i] must have intersection points or crossing points with each curve vCurves[j]. Neighboring curves of the uCurves set must not have opposite directions. Neighboring curves of the vCurves set also must not have opposite directions.
In the PointOn( double u, double v, MbCartPoint3D & s ) method, the radius vector of the surface s is described by a vector function given in the book «Geometric Modeling» by Golovanov N.N. A mesh surface is shown in the figure:
Fig. 1
The shape of the surface depends on the shape of the curves, their relative position, and the parameter values of the uParams and vParams sets. If every curve uCurves[i] intersects every curve vCurves[j], then the surface passes along the curves vCurves[j] at parameters u = uParams[j] and along the curves uCurves[i] at parameters v = vParams[i].