![]() |
Быстрое вращение в 3Д
Пытался найти оптимальный способ поворота точек в пространстве, несколько раз почитал статью из ZX Power #3,#4 (можно по ссылке http://zxdn.narod.ru/coding/zpw3gf3d.txt), но так до конца и не въехал.
внимание вопрос: Может кто попроще объяснить алгоритм? |
В смысле просто алгоритм поворота точки вокруг другой на определенный градус или именно конкретно оптимизированный?
|
Интересует алгоритм работы
http://zxdn.narod.ru/coding/zpw3gf3d.txt Т.е. что хранится в таблица, какие таблицы, когда какие вычисления и т.п. Естественно интересует конкретно оптимизированный вокруг начала координат) |
В этих исходниках и идеях есть только расчет экранных координат по известным координатам ортов. Вращения ортов там нет.
Судя по тому, сколько радости доставило автору статьи его открытие, еще больше его удивит, что матрица преобразования собственно и составляется из координат ортов, что при раскрытии и дает те же формулы для экранных координат. В этом смысле смущают, во-первых, сравнение формул для вычисления экранных координат с вращением ортов (две формулы с синусами и косинусами в начале статьи) с формулами для расчета того же по уже повернутым ортам и, во-вторых, противопоставление умножения в этих формулах ("каким бы быстрым оно ни было") тому же умножению в таблицах. Далее, смущают упоминания ELITE. Опять же, во-первых, в ELITE считается несколько объектов, каждый со своими углами поворота, что по предложенному методу будет означать вычисление таблицы умножения для каждого объекта. Во-вторых, в ELITE дапазоны значений координат объектов куда как шире 64 делений и используются "настоящие" 8- и 16-разрядные умножения. В-третьих, для сравнения, в ELITE умножение считается по таблицам квадратов, что с учетом необходимости генерирования таблиц умножения по методу автора статьи, вряд ли медленнее. |
Хорошо, тогда вопрос номер 2:
Кто нито занимался оптимизацией поворота только по двум осям Ох, Оу (в 99% случаев с эффектами заглаза) на основе таблиц. Самый простой вариант конечно допустим поворот по Ох берем из таблицы, остальное честно считаем. Какие нито сферические или свои системы координат ктонито использовал (Пусть даже для нечестного с математической точки зрения вращения)? |
Quote:
|
Вот почитай: Поворот 3D вектора за шесть умножений, может поможет))
|
Quote:
Подумаю на досуге, хотя уже сделал тупо на основе таблиц coord*sin(alpha), coord*cos(alpha) и таблицы проецирования, без оптимизации порядка 215 тактов что вполне приемлемо (предыдущий вариант был 110, но пока не знаю как учет эллипса скажется) |
Главное как решишь вопрос поделись сорцом, уверен пригодится не только мне.
Сам в 3D вообще не шарю, а тут еще оптимизация... Добавлено через 1 минуту Странно что CJ молчит. Не все же у них анимация? ;) |
Ну код для ротатора на основе таблиц произведений координат на sin/cos углов я думаю не сложно написать.
Вот например: :) PHP Code:
|
| All times are GMT +4. The time now is 21:01. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.