Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Преобразование 3D поворта (http://www.flasher.ru/forum/showthread.php?t=90127)

miramax 02.01.2007 19:28

Преобразование 3D поворта
 
Как поворот вокруг произвольной оси разложить на последовательные повороты по осям Ох, Оу, Oz?
Или как абсолютные повороты по осям Ох, Оу, Оz представить в виде серии последовательных поворотов.
Хотелось бы почитать теорию, не могу сформулировать правильный запрос гуглу .....
То что нахожу - базовые понятия-отрывки.

etc 02.01.2007 19:35

http://etcs.ru/portfolio/bricks.fla
Там шесть строк. Ничего не подскажу, потому что имел дело с этим очень давно и сейчас ничего не помню.

miramax 02.01.2007 19:40

Это как раз последовательный поворот по трём осям, последовательное преобразование по трём матрицам, это мы умеем :):
Код:

//цитата исходника __etc
y = o.y0*Math.cos(angleZ)+o.x0*Math.sin(angleZ);
x = o.x0*Math.cos(angleZ)-o.y0*Math.sin(angleZ);
// y rotate
z = o.z0*Math.cos(angleY)-x*Math.sin(angleY);
x = x*Math.cos(angleY)+o.z0*Math.sin(angleY);
// x rotate
oy = y;
y = y*Math.cos(angleX)-z*Math.sin(angleX);
z = oy*Math.sin(angleX)+z*Math.cos(angleX);

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

etc 02.01.2007 19:45

Это тебе надо сделать преобразование координатных плоскостей, в смысле повернуть сами оси. Только, я мозг напрячь не могу, новый год вроде недавно был %)

miramax 02.01.2007 19:52

Цитата:

Сообщение от __etc
Это тебе надо сделать преобразование координатных плоскостей, в смысле повернуть сами оси. Только, я мозг напрячь не могу, новый год вроде недавно был %)

Ну да, так можно сделать поворот вокруг произвольно оси....
Но как меня это приблизит к разложению поворота на 3 составляющих ?

miramax 02.01.2007 20:03

Серия последовательных поворотов точки зависит от порядка применения поворотв. Допустим
поворот по Ox = 0.5;
поворот по Оу = 0,2;
поворот по Oz = 0.6;
Если будем поворачивать одну точку последовательно по осям Ох, Оу, Оz, а потом попробуем повернуть другую точку на эти же углы, но в последовательности Оz, Оу, Ох - то получим точки в разных местах.
Т.е. здесь всё зависти от порядка применения поворотов. Я хочу от этого порядка избавиться, вводя абсолютные значения поворотов относительно осей Ох, Оу, Oz.

etc 02.01.2007 21:31

Мммм, надо тебя направить в сторону матричных преобразований поворота осей XYZ.
И ещё, как ты представляешь себе ось, заданную в пространстве не с помощью трех углов? XYZ? Если да, то синусы и косинусы рулят :))

valvika 03.01.2007 01:36

Цитата:

Сообщение от miramax
... от этого порядка избавиться, вводя абсолютные значения поворотов относительно осей Ох, Оу, Oz.

На сегодняшний день теория утверждает, что если АХ(.),АУ(.),АЗ(.) - матрицы поворотов вокруг координатных осей, то любой поворот можно представить в виде А=АХ(ф1)*АУ(ф2)*АЗ(ф3) и данное уравнение имеет шесть решений ( на интервале от 0 до 2П ). При другом порядке поворотов вновь 6 решений и т.д.
Более того любой поворот можно разложить на повороты вокруг только двух любых осей,
например А=АЗ(е1)*АУ(е2)*АЗ(е3) , где е1,е2,е3 так называемые углы Эйлера.
===
По видимому задача нахождения "абсолютных поворотов" неразрешима.

BigDan 14.01.2007 00:22

Думаю тебе это поможет. Тоже с этим столкнулся, и вот кое-что нашел.


Часовой пояс GMT +4, время: 15:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.