Последнее объявление - невидимый
Авторизуйтесь для прсмотра мини чата.
 

Вернуться   Форум проекта "Живая вселенная" > Математика > Алгоритмы общего назначения
Регистрация Blogs Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Алгоритмы общего назначения обсуждаем алгоритмы напрямую не связанные с ЖВ

Закрытая тема
 
Опции темы Опции просмотра
Старый 27.06.2008, 12:11   #1
Alex080969
Администратор
 
Аватар для Alex080969
 
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
Blog Entries: 5
Отправить сообщение для Alex080969 с помощью ICQ
По умолчанию повороты систем координат

Помогите если у кого под рукой справочник по математике есть.
Задача такова:
Есть 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).

Справочника нет под рукой, а в голове запор мыслей
__________________
Всегда на связи
Alex080969 вне форума  
Старый 27.06.2008, 15:17   #2
Железный
Местный
 
Аватар для Железный
 
Регистрация: 20.05.2008
Адрес: Москва
Сообщений: 105
По умолчанию Ответ: повороты систем координат

Зачем тебе углы? Все реализуется через матрицы поворота.

См. мой исходник. Там есть операции со всеми матрицами.

Если очень нужны углы, то рассчитай обратную матрицу преобразования М1->M3, а затем вычисли арккосинусы ячеек А12,А13,А23
Железный вне форума  
Старый 28.06.2008, 06:23   #3
Alex080969
Администратор
 
Аватар для Alex080969
 
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
Blog Entries: 5
Отправить сообщение для Alex080969 с помощью ICQ
По умолчанию Ответ: повороты систем координат

Цитата:
Сообщение от Железный Посмотреть сообщение
Зачем тебе углы? Все реализуется через матрицы поворота.

См. мой исходник. Там есть операции со всеми матрицами.

Если очень нужны углы, то рассчитай обратную матрицу преобразования М1->M3, а затем вычисли арккосинусы ячеек А12,А13,А23
За исходник спасибо. А углы мне нужны вот для чего.
есть у меня два массива: в одном координаты исходные, во втором изменённые в режиме просмотра 3Д. В режиме просмотра 3Д пользователь может повернуть изображение вокруг ординат X и Y.
после чего производится пересчёт еоординат во втором массиве и вывод на экран изменённого изображения. Однако вся фигня в том, что координаты у меня - целочисленные, соответственно после пересчёта необходимо полученные координаты округлить. В результате накапливается жуткая погрешность и точки начинают "гулять".
Хочу переделать на следующее:
пересчитывать не массив2 на поворот вокруг XY, а массив1 на поворот вокруг XYZ. Тобиш получив углы поворота массива2 пересчитываем их на углы поворота массива1.
В результате округление будет только одно и не будет накапливатся погрешность с увеличением количествов поворотов.

кстате при размере массива в 10 миллионов поворот происходит с задержкой в полсекунды.
__________________
Всегда на связи
Alex080969 вне форума  
Старый 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
Alex080969
Администратор
 
Аватар для Alex080969
 
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
Blog Entries: 5
Отправить сообщение для Alex080969 с помощью ICQ
По умолчанию Ответ: повороты систем координат

Цитата:
Сообщение от Железный Посмотреть сообщение
Неправильно. В трех углах не сохранишь многоэтапную эволюцию, тем более, что есть еще и трансляции (перемещение).

Проблема накопления ошибки есть и для дробных чисел.
Обычно она решается нормированием.
Раз в сколько-то тактов запускаешь процедуру нормировки всего массива матриц (вернее, тензоров). Нормировка одной матрицы выполняется делением всех векторов базиса на множитель (единица/sqr(x^2+y^2+z^2)).
Решение не идеальное, но явных прыжков точек избежишь.
Лучше вообще взять "псевдодробные числа" типа int64 - 32 бита на целую часть + 32 бита на десятичную дробь. Получается точность - 10Е-9 - девять знаков после запятой. На десяток поворотов без нормировки хватит.
Ответы твои умны и многословны, но вот не всегда по теме.
Что неправильно то?
я не собираюсь запоминать все этапы поворотов - только результирующие углы.
Нормировку использовать не планирую. А зачем? если я планирую только одно преобразование.
С вещественными числами с фиксированной точкой работать не планирую.

