Поверхность на трёх кривых 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 описывается векторной функцией
где w0 = 1 - u, w1 = 0.5(u - uv), w2 = 0.5(u + uv) — барицентрические координаты поверхности,
— параметры кривой curve0,
— параметры кривой curve1,
— параметры кривой curve2.
Поверхность на трёх скрещивающихся кривых приведена на рис. 1:
Рис. 1
На рис. 2 приведена совпадающая с частью поверхности сферы поверхность, построенная на трёх одинаковых дугах окружностей: плоскости дуг окружностей ортогональны друг другу, дуги пересекаются в крайних точках, каждая дуга содержит четверть окружности.
Рис. 2
Форма поверхности зависит от формы кривых. Если кривые не пересекаются, то поверхность не проходит по кривым. Если кривые пересекаются, то точки vertex[3] расположены в точках пересечения, и поверхность проходит по участкам кривых: при w0 = 0 поверхность проходит по участку кривой curve0, при w1 = 0 поверхность проходит по участку кривой curve1, при w2 = 0 поверхность проходит по участку кривой curve2.