Сообщение от YellowAfterlife
Упрощенный вариант:
float hpi = 1,5707963; // половина PI
// pan - вращение вокруг оси Z (горизонталь)
// tilt - вращение вокруг оси Y (вертикаль)
void move(float dx, float dy, float dz)
{
// перемещение вперед\назад:
x += cos(pan) * cos(tilt) * dx;
y += sin(pan) * cos(tilt) * dx;
z += sin(tilt) * dx;
// перемещение вправо\влево:
x += cos(pan + hpi) * dy;
y += sin(pan + hpi) * dy;
/* Поскольку roll не учитываем то Z тут не меняется */
// перемещение вверх\вниз:
x += cos(pan) * cos(tilt + hpi) * dz;
y += sin(pan) * cos(tilt + hpi) * dz;
z += sin(tilt + hpi) * dz;
}
Хорошего дня.
|
Вперед/назад это dx? вправо/влево dy? вверх/вниз dz?