Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Можно получить строки матрицы
Матрица_3х4. row1
Матрица_3х4. row2
Матрица_3х4. row3
Матрица_3х4. row4
Поскольку четвертая строка является частью, отвечающей за смещение объекта, то последнее свойство может записываться и так
Матрица_3х4. translation
Следующие свойства матрицы могут только читаться
Матрица_3х4. rotationpart
возвращает кватернион, определяющий тот же поворот, что и матрица.
Матрица_3х4. translationpart
возвращает точку в трехмерном пространстве, которая определяет тот же сдвиг, что и матрица.
Матрица_3х4. scalerotationpart
возвращает кватернион, определяющий поворот и масштабирование объекта.
Матрица_3х4. scalepart
возвращает точку в трехмерном пространстве, определяющую масштабирование объекта.
Матрица_3х4. determinantsign
возвращает знак определителя матрицы.
Методы
Функция копирования
copy Матрица_3х4
создает копию указанной матрицы. Чтобы проверить, является ли матрица единичной, можно использовать функцию
isIdentity Матрица_3х4
Она возвращает true, только если матрица единична. Функция
inverse Матрица_3х4
возвращает матрицу, обратную заданной. При этом заданная матрица не изменяется.
Иногда возникает необходимость перевести преобразования, заданные матрицей в другую систему координат. В этом случае используется функция
xformMat Матрица_3х4_1 Матрица_3х4_2
Первая матрица задает преобразования, вторая – систему координат, в которую они будут пересчитываться. Результатом будет матрица преобразований в новой системе координат.
Все описанные далее методы для работы с матрицами 4х3 являются картированными, то есть могут работать как с одиночной матрицей, так и с массивами матриц. Функция
identity Матрица_3х4
делает заданную матрицу единичной, а
zero Матрица_3х4
нулевой. Сделать все оси системы координат, определяемой матрицей, взаимно перпендикулярными, можно с помощью функции
orthogonalize Матрица_3х4
Эта функция соответствующим образом изменяет заданную матрицу. Чтобы добавить к матрице преобразование перемещения, применяется функция
translate Матрица_3х4 Точка_в_3D_пространстве
Для добавления к исходной матрице преобразования поворота можно использовать функции
rotateX Матрица_3х4 Число
rotateY Матрица_3х4 Число
rotateZ Матрица_3х4 Число
Они добавляют к заданной матрице повороты вокруг соответствующей оси на угол, заданный вторым параметром. Величина угла задается в градусах. Поворот, заданный кватернионом добавляется к матрице с помощью функции
rotate Матрица_3х4 Кватернион
Преобразование масштабирования добавляется к матрице с помощью функции
scale Матрица_3х4 Точка_в_3D_пространстве Логическое_значение
Точка в трехмерном пространстве задает масштабирование по соответствующим осям. Третий параметр функции scale необязателен и введен после обнаружения ошибки в предыдущих версиях 3ds max. Дело в том, что функция scale применяла преобразование масштабирования только к первым трем строкам матрицы. Для сохранения совместимости с ранее разработанными скриптами был введен третий параметр. Если он не указан, или равен false, то масштабирование к четвертой строке матрицы, как и ранее, не применяется. При значении третьего параметра true, четвертая строка матрицы масштабируется.
Шесть описанных выше функций добавляют преобразование к преобразованиям, заданным матрицей. Рассмотрим пример
m = rotateXMatrix 45
translate m [ 1, 1, 1 ]
Первая строка создает матрицу поворота, вторая добавляет к ней сдвиг. В результате работы данного скрипта, матрица m будет содержать следующие преобразования. Сначала поворот относительно оси X, а затем сдвиг по всем осям на единицу. Ну а если перед Вами стоит обратная задача – добавить к некому преобразованию, преобразования, содержащиеся в матрице? В этом случае можно применять следующие функции, аналогичные приведенным.
preTranslate Матрица_3х4 Точка_в 3D_пространстве
preRotateX Матрица_3х4 Число
preRotateY Матрица_3х4 Число
preRotateZ Матрица_3х4 Число
preRotate Матрица_3х4 Кватернион
preScale Матрица_3х4 Точка_в_3D_пространстве Логическое_значение
Все они действуют точно так же, как и описанные ранее, за следующим исключением. Если переписать предыдущий пример так
m = rotateXMatrix 45
preTranslate m [ 1, 1, 1 ]
то в результате получится матрица m, которая вначале сдвигает объект на единицу по всем осям, а затем поворачивает его относительно оси X на 45 градусов.
Дата публикования: 2015-01-13; Прочитано: 186 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!