2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение21.10.2009, 20:36 
Аватара пользователя
Коротко говоря, да, это.

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение21.10.2009, 21:12 
Ну вот, если это тогда это не работает.... уже проверял
делал следующее: формулы которые полученны отдельно для каждой оси(через матрицы) реализовывал , но угол не сохраняло , т.е. можно крутить вокгруг отдельно выбранной оси, но стоит сменить ось вращения и предыдущий угол не используется...

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение21.10.2009, 21:25 
Аватара пользователя
Ну зашибись. Триста лет у всех работало, теперь не работает. Давайте разбираться.
ИСН в сообщении #252996 писал(а):
Значит, так.
1. Надо всё время помнить матрицу поворота (трижды три - 9 чисел, стало быть).
2. При каждом нажатии "Повернуть вокруг чего-то" эта матрица умножается на другую матрицу, для каждой оси свою (их тут уже кто-то приводил).
3. Чтобы отобразить, грубо говоря, точку - надо вектор её координат умножить на эту матрицу. (Грубо - потому что Вы отображаете вообще не точки, а линии. Ну, это просто.)

В пункте 1 вместо "матрицу поворота" лучше было сказать "матрицу ориентации". Ладно.
Где у Вас расхождения с этой схемой?

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение21.10.2009, 21:38 
Вот впринципе пример релизованный таким образом вот
http://moc-081.narod.ru/data/3d/45.html
но без матриц , но результат тот же ....

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение21.10.2009, 21:44 
Аватара пользователя
Матрица матрица матрица мать матрица матрица по голове матрица матрица матрица матрица пыль глотать матрица! Я о чём тут три страницы пишу?! О чебурашках, может быть? "Таким образом, но без матриц", my God...

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 01:32 
2ИСН
Да что вы так переживаете. В явном виде выписывать формулы матрично-векторных операций вовсе не грех. Напротив, полезно для производительности (оптимизатор все-равно такие маленькие циклы наверняка раскрутил бы в линейный код, хотя я не знаю как обстоят дела с оптимизацией интерпретации js-скриптов). :) Другое дело, что можно при этом запутаться, как и произошло с mycoding'ом.

2mycoding
Повороты относительно разных осей нужно кодировать разными матрицами (у вас будет 3 матрицы). Потом вы эти матрицы должны перемножить. Результирующую матрицу можно будет применять к вашему вектору.

А ещё послушайте ИСН и реализуйте явную поддержку матриц. Думаю, это займет не более сотни строк кода, готовые формулы у вас все есть.

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 08:43 
Я непойму какую на какую матрицу надо множить чтобы другие углы не потерять, ведь нельзя в одном месте сразу три матрицы записать , не получается просто.

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 08:56 
Аватара пользователя
mycoding в сообщении #253812 писал(а):
Я непойму какую на какую матрицу надо множить чтобы другие углы не потерять

На все три. Последовательно.

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 09:59 
Аватара пользователя
Не надо на три. Надо помнить глобальную матрицу ориентации. И при каждом повороте множить её на матрицу поворота (на одну). Вы же в каждый момент нажимаете мышкой максимум на одну кнопку? Ну вот.

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 16:56 
ИСН в сообщении #253818 писал(а):
Не надо на три. Надо помнить глобальную матрицу ориентации. И при каждом повороте множить её на матрицу поворота (на одну). Вы же в каждый момент нажимаете мышкой максимум на одну кнопку? Ну вот.

А как выглядет глобальная матрица отриентации?
В google не нашёл.

-- Чт окт 22, 2009 18:07:20 --

Просто напишите для данной ситуации что на что множить и код матриц, пожалуйста.
Вот точка, вращаем сначала относительно оси x, затем относително оси y, затем оси z.

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 17:22 
2mycoding
Цитата:
Я непойму какую на какую матрицу надо множить чтобы другие углы не потерять

Когда вам нужно повернуть сцену вокруг некоторой оси, вы создаете соответствующую матрицу поворота для нужного угла и умножаете эту матрицу на, как выразился ИСН, глобальную матрицу, которая изначально единична. Таким образом вы накапливаете повороты. Вектора поворачиваются применением именно этой глобальной матрицы.

А можно поступить немного по-другому и накапливать повороты вокруг осей (в виде чисел, а не матриц). При рендеринге вы по этим углам строите три матрицы поворота, и, как и говорил Xaositect, последовательно применяете их к векторам (последовательное применение эквивалентно применению их матричного произведения).

Цитата:
Просто напишите для данной ситуации что на что множить и код матриц, пожалуйста.

См. начало темы.

P.S.: Бывает полезно выписать формулы сначала на обычной бумажке и все обдумать, вплоть до просветления. Может быть я слишком старомоден, но бумажки иногда помогают. :)

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 17:24 
Аватара пользователя
Dude, where's my matrix? :lol: :twisted:

-- Чт, 2009-10-22, 18:26 --

Circiter в первом абзаце говорит всё правильно. Дальше ("А можно поступить немного по-другому...") не читайте. Нельзя по-другому.
Circiter, какое нафиг накопление поворотов вокруг осей? Повороты ведь не коммутируют, если чо.

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 17:50 
2ИСН
Цитата:
какое нафиг накопление поворотов вокруг осей? Повороты ведь не коммутируют, если чо

Еще как коммутируют! Если трансляции не существует. :) Не, ну действительно, углы аддитивны -- повернули на тридцать градусов, потом на сорок, в результате получился поворот на семьдесят; он же получится если сначала повернуть на сорок, и только потом на тридцать.

Если добавить трансляцию, тогда, да. Сдвинуть на единицу и повернуть на пи не есть повернуть на пи и сдвинуть на единицу. В общем случае слово накапливать нужно как минимум в кавычки брать. :) Но это mycoding и так понимает (надеюсь)!

Цитата:
Нельзя по-другому.

Кватернионы!

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 17:55 
Аватара пользователя
У нас, на минуточку, трёхмерное пространство уже.
А про кватернионы даже не начинайте. Я уже вон сколько не могу убедить клиента матрицы имплементировать. А их ведь во всех вузах проходят, в отличие от.

 
 
 
 Re: Приглашаю помочь и заняться интересным 2d 3d web построение
Сообщение22.10.2009, 18:04 
Circiter в сообщении #253890 писал(а):


P.S.: Бывает полезно выписать формулы сначала на обычной бумажке и все обдумать, вплоть до просветления. Может быть я слишком старомоден, но бумажки иногда помогают. :)

Я всю переписку распичатал и уже не первый день перечитываю...
Так что надо сделать все три матрицы перемножить тогда получится вот это Изображение
Но здесь нет самого вектора, и что потом с этим всё равно делать?

 
 
 [ Сообщений: 91 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group