Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Свойства. Можно получить строки матрицы



Можно получить строки матрицы

Матрица_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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...