Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAXScript Part 4.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
197.12 Кб
Скачать

Операторы

К углу поворота можно применять следующие операторы. Операции сравнения – равенство и неравенство

Произвольный_поворот_1 = = Произвольный_поворот_2

Произвольный_поворот_1 ! = Произвольный_поворот_2

и операцию преобразования типа

Произвольный_поворот as Другой_класс

Произвольный поворот может быть преобразован в кватернион, матрицу 4х3 или углы Эейлера.

Свойства

Величину угла поворота в градусах возвращает свойство

Произвольный_поворот.angle

Вектор оси поворота – свойство

Произвольный_поворот.axis

Число полных оборотов вокруг оси

Произвольный_поворот.numrevs

Например, зададим поворот вокруг оси Z на 765 градусов, то есть на два полных оборота и еще 45 градусов

a = angleaxis 765 z_axis

a.angle -- Возвращает 765

a.axis -- Возвращает [0,0,1]

a.numrevs -- Возвращает 2

Методы

Для поворота предусмотрены два метода – копирования

copy Произвольный_поворот

создает копию указанного поворота, и генерация случайного поворота

random Произвольный_поворот_1 Произвольный_поворот_2

возвращает поворот в диапазоне от первого до второго.

Углы Эйлера

Подобно тому, как местоположение любого объекта может быть однозначно определено с помощью трех координат, ориентация тела в пространстве может быть определена с помощью трех углов, называемых углами Эйлера. Для получения заданной углами Эйлера ориентации необходимо последовательно повернуть тело относительно осей системы координат. Следует отметить, что порядок, в котором производятся повороты, важен, и при выполнении поворота, объект сначала поворачивается относительно оси X, затем Y и затем Z.

Литералы

Для углов Эйлера специальных литералов не предусмотрено.

Конструкторы

Углы Эйлера могут быть заданы своими значениями

EulerAngles Число_1 Число_2 Число_3

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

Кватернион as EulerAngles

Произвольный_поворот as EulerAngles

Операторы

Для углов Эйлера определены две операции сравнения

Углы_Эйлера_1 = = Углы Эйлера_2

Углы_Эйлера_1 ! = Углы Эйлера_2

равенство и неравенство, и операция преобразования типа.

Углы_Эйлера as Другой_класс

Углы Эйлера могут быть преобразованы в кватернион, произвольный поворот или матрицу 4х3.

Свойства

Углы Эйлера имеют только три свойства

Углы_Эйлера.x

Углы_Эйлера.y

Углы_Эйлера.z

которые возвращают повороты вокруг соответствующих осей в градусах.

Методы

Для углов Эйлера определен метод копирования

copy Угол_Эйлера

и генерация случайных углов Эйлера

random Угол_Эйлера_1 Угол_Эйлера_2

при этом случайные углы выбираются из диапазона, заданного указанными углами. Прочие методы предназначены для более хитрого перевода углов Эйлера в кватернионы и обратно. Их рассмотрение пока отложим.

Матрица 4х3

Кватернионы, углы Эйлера и повороты позволяют оперировать только с ориентацией объекта, хотя кватернионы еще и масштабируют. Матрица, наряду с этим позволяет и масштабировать, и перемещать объект в пространстве. Благодаря этим свойствам, матрица имеет большое количество конструкторов

Конструкторы

Самым естественным, но не самым простым способом матрица задается полым набором своих элементов.

matrix3 Точка_в_3D_пристранстве_1 Точка_в_3D_пристранстве_2 Точка_в_3D_пристранстве_3 Точка_в_3D_пристранстве_4

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

matrix3 0

или единичная

matrix3 1

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

rotateXMatrix Число

rotateYMatrix Число

rotateZMatrix Число

где число – угол поворота в градусах.

Матрица, переносящая объект в пространстве задается так

transMatrix Точка_в_3D_пространстве

где указанная точка задает смещения по трем координатам. Масштабирование объекта можно осуществить с помощью матрицы заданной таким образом

scaleMatrix Точка_в_3D_пространстве

Здесь точка задает коэффициенты сжатия или расширения по соответствующим осям. Можно задать матрицу для поворота сразу по трем осям

rotateYPRMatrix Число_1 Число_2 Число_3

первое число соответствует повороту объекта относительно оси Y, второе X, третье Z. Буквы YPR – сокращение от английских названий углов Эйлера – yaw, pitch и roll. Имеется еще одна, несколько замысловатая возможность создания матрицы.

matrixFromNormal Точка_в_3D_пространстве

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]