Опция выравнивания GCM_alignment
Тип ограничения (GCM_c_type) является основной характеристикой ограничения, достаточной что бы сказать удовлетворяет ли положение объектов данному типу ограничения или нет, однако участие в ограничении ориентируемых объектов, таких, как плоскость или прямая, допускают разные исполнения одного и того же типа GCM_c_type. Например, если взять две грани тела, лежащие в одной плоскости, мы можем сказать, что они удовлетворяют ограничению совпадения (GCM_COINCIDENT), однако это утверждение допускает два варианта совпадения, когда нормальные вектора граней смотрят в одну сторону или направлены в разные стороны. На рисунках 1, 2 показаны альтернативные варианты выравнивания двух тел с помощью ограничения GCM_COINCIDENT, связывающего пару цветных граней:
{width=»50%»}
Рис. 1
{width=»50%»}
Рис. 2
По умолчанию решатель выполняет совпадение, оставляя ориентацию геометрических объектов как можно ближе к исходному состоянию (см. Начальное приближение). Поэтому выбор из двух вариантов выполняется автоматически по принципу минимального поворота. Но если требуется, можно заказать определенную взаимную ориентацию векторов. Для этого в методах GCM_AddBinConstraint, GCM_AddDistance, GCM_AddConstraint предусмотрена опция выравнивания GCM_alignment, значения которой приведены в таблице.
GCM_alignment дополняет тип ограничения GCM_c_type условием, исключающим всякую неоднозначность при выборе решения для ограничения. Значения GCM_COORIENTED и GCM_OPPOSITE действуют на такие ограничения, которые подразумевают параллельность векторов Z своих аргументов. Например перпендикулярность плоскости и прямой подразумевают параллельность нормального вектора плоскости и прямой. Или пример совпадения двух плоскостей, который делает нормали граней cонаправленными (Рис. 1) либо противонаправленными (Рис. 2). Другие значения опции выравнивания действуют в более сложных случаях, совместно с такими ограничениями, как касание, линейные или угловые паттерны, где выбирать приходится из более чем 2 решений. Например касание двух тороидов по окружности предусматривает восемь решений, которые кроме сонаправленности векторов, различаются по стороне касания относительно осей Z, размещению одного тора снаружи или внутри другого.
Таблица 1 - Значения опции выравнивания GCM_alignment.
Имя |
Значение |
|---|---|
GCM_NO_ALIGNMENT |
Неопределенная ориентации. Значение GCM_NO_ALIGNMENT применяется в тех случаях, когда ограничение не чувствительно к ориентации геометрических объектов (например, совпадение двух точек) или ориентацию объектов требуется оставить свободной. Например, в угловых или линейных паттернах, если указать GCM_NO_ALIGNMENT, то ориентация «образца» никак не будет влиять на «экземпляр копирования». |
GCM_CLOSEST |
Решение выбирается автоматически, как можно ближе к стартовому положению геометрических объектов. |
GCM_COORIENTED |
Задает сонаправленность векторов Z аргументов ограничения. |
GCM_OPPOSITE |
Задает противонаправленность векторов Z аргументов ограничения. |
GCM_ALIGNED_0 GCM_ALIGNED_1 GCM_ALIGNED_2 GCM_ALIGNED_3 |
Варианты решения ограничений с сонаправленными векторами Z аргументов ограничения (подварианты GCM_COORIENTED). |
GCM_REVERSE_0 GCM_REVERSE_1 GCM_REVERSE_2 GCM_REVERSE_3 |
Варианты решения ограничений с противонаправленными векторами Z аргументов ограничения (подварианты GCM_OPPOSITE). |
GCM_ALIGNED |
Создает одинаковую ориентацию ЛСК объектов (сонаправленность по „Z“ и по „X“) для таких ограничений, как GCM_SYMMETRIC и GCM. Т.е. ограничения симметрия, угловые и линейные паттерны с данной опцией будут ориентировать «экземпляр копирования» также, как и «образец» при том, что их позиционирование будет подчиняться соответствующим законам копирования. |
GCM_ROTATED |
Действует для ограничения GCM_PATTERNED в случае углового паттерна GCM_ANGULAR_PATTERN. Означает, что ЛСК «образца копирования» и «экземпляра» полностью совмещаются поворотом вокруг оси паттерна. |
GCM_ALIGN_WITH_AXIAL_GEOM |
Применяется в качестве дополнительной опции угловых и линейных петтернов в функциях GCM_AddLinearPattern, GCM_AddAngularPattern. |
Подводя итог, можно сказать, что GCM_alignment является дополнительным условием в тех ситуациях, когда GCM_c_type допускает не единственный вариант исполнения ограничения.