
- •Базовые классы maxScript Класс Value
- •Операторы
- •Литералы
- •Операторы
- •Свойства
- •Операторы
- •Точка в трехмерном пространстве
- •Литералы
- •Конструкторы
- •Свойства
- •Операторы
- •Литерал
- •Конструкторы
- •Свойства
- •Произвольный поворот
- •Литералы
- •Конструкторы
- •Операторы
- •Свойства
- •Углы Эйлера
- •Операторы
- •Свойства
- •Прямоугольник
- •Литералы
- •Конструкторы
- •Свойства
- •Операторы
Операторы
К углу поворота можно применять следующие операторы. Операции сравнения – равенство и неравенство
Произвольный_поворот_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 повернется в направлении вектора, определенного указанной точкой.