Представление геометрических объектов

Решатель геометрических ограничений работает с определенной формой представления геометрических объектов, проиллюстрированной на рис. 1. Все объекты выражаются через координаты точек, вектора и числа (скаляры).

../../../../_images/S.1.7.1.png

Рис. 1

Приложение может иметь свое представление геометрических объектов, отличное от решателя, однако передача данных о состоянии объектов в решатель и получение обратно результатов вычислений основываются на том, что каждый тип геометрии имеет свое представление:

  • Точка представлена парой декартовых координат <X,Y>.

  • Прямая задается точкой позиции и вектором нормали. Предполагается, что у прямой есть направляющий вектор, который равен вектору нормали повернутому по часовой стрелке на 90 градусов. Другими словами, направляющему вектору с координатами <X,Y> будет соответствовать нормаль с координатами <Y,-X>.

  • Окружность задается точкой центра и радиусом. C3D Solver поддерживает окружности нулевого или положительного радиуса. Имеется возможность допустить или запретить нулевой радиус для окружности в индивидуальном порядке, для чего следует воспользоваться функцией обратного вызова GCE_allow_zero_radius, разрешающей нулевой радиус.

    Замечание: Необходимость опции нулевого радиуса возникает при решении следующих задач:

    • построение параметрического контура с исчезающими и вновь появляющимися дугами окружности;

    • построение параметрических 3D-моделей с переменной топологией на основе 2D-контуров;

    • построение поверхности по траектории переменного сечения.

    Одним из примеров применения опции нулевого радиуса является моделирование поверхности воздуховода переменного сечения, а именно прямоугольное сечение со скруглениями переходит в прямоугольник без скруглений.

  • Эллипс задается точкой центра, радиусами по «главной» (major) и по «минорной» (minor) полуосям и направляющим вектором главной полуоси. Также эллипс параметризуется величиной с периодом от 0 до 2\(\pi\), пробегающей по эллипсу против часовой стрелки, начиная от точки на «главной» полуоси.

  • Параметрическая кривая передается в решатель в виде класса MbCurve. Такая кривая рассматривается как неподвижная, а вычисления связанные с этой кривой, строятся на виртуальных функциях: MbCurve::PointOn, MbCurve::FirstDer и MbCurve::SecondDer, выдающие соответственно точку на кривой по параметру, первую и вторую производную в этой точке. Подробнее о параметрических кривых см. параграф Параметрические кривые общего вида

Замечание: Пока для создания параметрической кривой в системе ограничений потребуется создать экземпляр класса MbCurve, однако в будущем будет реализован альтернативный вариант, основанный на простых функциях, реализуемых самим пользователем. Также пользователь ядра C3D имеет возможность реализовать своего наследника для MbCurve.

  • Сплайн основан на NURBS-представлении, в основе которого лежит список контрольных точек. Более подробно работа со сплайном будет рассмотрена в главе ДВУМЕРНЫЕ СПЛАЙНЫ И ПАРАМЕТРИЧЕСКИЕ КРИВЫЕ

  • Ограниченная кривая представляет собой участок кривой, ограниченный концевыми точками. Задается тройкой: базовая кривая, начальная точка участка, конечная точка участка. C3D Solver поддерживает опцию нулевой длины для ограниченной кривой и отрезка. Для того, чтобы допустить или запретить нулевую длину кривой в индивидуальном порядке необходимо воспользоваться функцией обратного вызова GCE_allow_zero_length. По умолчанию опция нулевой длины отключена.