| |
| Алгоритмы общего назначения обсуждаем алгоритмы напрямую не связанные с ЖВ |
27.06.2008, 12:11
|
#1
|
|
Администратор
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
|
повороты систем координат
Помогите если у кого под рукой справочник по математике есть.
Задача такова:
Есть 3 системы координат 1(XYZ), 2(XYZ), 3(XYZ).
Система 2(XYZ) повёрнута относительно 1(XYZ) на углы альфа1, бета1 и гамма1.
Система 3(XYZ) повёрнута относительно 2(XYZ) на углы альфа2, бета2 и гамма2=0.
Необходимо найти углы альфа3, бета3 и гамма3, на которые повёрнута система 3(XYZ) относительно 1(XYZ).
Справочника нет под рукой, а в голове запор мыслей 
__________________
Всегда на связи
|
|
|
27.06.2008, 15:17
|
#2
|
|
Местный
Регистрация: 20.05.2008
Адрес: Москва
Сообщений: 105
|
Ответ: повороты систем координат
Зачем тебе углы? Все реализуется через матрицы поворота.
См. мой исходник. Там есть операции со всеми матрицами.
Если очень нужны углы, то рассчитай обратную матрицу преобразования М1->M3, а затем вычисли арккосинусы ячеек А12,А13,А23
|
|
|
28.06.2008, 06:23
|
#3
|
|
Администратор
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
|
Ответ: повороты систем координат
Цитата:
Сообщение от Железный
Зачем тебе углы? Все реализуется через матрицы поворота.
См. мой исходник. Там есть операции со всеми матрицами.
Если очень нужны углы, то рассчитай обратную матрицу преобразования М1->M3, а затем вычисли арккосинусы ячеек А12,А13,А23
|
За исходник спасибо. А углы мне нужны вот для чего.
есть у меня два массива: в одном координаты исходные, во втором изменённые в режиме просмотра 3Д. В режиме просмотра 3Д пользователь может повернуть изображение вокруг ординат X и Y.
после чего производится пересчёт еоординат во втором массиве и вывод на экран изменённого изображения. Однако вся фигня в том, что координаты у меня - целочисленные, соответственно после пересчёта необходимо полученные координаты округлить. В результате накапливается жуткая погрешность и точки начинают "гулять".
Хочу переделать на следующее:
пересчитывать не массив2 на поворот вокруг XY, а массив1 на поворот вокруг XYZ. Тобиш получив углы поворота массива2 пересчитываем их на углы поворота массива1.
В результате округление будет только одно и не будет накапливатся погрешность с увеличением количествов поворотов.
кстате при размере массива в 10 миллионов поворот происходит с задержкой в полсекунды.
__________________
Всегда на связи
|
|
|
28.06.2008, 13:58
|
#4
|
|
Местный
Регистрация: 20.05.2008
Адрес: Москва
Сообщений: 105
|
Ответ: повороты систем координат
Неправильно. В трех углах не сохранишь многоэтапную эволюцию, тем более, что есть еще и трансляции (перемещение).
Проблема накопления ошибки есть и для дробных чисел.
Обычно она решается нормированием.
Раз в сколько-то тактов запускаешь процедуру нормировки всего массива матриц (вернее, тензоров). Нормировка одной матрицы выполняется делением всех векторов базиса на множитель (единица/sqr(x^2+y^2+z^2)).
Решение не идеальное, но явных прыжков точек избежишь.
Лучше вообще взять "псевдодробные числа" типа int64 - 32 бита на целую часть + 32 бита на десятичную дробь. Получается точность - 10Е-9 - девять знаков после запятой. На десяток поворотов без нормировки хватит.
|
|
|
29.06.2008, 05:40
|
#5
|
|
Администратор
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
|
Ответ: повороты систем координат
Цитата:
Сообщение от Железный
Неправильно. В трех углах не сохранишь многоэтапную эволюцию, тем более, что есть еще и трансляции (перемещение).
Проблема накопления ошибки есть и для дробных чисел.
Обычно она решается нормированием.
Раз в сколько-то тактов запускаешь процедуру нормировки всего массива матриц (вернее, тензоров). Нормировка одной матрицы выполняется делением всех векторов базиса на множитель (единица/sqr(x^2+y^2+z^2)).
Решение не идеальное, но явных прыжков точек избежишь.
Лучше вообще взять "псевдодробные числа" типа int64 - 32 бита на целую часть + 32 бита на десятичную дробь. Получается точность - 10Е-9 - девять знаков после запятой. На десяток поворотов без нормировки хватит.
|
Ответы твои умны и многословны, но вот не всегда по теме.
Что неправильно то?
я не собираюсь запоминать все этапы поворотов - только результирующие углы.
Нормировку использовать не планирую. А зачем? если я планирую только одно преобразование.
С вещественными числами с фиксированной точкой работать не планирую.
А вот по основному вопросу ответа нет(
__________________
Всегда на связи
|
|
|
29.06.2008, 13:07
|
#6
|
|
Местный
Регистрация: 20.05.2008
Адрес: MSK
Сообщений: 187
|
Ответ: повороты систем координат
Алекс, гугли лучче кватернионы
они как раз для поворотов
просто домножаешь текущий кватернион на кватернион, состоящий из оси вращения и угла, - всё
потом результирующая матрица вида выводится из текущего кватерниона (матрица 3х3) + надо добавить отдельно нижнюю строчку из вектора транслейтов
вот когда-то приводил код на ЕГ
http://www.elite-games.ru/conference...374398#1374398
__________________
This is what you get...
|
|
|
30.06.2008, 08:58
|
#7
|
|
Администратор
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
|
Ответ: повороты систем координат
Цитата:
Сообщение от Sh.Tac.
Алекс, гугли лучче кватернионы
они как раз для поворотов
просто домножаешь текущий кватернион на кватернион, состоящий из оси вращения и угла, - всё
потом результирующая матрица вида выводится из текущего кватерниона (матрица 3х3) + надо добавить отдельно нижнюю строчку из вектора транслейтов
вот когда-то приводил код на ЕГ
http://www.elite-games.ru/conference...374398#1374398
|
Чёт я какой то тупой стал. не понял я метода кватерниона.
Ладно, хрен с ней , с этой погрешностью. Потом разберусь.
__________________
Всегда на связи
|
|
|
30.06.2008, 15:16
|
#8
|
|
Пользователь
Регистрация: 24.06.2008
Сообщений: 64
|
Ответ: повороты систем координат
Alex, кватернион - это 4-мерный вектор, который фактически представляет собой "угол поворота" или "ориентацию". В принципе 3х3 матрицы поворота и кватернионы взаимнооднозначны, просто поворотные матрицы постоянно пытаются "выйти" из своего пространства (стать "неповоротными"), а кватернионы - нет. Там тоже надо нормализовать, но последствия ненормализованности не так критичны.
Есть простые формулы преобразования между кватерниономи и эйлеровыми углами или матрицами поворота.
Как и с матрицами, поворот осуществляется простым перемножением кватерниона ориентации на кватернион поворота.
|
|
|
11.03.2009, 05:58
|
#9
|
|
Администратор
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
|
Ответ: повороты систем координат
Цитата:
Бурное и чрезвычайно плодотворное развитие комплексного анализа в XIX веке стимулировало у математиков интерес к следующей задаче: найти новый вид чисел, аналогичный по свойствам комплексным, но содержащий не одну, а две мнимые единицы. Предполагалось, что такая модель будет полезна при решении пространственных задач математической физики. Однако работа в этом направлении оказалась безуспешной.
Новый вид чисел был обнаружен ирландским математиком Уильямом Гамильтоном в 1843 году, и он содержал не две, как ожидалось, а три мнимые единицы. Гамильтон назвал эти числа кватернионами. Позднее Фробениус строго доказал (1877), что расширить комплексное поле до поля или тела с двумя мнимыми единицами невозможно.
Несмотря на необычные свойства новых чисел (их некоммутативность), эта модель довольно быстро принесла практическую пользу. Максвелл использовал компактную кватернионную запись для формулировки своих уравнений электромагнитного поля.[7] Позднее на основе алгебры кватернионов был создан трёхмерный векторный анализ (Гиббс, Хевисайд).
|
Мда... эт конечно круто что уже полторачста столетия такое придумали. Только я и с комплексными то числами кой-как подружился, а уж с тремя "мнимыми"  .....
А вообще то надо быть проще. Мы же вектор движения молотка и прикладываемую силу не расчитываем при забивании гвоздя
Мне ж особая точность не нужна, это в модуле визуализации для поворотов.
Пойду простым и тупым путём.
__________________
Всегда на связи
|
|
|
19.09.2009, 19:19
|
#10
|
|
Местный
Регистрация: 20.05.2008
Адрес: Санкт-Петербург
Сообщений: 405
|
Ответ: повороты систем координат
Bormoglot:
Цитата:
О кажись ответ на мой вопрос лежит в теме кватернионов и их сферической линейной интерполяции, пойду их курить...
А может и не в этой плоскости лежит!
Вот тут посчитал на досуге если всетаки расматривать поворот как перемещение мат. точек и взять как советуют в некоторой литературе минимальной поворот-перемещение вокруг оси в 1/72 оборота (то есть 5 градусов) то при 30 кадрах в секунду "угловые скорости" не должны превышать 151 град/сек или соответственно 0.42 оборота/сек по каждой из осей. Маловато будет...
|
Хм... Енто где ж такое советуют, интересно знать... Может быть они имеют в виду поворот корпуса человека при стрельбе, а не вращения всяких там кораблей-самолётов?
P.S. Глянь пост №6 в этой ветке. Там ST ссылочку даёт на свой код... Может пригодиться. И вот тут интересная статейка лежит.
__________________
Спасибо за внимание.
|
|
|
19.09.2009, 21:16
|
#11
|
|
Местный
Регистрация: 23.05.2008
Адрес: Москва
Сообщений: 140
|
Ответ: повороты систем координат
Цитата:
Сообщение от Gladius
Хм... Енто где ж такое советуют, интересно знать... Может быть они имеют в виду поворот корпуса человека при стрельбе, а не вращения всяких там кораблей-самолётов?
P.S. Глянь пост №6 в этой ветке. Там ST ссылочку даёт на свой код... Может пригодиться. И вот тут интересная статейка лежит.
|
Может не совсем точно выразился проблем не в самом вращении. Просто при больших угловых скоростях глюкавит начинает вообщем не кошерно как то вращается... (хотя может так и должно быть, может dt и dv на какиенибудь кратные повороты попадают вобщем хз)
Пока решил эту проблему для себя сглаживанием изображения по 10 кадрам, с блюром ниче не заметно! 
__________________
"Нас невозможно сбить с пути, нам пофигу куда идти"
|
|
|
19.09.2009, 22:38
|
#12
|
|
Местный
Регистрация: 20.05.2008
Адрес: Санкт-Петербург
Сообщений: 405
|
Ответ: повороты систем координат
Не кошерно, говоришь... А глянуть мона? 
__________________
Спасибо за внимание.
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
| Опции темы |
|
|
| Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:11.
|
|
|
|