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

 

Задание положения

Некоторые команды требуют, чтобы было задано положение объекта, например, точки. Обычно оно задается координатами x-y-z.

В общем случае для определения положения существуют следующие возможности (опции):

Непосредственное задание координат

Основным способом определения положения является непосредственное задание координат x, y и z:

[position] <xval yval zval>

Ниже приведены в качестве примера две команды изображения точки с координатами 1, 2, 3 (ключевое слово position является необязательным и во второй команде опущено):

draw location position 1 2 3
draw location 1 2 3

Повторение предыдущего положения

Приводимая ниже опция воспроизводит последнее пространственное положение, указанное в предыдущей команде:

last

Например, если использовать эту опцию в команде:

draw location last,

вводимой после любой из двух команд, приведенных выше в качестве примера, то будет изображена точка с координатами (1, 2, 3).

Последнее положение не повторяется в другой сессии программы. Если в рамках сессии не было указано никакого пространственного положения, то по умолчанию используется (0, 0, 0).

Указание узла или вершины

Путем указания идентификаторов узлов или вершин можно получить их координаты:

[at] {node | vertex} <ID_list>

Например, команда:

draw location vertex 5

позволяет отобразить пространственное положение вершины 5.

Положение на кривой

Существует несколько способов задания положения на кривой. Они описаны в подразделе Задание положения на кривой.

Положение на поверхности

Для задания положения на поверхности применима следующая группа опций:

[on] surface <ID_list> [close_to | at location {options} | CENTER]

При использовании только части surface <ID_list> определяется положение центра поверхности (ключевое слово CENTER подразумевается по умолчанию). Можно указать какую-либо опцию положения - в этом случае находится соответствующая проекция на поверхность. Например, следующая команда изображает проекцию точки с координатами (5,0,0) на поверхность 1:

draw location on surface 1 location 5 0 0

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

Положение на плоскости

Для задания положения на плоскости может использоваться группа опций следующего общего вида:

[on] plane <options> [close_to | at location {options}]

Дополнительная информация приведена в подразделе Задание плоскости.

Центр дуги

С помощью приводимой ниже опции находится центр дуги окружности:

center curve <ID_list>

Если указанная кривая не является дугой окружности, выдается ошибка.

Экстремальное положение

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

extrema {curve | surface | volume | body | group} <range> [direction] {options} [direction {options}] [direction {options}]

Например, на поверхности может быть размещена вершина в точке с максимальным значением координаты y:

create vertex location extrema surf 1 direction y

Пересечение с лучом

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

fire ray location {options} direction {options} at {body | volume | surface | curve | vertex} <IDs> [maximum hits <val>] [ray radius <val>]

Опции задания положения (location {options}) соответствуют описанным в этом подразделе. Опции (direction {options}) приведены в подразделе Задание направления. Пользователь может задать максимальное искомое число пересечений или касаний луча (maximum hits <val>), для которых определяются координаты. Если это число не задано, находятся все соответствующие точки. При анализе пересечения с кривой следует указать радиус луча (ray radius <val>), в пределах которого рассматриваются пересечения или касания. Если он радиус не указан, используется алгоритм анализа геометрии, принятый по умолчанию.

Положение в промежутке

Может быть задано положение в промежутке между двумя исходными положениями или между определенным положением и объектом:

between {location <options> location <options>} | {location <options> project {curve | surface} <range>} [stop] [fraction <val>]}

При этом возможно указание относительного расстояния для задаваемого положения в промежутке посредством опции fraction <val>. Например, для изображения точки, лежащей посредине между двумя исходными положениями, которые характеризуются координатами (0, 0, 0) и (10, 0, 0), применима команда:

draw location between location 0 0 0 location 10 0 0

Для изображения точки с координатами (2.5, 0, 0), которая, таким образом, лежит на расстоянии, составляющем 25% от общей дистанции между двумя указанными выше исходными положениями, следует ввести команду:

draw location between location 0 0 0 location 10 0 0 fraction .25

Если вторым элементом промежутка является геометрический объект, то первая из команд рассматриваемого примера может приобрести вид:

draw location between location 0 0 0 vertex 2
draw location between location 0 0 0 surface 1

В последнем случае точка (0, 0, 0) проецируется на поверхность 1, а затем изображается промежуточное положение между исходной точкой и ее проекцией.

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

brick x 10
draw location between location bet vert 3 vert 2
location bet vert 8 vert 5

В первом случае это положение находится в промежутке между вершинами 3 и 2, а во втором случае - между вершинами 8 и 5.

Примечание: при задании положения объекта возможно "повернуть" его вокруг какой-либо оси (посредством ключевого слова swing), выполнить "вращение" направления относительно другого направления (rotate), определенной оси вокруг другой оси (revolve) или плоскости вокруг оси (spin). Для каждого типа объектов используется свое ключевое слово. Для разделения таких операций в длинных командах применяется ключевое слово stop. Его следует вставлять после первого задания положения, чтобы указать интерпретатору команд, где начинается и где заканчивается конкретное задание.

Смещенное положение

Для любого положения может быть выполнено смещение к определенным координатам (x, y, z) или на определенное расстояние в заданном направлении:

move [all] {<xval yval zval> | {Dx | X | Dy | Y | Dz | Z} <val> | direction {options} distance <val>}

В одной команде может быть задано произвольное число таких смещений. Например, следующая команда изображает положение, смещенное к координатам (5, 0, 0):

draw location 0 0 0 move 5 0 0

В качестве другого примера далее приводятся команды изображения достигнутого выше положения (5, 0, 0) со смещением его в направлении под углом 45 градусов вверх и вправо на расстояние 10 (все три команды эквивалентны):

draw location 0 0 0 move 5 0 0 move {10*sind(45)} {10*sind(45)} 0
draw location 0 0 0 move 5 0 0 move direction 1 1 0 distance 10
draw location 0 0 0 move 5 0 0 move direction 1 0 0 rotate about 0 0 1 angle 45 dist 10

Повернутое положение

Любое положение может быть "повернуто" вокруг какой-либо оси на определенный угол:

swing [all] [about] axis {options} angle <ang>

Возможности определении оси (axis {options}) изложены в подразделе Задание оси. Как и при смещении, в одной команде может быть задано множество поворотов. Направление вращения определяется по правилу правой руки. Например, для изображения положения с координатами (2.5, 5, 5), повернутого на 30 градусов вокруг оси, заданной кривой 11 (см. Рис. 1), используется команда:

draw location 2.5 5 5 swing about axis curve 11 angle 30

Рис. 1 - Поворот положения вокруг оси на определенный угол

Задание множества положений

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

location {options} location {options}

Например, для создания сплайна, проходящего через точки с координатами (0,0,0), (1,2,3), (4,5,6) и (7,8,9), можно использовать команду, задающую положения этих точек:

create curve spline location 0 0 0 location 1 2 3 location 4 5 6 location 7 8 9

Предварительный просмотр положения

Иногда бывает полезно предварительно просмотреть задаваемое положение, до использования его в команде. Для этого возможно применение следующей команды:

draw location {опции положения}