Эквидистантная поверхность MbOffsetSurface
Класс MbOffsetSurface объявлен в файле surf_offset_surface.h.
Эквидистантная поверхность MbOffsetSurface описывается базовой поверхностью MbSurface basisSurface, смещением вдоль нормали базовой поверхности distance, граничными значениями первого параметра базовой поверхности u0min, u0max, граничными значениями второго параметра базовой поверхности v0min, v0max, признаками периодичности базовой поверхности u0closed, v0closed, увеличениями граничных значений первого параметра базовой поверхности dumin, dumax, увеличениями граничных значений второго параметра базовой поверхности dvmin, dvmax. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.
Вычисление радиус-вектора точки эквидистантной поверхности выполняется следующим образом. Для заданного параметра вычисляется точка базовой поверхности и нормаль в этой точке.
В методе PointOn( double u, double v, MbCartPoint3D & s ) радиус-вектор поверхности s описывается векторной функцией
где normal(u, v) — нормаль поверхности в заданной точке. Эквидистантная поверхность и её базовая поверхность приведены на рис. 1.
Рис. 1
Область изменения параметров эквидистантной поверхности может отличаться от области изменения параметров базовой поверхности. Область изменения первого параметра эквидистантной поверхности определяется неравенствами: u0min + dumin ≤ u ≤ u0max + dumax. Область изменения второго параметра эквидистантной поверхности определяется неравенствами: v0min + dvmin ≤ v ≤ v0max + dvmax. Эквидистантная поверхность с отрицательным смещением и увеличенной областью определения параметров и её базовая поверхность приведены на рис. 2.
Рис. 2
В качестве базовой поверхности для эквидистантной поверхности не должна использоваться другая эквидистантная поверхность, а должна использоваться базовая поверхность последней с соответствующим пересчётом величины смещения.
Каждая поверхность может построить эквидистантную поверхность виртуальным методом Offset( double distance, bool sense ).