Проблемы с Кватернионом

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

vito
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 15.10.2005 (Сб) 3:52

Проблемы с Кватернионом

Сообщение vito » 17.10.2005 (Пн) 21:20

Нужно загрузить и аннимировать файл MilkS.

В исходниках которые я нашел повороты работают некорректно(искажение).
Это С++ но вроде понятно.

Вот реализация Кватерниона.
Мне кажется ошибка здесь

Код: Выделить всё
//Это собственно получение Кватерниона.
void set( T xrot, T yrot, T zrot ) {// на вход получаем  углы поворота и только(такой формат файла)
         T angle;
         T sx, sy, sz, cx, cy, cz;

         angle = zrot * T( 0.5 );
         sz = ( T )sin( angle );
         cz = ( T )cos( angle );
         
         angle = yrot * T( 0.5 );
         sy = ( T )sin( angle );
         cy = ( T )cos( angle );

         angle = xrot * T( 0.5 );
         sx = ( T )sin( angle );
         cx = ( T )cos( angle );

         

         x = ( T )( sx*cy*cz-cx*sy*sz );// что здесь считается я не понял(оъясните если это возможно)
         y = ( T )( cx*sy*cz+sx*cy*sz );// т.к. q = [x1,x2,x3,x4] = [scalar,(vector)]
         z = ( T )( cx*cy*sz-sx*sy*cz );
         w = ( T )( cx*cy*cz+sx*sy*sz );

         normalize(); // особенно здесь
      };
//------------------------------------------------------------------------------------------------------------------------
void normalize() {
         const T s = T( 1 ) / ( T )sqrt( x*x + y*y + z*z + w*w );
         
         w *= s;
         x *= s;
         y *= s;
         z *= s;
      }

но Кватернион создается так:
1.s = cos(angle/2) скляр мы не трогаем, а здесь он участвует в расчетах
2.v = (x,y,z) * sin(angle/2) / |(x,y,z)| хотя должны быть (x,y,z) т.е. только вектор
3. q = [s,v].

реализация slerp вроде правильная.

Совсем забуксовал:(

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 17.10.2005 (Пн) 23:34

может весь пример выложишь?
ХЎ

vito
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 15.10.2005 (Сб) 3:52

Сообщение vito » 18.10.2005 (Вт) 0:50

Математический аппарат в файле math.h
Класс Model отвечает за загрузку и инициализацию.
Программа релизована как WIN32 приложение(С++).

Управление (перемещая мышь)
Левая кнопка - вращаем
Средняя - перетаскиваем
Првая - приближаем удаляем изображение.

F1 включ- выключ полноэкранного режима. Esc - выход.

На демушке видно как при перезарядке винтовки искажается изображение.
В программе код максимально закоменнтированн( как мог - работал один).

Можно подгрузить еще несколько моделей( расскоментируй строки- разберешся)

Может вместе и получится?
У вас нет доступа для просмотра вложений в этом сообщении.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.10.2005 (Вт) 1:23

сейчас буду поглядеть.

ты этот пример сам написал?
ХЎ

vito
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 15.10.2005 (Сб) 3:52

Сообщение vito » 18.10.2005 (Вт) 1:31

Частично.
На данном этапе большая часть просто переработана и адаптирована, а двигаться дальше не могу... воткнулся.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.10.2005 (Вт) 1:58

вот я тоже втыкаю... даже перелопатил сеть, нашел другие примеры, они либо без анимации, либо не работают. нашел что-то на паскале, но там два модуля, и что с ними делать не знаю, на vb чтоли переводить...
ХЎ

vito
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 15.10.2005 (Сб) 3:52

Сообщение vito » 18.10.2005 (Вт) 2:48

В принципе я уже кажется нашел ошибку.
В данном примере некорретнное разложение кванториона. (Не сглазить:))
Постников "Аналитическая геометрия". Только там нашел толковое изложение.
Сейчас правлю, вроде процесс пошел:)

vito
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 15.10.2005 (Сб) 3:52

Сообщение vito » 18.10.2005 (Вт) 20:37

d3drm

Если тебе интересно, у меня все в лучшем виде.
Могу принимать поздравления:)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.10.2005 (Вт) 23:25

vito, рад, что у тебя все получилось.

Такой вопрос в оффтоп, а что ты делаешь? Игру? Можешь свой проект описать...
ХЎ

vito
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 15.10.2005 (Сб) 3:52

Сообщение vito » 18.10.2005 (Вт) 23:37

Ну в общем да. Только на С++.

А вопрос к тому, нужна ли тебе еще помощь в этом вопросе.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.10.2005 (Вт) 23:56

Мне просто стало интересно, что за проект =) есть на что посмотреть уже?
ХЎ

vito
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 15.10.2005 (Сб) 3:52

Сообщение vito » 19.10.2005 (Ср) 0:03

Приаттачу искуственный интелект(уже готов), тогда конечно покажу.

Вообще интересная штуковина получается.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList