|
3D-программирование Вопросы, касающиеся программирования 3D мира |
12.02.2006, 20:48
|
#1
|
Нуждающийся
Регистрация: 08.02.2006
Сообщений: 75
Написано 0 полезных сообщений (для 0 пользователей)
|
Може ктонить сможен написать функцию для перевода кватерниона в обычный вектор . После прочтения статей по ним у меня постепенно срывает крышу . Всетаки зря какойто тип их в 18 веке придумал .
Прошу кто можут функцию под блитз написать для перевода кватерниона в вектор и функцию для обратной конвертации .
|
(Offline)
|
|
12.02.2006, 21:15
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Jimona спроси
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
12.02.2006, 23:21
|
#3
|
|
Jimon game engine 0.61
отключоные программные модули
файл math.cpp
void Quaternion_To_Euler(const dQuaternion quaternion,vector3df &euler){
dReal w,x,y,z;
w=quaternion[0];
x=quaternion[1];
y=quaternion[2];
z=quaternion[3];
double sqw = w*w;
double sqx = x*x;
double sqy = y*y;
double sqz = z*z;
euler.Z = (float) (atan2(2.0 * (x*y + z*w),(sqx - sqy - sqz + sqw))*GRAD_PI);
euler.X = (float) (atan2(2.0 * (y*z + x*w),(-sqx - sqy + sqz + sqw))*GRAD_PI);
euler.Y = (float) (asin(-2.0 * (x*z - y*w))*GRAD_PI);
}
void Euler_To_Quaternion(const vector3df &euler, dQuaternion quaternion)
{
double _heading=euler.Z*GRAD_PI2/2.0;
double _attitude=euler.Y*GRAD_PI2/2.0;
double _bank=euler.X*GRAD_PI2/2.0;
double c1 = cos(_heading);
double s1 = sin(_heading);
double c2 = cos(_attitude);
double s2 = sin(_attitude);
double c3 = cos(_bank);
double s3 = sin(_bank);
double c1c2 = c1*c2;
double s1s2 = s1*s2;
quaternion[0]=(dReal) (c1c2*c3 + s1s2*s3);
quaternion[1]=(dReal) (c1c2*s3 - s1s2*c3);
quaternion[2]=(dReal) (c1*s2*c3 + s1*c2*s3);
quaternion[3]=(dReal) (s1*c2*c3 - c1*s2*s3);
}
для блица пока немногу написать (занят сильно)
|
|
|
13.02.2006, 00:31
|
#4
|
Модератор
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений (для 10 пользователей)
|
эээ... объясните непосвящённому, что есть "кватерниона"?
|
(Offline)
|
|
13.02.2006, 01:34
|
#5
|
Нуждающийся
Регистрация: 08.02.2006
Сообщений: 75
Написано 0 полезных сообщений (для 0 пользователей)
|
Кватерниона это ужасная хрень Точно немогу обьяснить Но это что-то типа четырех мерного вектора ( хз зачем ) .
|
(Offline)
|
|
13.02.2006, 01:44
|
#6
|
Модератор
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений (для 10 пользователей)
|
гы... во бред!
и нафига он нужен, живя в 3-х мерном пространстве
|
(Offline)
|
|
13.02.2006, 01:45
|
#7
|
Нуждающийся
Регистрация: 08.02.2006
Сообщений: 75
Написано 0 полезных сообщений (для 0 пользователей)
|
Спасибо большое jimon мне под блитз пока и ненадо всеровно то что я под блитзем написал нифига непашет . Я доделаю хоть свой cam есдитор под сями . Еще раз спасибо .
|
(Offline)
|
|
13.02.2006, 02:15
|
#8
|
Нуждающийся
Регистрация: 08.02.2006
Сообщений: 75
Написано 0 полезных сообщений (для 0 пользователей)
|
Чему равна константа GRAD_PI ?
|
(Offline)
|
|
13.02.2006, 22:23
|
#9
|
|
const f64 irr::core::GRAD_PI = 180.0 / 3.1415926535897932384626433832795
квартерионы форева !
2 alex-mad :
сравни умножение вектора положение на полную матрицу поворота
и вектора положения на квартерион
увидиш разницу
и квартерион занимает 4 числа вместо того что матрица поворота по одной оси занимает 16 чисел
если всеравно непонятно - учи основы физики, и игровой геометрии
|
|
|
15.02.2006, 18:09
|
#10
|
Нуждающийся
Регистрация: 08.02.2006
Сообщений: 75
Написано 0 полезных сообщений (для 0 пользователей)
|
jimon можеш чтонибудь конретное посоветовать почитать по этой системе координат в которой используется 4 оси . сорри если что нетак сказал . Вот я неврублюка это все перемнить ведь до пусим в OGL можно задавать вершину четырьмя координатами а я хз нафик четвертая нужна . Вот хочется разобарться. Ну и по ксатернионам чтонить для нубов , но помоему это все из одной тарелки . Заранее спасибо
|
(Offline)
|
|
15.02.2006, 18:28
|
#11
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
в ОГЛ координаты задаются так:
если задано 4 переменных x,y,z,w то реальные координаты получаются такие:
x/w,y/w,z/w
по умолчанию w=1.0 при задании координат 2-мя и 3-мя числами
|
(Offline)
|
|
15.02.2006, 18:43
|
#12
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Вот тока что нашел справку по кватернионам
quat3rot.pdf
|
(Offline)
|
|
15.02.2006, 18:49
|
#13
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
|
(Offline)
|
|
15.02.2006, 19:05
|
#14
|
Нуждающийся
Регистрация: 08.02.2006
Сообщений: 75
Написано 0 полезных сообщений (для 0 пользователей)
|
Спасиба . Но вы видели сколько я в той мессаге опечаток сделал щя сам сижу и прусь
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:23.
|