А вот по основному вопросу ответа нет(
__________________
Всегда на связи
Alex080969 вне форума  
Старый 29.06.2008, 13:07   #6
Sh.Tac.
Местный
 
Аватар для Sh.Tac.
 
Регистрация: 20.05.2008
Адрес: MSK
Сообщений: 187
По умолчанию Ответ: повороты систем координат

Алекс, гугли лучче кватернионы

они как раз для поворотов
просто домножаешь текущий кватернион на кватернион, состоящий из оси вращения и угла, - всё

потом результирующая матрица вида выводится из текущего кватерниона (матрица 3х3) + надо добавить отдельно нижнюю строчку из вектора транслейтов

вот когда-то приводил код на ЕГ
http://www.elite-games.ru/conference...374398#1374398
__________________
This is what you get...
Sh.Tac. вне форума  
Старый 30.06.2008, 08:58   #7
Alex080969
Администратор
 
Аватар для Alex080969
 
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
Blog Entries: 5
Отправить сообщение для Alex080969 с помощью ICQ
По умолчанию Ответ: повороты систем координат

Цитата:
Сообщение от Sh.Tac. Посмотреть сообщение
Алекс, гугли лучче кватернионы

они как раз для поворотов
просто домножаешь текущий кватернион на кватернион, состоящий из оси вращения и угла, - всё

потом результирующая матрица вида выводится из текущего кватерниона (матрица 3х3) + надо добавить отдельно нижнюю строчку из вектора транслейтов

вот когда-то приводил код на ЕГ
http://www.elite-games.ru/conference...374398#1374398
Чёт я какой то тупой стал. не понял я метода кватерниона.
Ладно, хрен с ней , с этой погрешностью. Потом разберусь.
__________________
Всегда на связи
Alex080969 вне форума  
Старый 30.06.2008, 15:16   #8
Theodor
Пользователь
 
Регистрация: 24.06.2008
Сообщений: 64
По умолчанию Ответ: повороты систем координат

Alex, кватернион - это 4-мерный вектор, который фактически представляет собой "угол поворота" или "ориентацию". В принципе 3х3 матрицы поворота и кватернионы взаимнооднозначны, просто поворотные матрицы постоянно пытаются "выйти" из своего пространства (стать "неповоротными"), а кватернионы - нет. Там тоже надо нормализовать, но последствия ненормализованности не так критичны.
Есть простые формулы преобразования между кватерниономи и эйлеровыми углами или матрицами поворота.
Как и с матрицами, поворот осуществляется простым перемножением кватерниона ориентации на кватернион поворота.
Theodor вне форума  
Старый 11.03.2009, 05:58   #9
Alex080969
Администратор
 
Аватар для Alex080969
 
Регистрация: 19.05.2008
Адрес: г.Красноярск
Сообщений: 277
Blog Entries: 5
Отправить сообщение для Alex080969 с помощью ICQ
По умолчанию Ответ: повороты систем координат

Цитата:
Бурное и чрезвычайно плодотворное развитие комплексного анализа в XIX веке стимулировало у математиков интерес к следующей задаче: найти новый вид чисел, аналогичный по свойствам комплексным, но содержащий не одну, а две мнимые единицы. Предполагалось, что такая модель будет полезна при решении пространственных задач математической физики. Однако работа в этом направлении оказалась безуспешной.

Новый вид чисел был обнаружен ирландским математиком Уильямом Гамильтоном в 1843 году, и он содержал не две, как ожидалось, а три мнимые единицы. Гамильтон назвал эти числа кватернионами. Позднее Фробениус строго доказал (1877), что расширить комплексное поле до поля или тела с двумя мнимыми единицами невозможно.

Несмотря на необычные свойства новых чисел (их некоммутативность), эта модель довольно быстро принесла практическую пользу. Максвелл использовал компактную кватернионную запись для формулировки своих уравнений электромагнитного поля.[7] Позднее на основе алгебры кватернионов был создан трёхмерный векторный анализ (Гиббс, Хевисайд).
Мда... эт конечно круто что уже полторачста столетия такое придумали. Только я и с комплексными то числами кой-как подружился, а уж с тремя "мнимыми" .....
А вообще то надо быть проще. Мы же вектор движения молотка и прикладываемую силу не расчитываем при забивании гвоздя

Мне ж особая точность не нужна, это в модуле визуализации для поворотов.
Пойду простым и тупым путём.
__________________
Всегда на связи
Alex080969 вне форума  
Старый 19.09.2009, 19:19   #10
Gladius
Местный
 
Аватар для Gladius
 
Регистрация: 20.05.2008
Адрес: Санкт-Петербург
Сообщений: 405
Отправить сообщение для Gladius с помощью ICQ
По умолчанию Ответ: повороты систем координат

Bormoglot:
Цитата:
О кажись ответ на мой вопрос лежит в теме кватернионов и их сферической линейной интерполяции, пойду их курить...

А может и не в этой плоскости лежит!

Вот тут посчитал на досуге если всетаки расматривать поворот как перемещение мат. точек и взять как советуют в некоторой литературе минимальной поворот-перемещение вокруг оси в 1/72 оборота (то есть 5 градусов) то при 30 кадрах в секунду "угловые скорости" не должны превышать 151 град/сек или соответственно 0.42 оборота/сек по каждой из осей. Маловато будет...
Хм... Енто где ж такое советуют, интересно знать... Может быть они имеют в виду поворот корпуса человека при стрельбе, а не вращения всяких там кораблей-самолётов?

P.S. Глянь пост №6 в этой ветке. Там ST ссылочку даёт на свой код... Может пригодиться. И вот тут интересная статейка лежит.
__________________
Спасибо за внимание.
Gladius вне форума  
Старый 19.09.2009, 21:16   #11
Bormoglot
Местный
 
Аватар для Bormoglot
 
Регистрация: 23.05.2008
Адрес: Москва
Сообщений: 140
Отправить сообщение для Bormoglot с помощью ICQ
По умолчанию Ответ: повороты систем координат

Цитата:
Сообщение от Gladius Посмотреть сообщение
Хм... Енто где ж такое советуют, интересно знать... Может быть они имеют в виду поворот корпуса человека при стрельбе, а не вращения всяких там кораблей-самолётов?

P.S. Глянь пост №6 в этой ветке. Там ST ссылочку даёт на свой код... Может пригодиться. И вот тут интересная статейка лежит.
Может не совсем точно выразился проблем не в самом вращении. Просто при больших угловых скоростях глюкавит начинает вообщем не кошерно как то вращается... (хотя может так и должно быть, может dt и dv на какиенибудь кратные повороты попадают вобщем хз)

Пока решил эту проблему для себя сглаживанием изображения по 10 кадрам, с блюром ниче не заметно!
__________________
"Нас невозможно сбить с пути, нам пофигу куда идти"
Bormoglot вне форума  
Старый 19.09.2009, 22:38   #12
Gladius
Местный
 
Аватар для Gladius
 
Регистрация: 20.05.2008
Адрес: Санкт-Петербург
Сообщений: 405
Отправить сообщение для Gladius с помощью ICQ
По умолчанию Ответ: повороты систем координат

Не кошерно, говоришь... А глянуть мона?
__________________
Спасибо за внимание.
Gladius вне форума  
Закрытая тема


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


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


Работает на vBulletin® версия 3.6.10.
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Перевод: zCarot
Клуб игроделов "Live Universe". Copyright 2001-2008 ©
 

MKPortal ©2003-2008 mkportal.it