Перейти к статье

 

Ориентация геометрических объектов

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

Для каждой поверхности устанавливается передняя (или верхняя) сторона. Нормаль к поверхности указывает направление к передней поверхности. Грани сетки, сгенерированной на поверхности, имеют такое же направление, как и поверхность.

Каждая кривая характеризуется направлением, начальной и конечной точками. Касательный вектор к кривой направлен от начальной к конечной точке. Вектора сеток, создаваемых на кривых, направлены так же, как эти кривые.

Чтобы характеризовать ориентацию более сложных геометрических объектов, используются связанные с ними менее сложные объекты, имеющие определенное направление (прямое или обратное). Например, если нормаль к поверхности, ограничивающей какой-либо объем, направлена вовне объема, считается, что эта поверхность прямо сонаправлена с объемом. Если нормаль направлена внутрь объема, то имеет место обратная направленность. Аналогичным образом, для поверхности рассматривается набор ограничивающих ее кривых, которые образуют петлю с направлением по часовой стрелке или против нее относительно нормали к поверхности.

Изменение ориентации

По умолчанию поверхность ориентирована так, что нормаль к ней направлена вовне объема, который сформирован с участием этой поверхности. Для подвергнутых слиянию (принадлежащих более чем одному объему) или свободных (не принадлежащих никакому объему) поверхностей понятие ориентации не имеет смысла. Ориентация поверхности определяет ориентацию всех элементов, созданных на этой поверхности. Для изменения направления нормали к поверхности используются следующие команды:

surface <ID_range> normal opposite

surface <ID_range> normal volume <ID>

Использование параметра opposite изменяет ориентацию поверхности на противоположную. Ориентация поверхности, полученной в результате слияния, определяется указанием идентификатора объема, вовне которого будет направлена нормаль к этой поверхности (volume <ID>).

Для инвертирования нормалей всех поверхностей, ограничивающих объем ("выворачивания наизнанку"), используется следующая команда:

reverse {body | volume} <body_ID_range>

Изменение касательного вектора к кривой производится с помощью следующих команд:

curve <ID_range> tangent opposite

curve <ID_range> tangent {forward | reverse} surface <ID>

curve <ID_range> tangent {start | end} vertex <ID>

Первая команда изменяет направление касательного вектора к кривой на противоположное. Вторая команда использует направление к определенной поверхности (forward) или от нее (reverse) для определения направления касательного вектора. Третья команда позволяет поместить начало (start) или конец (end) касательного вектора в определенную вершину. При использовании двух последних команд кривая должна граничить с указанной поверхностью или вершиной.

Приводимая ниже команда применима для изменения ориентации одновременно нескольких кривых:

curve <ID_range> orient sense {direction (options) | location (options) | vertex <ID_range>} [opposite]

При помощи опции direction кривая может быть ориентирована вдоль определенного направления. При использовании опции location ближайшая к указанному месту вершина становится стартовой в ориентированной кривой. За начальную точку ориентации кривой также может быть выбрана вершина, указанная в диапазоне vertex <ID_range>. Ориентацию кривой возможно инвертировать с помощью параметра opposite.

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