MbOffsetSurface Equidistant Surface

Class MbOffsetSurface is declared in the surf_offset_surface.h file.

The equidistant surface MbOffsetSurface is defined by the base surface MbSurface basisSurface, by the offset along the normal of the base surface distance, by the boundary values of the first parameter of the base surface u0min, u0max, by the boundary values of the second parameter of the base surface v0min, v0max, by the flags of the base surface periodicity u0closed, v0closed, by the increments of the boundary values of the first parameter of the base surface dumin, dumax, and by the increments of the boundary values of the second parameter of the base surface dvmin, dvmax. The surface also has some additional data that is optional and is used to speed up the surface methods.

The radius vector of a point on the equidistant surface is computed as follows. For a given parameter, the point of the base surface and the normal at this point are computed.

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

\[\mathbf{r}(u, v) = \mathbf{basisSurface}(u, v) + \mathbf{normal}(u, v) \cdot \textit{distance},\]

where normal(u, v) is the surface normal at the given point. The equidistant surface and its base surface are shown in Fig. 1:

../../../../_images/O.5.23.1.png

Fig. 1

The parameter domain of the equidistant surface may differ from the parameter domain of the base surface. The domain of the first parameter of the equidistant surface is defined by the inequalities u0min + dumin ≤ u ≤ u0max + dumax. The domain of the second parameter of the equidistant surface is defined by the inequalities v0min + dvmin ≤ v ≤ v0max + dvmax. The equidistant surface with a negative offset and an expanded parameter domain and its base surface are shown in Fig. 2:

../../../../_images/O.5.23.2.png

Fig. 2

Another equidistant surface must not be used as the base surface for an equidistant surface; instead, the base surface of the latter must be used with the corresponding recalculation of the offset value.

Each surface can construct an equidistant surface by the virtual method Offset( double distance, bool sense ).