Кинематическая поверхность MbEvolutionSurface
Класс MbEvolutionSurface объявлен в файле surf_evolution_surface.h.
Кинематическая поверхность MbEvolutionSurface принадлежит к группе поверхностей движения MbSweptSurface. Кинематическая поверхность является общим случаем поверхности движения с произвольной направляющей кривой. Поверхность вращения описывается образующей кривой MbCurve3D * curve, направляющим объектом MbCurve3D * spine, положением начала направляющей MbCartPoint3D origin. У поверхности есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов поверхности.
Первый параметр поверхности u совпадает с параметром образующей кривой curve. Первый параметр поверхности принимает значения на отрезке umin ≤ u ≤ umax, который соответствует области определения образующей кривой. Поверхность может быть периодической по первому параметру, если периодической является образующая кривая.
Направляющий объект spine заменяет собой направляющую кривую, построен на базе кривой и отличается от последней тем, что может генерировать локальную систему координат, связанную с кривой. Второй параметр поверхности v совпадает с параметром кривой направляющего объекта spine. Второй параметр поверхности принимает значения на отрезке vmin ≤ v ≤ vmax, который соответствует области определения направляющей кривой. Поверхность может быть периодической по второму параметру, если периодической является направляющая кривая.
В методе PointOn( double u, double v, MbCartPoint3D & s ) радиус-вектор поверхности s описывается векторной функцией
где M(v) — матрица, связанная с направляющей кривой. Заметим, что умножение вектора (curve(u) - origin) на матрицу M(v) выполняется справа. Матрица M(v) имеет вид
где матрица A(v) является матрицей преобразования координат радиуса-вектора точки из подвижной системы координат, связанной с направляющей кривой, в глобальную систему координат. Матрица A(v) зависит от второго параметра поверхности. Строки матрицы A(v) составлены из компонент базисных векторов подвижной системы координат:
где i1(v) — касательный вектор направляющей кривой, i2(v) — вектор, ортогональный i1(v) и связанный с вектором direction направляющего объекта spine, i3(v) — вектор, ортогональный i1(v) и i2(v). Поверхность вращения приведена на рис. 1:
Рис. 1
Касательный вектор i1(v) вычисляется по направляющей кривой. Вектор i2(v) вычисляется из условия плавного изменения при переходе от точки к точке направляющей кривой и ортогональности i1(v). Вектор i3(v) вычисляется как векторное произведение векторов i1(v) и i2(v).