![]() |
вращение в 3-мерном пространстве
Вложений: 1
У меня проблемка с вращением куба. При rotationY кратному 90 rotationX начинает вести себя как rotationZ.
|
так и должно быть: rotationX/Y/Z это углы в собственной системе координат объекта, rotationX им же и остается для самого куба, но поскольку он сам повернут, то в родителе это выглядит иначе..
поворот относительно координат родителя можно реализовать за счет редактирования transform.matrix3D, типа такого Код AS3:
|
Честно говоря, не совсем понял о чем речь.
Почему система координат изменяется только для rotationX и только при изменении rotationY? Все остальные вариациии ни к чему не приводят.... Как вышеописанную ф-ю применить для поворота куба? |
>>Почему система координат изменяется только для rotationX и только при изменении rotationY?
связка только rotationX - только при изменении rotationY - это скорее всего твой частный случай: система координат по-любому вращается вместе с объектом, со всеми вытекающими.., присмотрись поплотнее - нет никакой исключительности в rotationX-rotationY >>Как вышеописанную ф-ю применить для поворота куба? применить те же самые манипуляции к transform.matrix3D этого куба мой пример 'от первого лица', т.е. как бы метод самого куба глянь http://silin.su/#AS3/zod , там есть примеров всякого вращения |
transform.matrix3D==null
|
все правильно, transform.matrix3D не определена до тех пор пока не задашь хоть какое из '3D-шных' свойств,
z=0, например, достаточно |
раз уж тут обсуждается 3D вращение, то подскажите, плиз, похожий ли это пример: http://www.shimanoservicecentre.co.uk/
я имею ввиду на куб, который в теме обсуждался. и может есть разбор где-то у кого-то в блоге как делаются подобные штуки, а то с моим опытом не знаю как к ней подступиться |
не, непохожий..
в этом примере 3Д ни причем вовсе подступиться очень просто: позиция и масштаб иконок - функция некоторого угла, зависящего от положения мыши, все тривиально считается через sin-cos |
spasibo, сiлiн))
|
Silin, спасибо, смотрю примеры
Добавлено через 2 часа 7 минут Не смог разобраться. Твой пример, silin, мне кажется о центре вращения, но не об ориентации осей, нет? Почему у тебя это работает ?)) вот, что делаю я: Код AS3:
оок. пробую recompose с объявлением вращения - те же яйца. Вопрос - как быть, и что делать? Все что описано до этого меня не уразумило, увы. |
>>Так вот, оси всей конструкции смещаются вместе с ней же.
поэтому перед appendRotation двигаем объект (appendTranslation) в начало координат родителя и ставим на место после вращения (см. мой первый пост) что делаешь ты я не понял |
у меня есть кучка векторов (читай 3д-точек), они, как бы, по умолчанию в начале координат. Я делаю матрицу преобразований и применяю последовательно к каждому вектору.
И потом, от того, что ты передвинешь объект, положение осей не должно же меняться? такое впечатление, что твоя история про пивот, нет? |
моя история про pivot, все верно
про что твоя, я так и не понял.. т.е. ты получил новые координаты каждой точки (m.transformVector( points3D[i]);), а затем зачем-то взял их и развел в соответствии с какими-то еще соображениями (parts[i].x = a.x*111+222; ), все развалилось.. если задача только вращать весь массив, то не проще будет не обнулять матрицу, а добавлять (appendRotation) нужные углы и из текущей получать новые координаты точек (m.transformVector) Добавлено через 6 минут да, еще есть смысл пощупать разницу prependRotation vs appendRotation.. я не возьмусь сейчас ее объяснять, потому как сам не вполне въехал, сори |
моя история про то, что после одного вращения вместе с объектом поворачиваются его оси (не меняя позиции), а следовательно следущее вращение(которое предпологается сделать по мировым осям находящимся в той же точке) уже не будут ожидаемыми.
словом ты прав, задача - вращать массив векторов. так как ведет куб в твоем примере в simple в 3D - то что нужно. на эту часть не смотри Код AS3:
добавлять можно, но во-первых, это не удобно для меня (хочу чтобы массив "следил" за мышью - усложняется вычесления сильно), а во-вторых, это уже у меня с ними личное )) |
| Часовой пояс GMT +4, время: 17:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.