|
|
|||||
популярно о matrix3d
Пытаюсь основательно вникнуть в этот класс, но информации которую можно найти категорически не хватает.
На данный момент я понял, что matrix3d используется только для трансформации объекта, т.е. она реально не отображает какие-либо параметры объекта. Когда объект находится в спокойствии матрица имеет вид: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Тут понятно только то, что диагональные единицы обозначают масштабирование объекта, т.е. текущий масштаб множенный на 1. Получается масштабирование высчитывается умножением, а другие преобразования сложением? Не понятно по другим элементам матрицы. Они, как я понимаю, отвечают за смещения по координатам и вращение объекта. Какие именно элементы за что отвечают? Матрица раскладывается на 4 вектора по строкам или столбцам? Каждый вектор который можно добавить в матрицу отвечает за масштабирование, смещение по координатам и вращение по конкретной оси? Объясните пожалуйста,что к чему или дайте ссылочку на документацию в которой описывается это более подробней,чем даёт адобе. Последний раз редактировалось willis83; 19.11.2011 в 14:28. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Есть точка x, y, z. После применения матрицы получим вектор по такой формуле
x a b c tx x*a + y*b + z*c + 1*tx y x d e f ty = x*d + y*e + z*f + 1*ty z g h i tz x*g + y*h + z*i + 1*tz 1 0 0 0 1 1 Что за точка? Все точки обьекта, к которому применяется трансформация матрицы меняют свои координаты по таким законам, в этом смысл весь собсно) тут вроде как-то обьяснено ещё, подробнее местами http://u3d.agava.ru/doc/theory/matrix_ops.shtml PS: 1к мессаг, опять нет повода не...
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 19.11.2011 в 14:51. |
|
|||||
Не совсем так. Если везде кроме диагонали нули, то по диагонали - масштабирование. А если нет, то могут быть варианты.
Вот тебе для начала ссылка на вики: http://ru.wikipedia.org/wiki/%D0%9C%...BE%D0%B4%D0%B0 Тебя интересуют преобразования "В однородных трёхмерных координатах" (там табличка есть). Резложение матрицы преобразований на векторы не делается по строкам или столбцам. Там разный алгоритм в зависимости от того - что ты хочешь получить. Для этого используют Matrix3D.decompose(), который в качестве параметра принимает одну из констант класса Orientation3D, которая задает - по какому алгоритму раскладывать на три вектора - позицию, масштабирование и поворот. |
Часовой пояс GMT +4, время: 22:59. |
|
« Предыдущая тема | Следующая тема » |
|
|