Поверхность на трёх кривых MbCornerSurface

Класс MbCornerSurface объявлен в файле surf_corner_surface.h.

Поверхность на трёх кривых MbCornerSurface описывается кривыми MbCurve3D * curve0, curve1, curve2, тремя точками MbCartPoint3D vertex[3] и тремя парами граничных значений параметров соответствующих кривых: t0min, t0max, t1min, t1max, t2min, t2max. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.

Первый параметр поверхности u принимает значения на отрезке 0 ≤ u ≤ 1. Поверхность не может быть периодической по первому параметру. Поверхность имеет особую точку при минимальном значении первого параметра u = 0. В особой точке производная радиуса-вектора поверхности по второму параметру равна нулю.

Второй параметр поверхности v принимает значения на отрезке 0 ≤ v ≤ 1. Поверхность не может быть периодической по второму параметру.

Кривые curve0, curve1, curve2 должны иметь точки пересечения или точки скрещения друг с другом. Параметры кривых t0min, t0max, t1min, t1max, t2min, t2max вычисляются по точкам пересечения или скрещения кривых и определяют рабочие участки кривых и точки vertex[3]. Направления кривых для поверхности не имеют значения.

В методе PointOn( double u, double v, MbCartPoint3D & s ) радиус-вектор поверхности s описывается векторной функцией

\begin{equation} \mathbf{s}(u, v) = w_{0} \left( \mathbf{curve2}(t_{2}) + \mathbf{curve1}(s_{1}) - \mathbf{vertex}[0] \right) + w_{1} \left( \mathbf{curve0}(t_{0}) + \mathbf{curve2}(s_{2}) - \mathbf{vertex}[1] \right) + w_{2} \left( \mathbf{curve1}(t_{1}) + \mathbf{curve0}(s_{0}) - \mathbf{vertex}[2] \right), \end{equation}

где w0 = 1 - u, w1 = 0.5(u - uv), w2 = 0.5(u + uv) — барицентрические координаты поверхности,

\begin{equation} t_{0} = w_{2} \cdot t0min + (1 - w_{2}) \cdot t0max, \quad s_{0} = (1 - w_{1}) \cdot t0min + w_{1} \cdot t0max \end{equation}

— параметры кривой curve0,

\begin{equation} t_{1} = w_{0} \cdot t1min + (1 - w_{0}) \cdot t1max, \quad s_{1} = (1 - w_{2}) \cdot t1min + w_{2} \cdot t1max \end{equation}

— параметры кривой curve1,

\begin{equation} t_{2} = w_{1} \cdot t2min + (1 - w_{1}) \cdot t2max, \quad s_{2} = (1 - w_{0}) \cdot t2min + w_{0} \cdot t2max \end{equation}

— параметры кривой curve2.

Поверхность на трёх скрещивающихся кривых приведена на рис. 1:

../../../../_images/O.5.17.1.png

Рис. 1

На рис. 2 приведена совпадающая с частью поверхности сферы поверхность, построенная на трёх одинаковых дугах окружностей: плоскости дуг окружностей ортогональны друг другу, дуги пересекаются в крайних точках, каждая дуга содержит четверть окружности.

../../../../_images/O.5.17.2.png

Рис. 2

Форма поверхности зависит от формы кривых. Если кривые не пересекаются, то поверхность не проходит по кривым. Если кривые пересекаются, то точки vertex[3] расположены в точках пересечения, и поверхность проходит по участкам кривых: при w0 = 0 поверхность проходит по участку кривой curve0, при w1 = 0 поверхность проходит по участку кривой curve1, при w2 = 0 поверхность проходит по участку кривой curve2.