.. role:: blue :class: blue Эквидистантная поверхность MbOffsetSurface ========================================== .. _MbOffsetSurface_Equidistant_Surface: .. версия ядра: 1180ХХ Класс :blue:`MbOffsetSurface` объявлен в файле *surf\_offset\_surface.h*. Эквидистантная поверхность :blue:`MbOffsetSurface` описывается базовой поверхностью :ref:`MbSurface ` *basisSurface*, смещением вдоль нормали базовой поверхности *distance*, граничными значениями первого параметра базовой поверхности *u0min*, *u0max*, граничными значениями второго параметра базовой поверхности *v0min*, *v0max*, признаками периодичности базовой поверхности *u0closed*, *v0closed*, увеличениями граничных значений первого параметра базовой поверхности *dumin*, *dumax*, увеличениями граничных значений второго параметра базовой поверхности *dvmin*, *dvmax*. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности. Вычисление радиус-вектора точки эквидистантной поверхности выполняется следующим образом. Для заданного параметра вычисляется точка базовой поверхности и нормаль в этой точке. В методе :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) радиус-вектор поверхности **s** описывается векторной функцией .. math:: \mathbf{r}(u, v) = \mathbf{basisSurface}(u, v) + \mathbf{normal}(u, v) \cdot \textit{distance}, где **normal**\(*u*, *v*) — нормаль поверхности в заданной точке. Эквидистантная поверхность и её базовая поверхность приведены на рис. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.23.1.png :width: 12cm :align: center Рис. 1 Область изменения параметров эквидистантной поверхности может отличаться от области изменения параметров базовой поверхности. Область изменения первого параметра эквидистантной поверхности определяется неравенствами: *u0min* + *dumin* ≤ *u* ≤ *u0max* + *dumax*. Область изменения второго параметра эквидистантной поверхности определяется неравенствами: *v0min* + *dvmin* ≤ *v* ≤ *v0max* + *dvmax*. Эквидистантная поверхность с отрицательным смещением и увеличенной областью определения параметров и её базовая поверхность приведены на рис. 2. .. figure:: /MODELER/SURFACES/pictures/O.5.23.2.png :width: 12cm :align: center Рис. 2 В качестве базовой поверхности для эквидистантной поверхности не должна использоваться другая эквидистантная поверхность, а должна использоваться базовая поверхность последней с соответствующим пересчётом величины смещения. Каждая поверхность может построить эквидистантную поверхность виртуальным методом :blue:`Offset`\( double *distance*, bool *sense* ).