glm glx вращение не работает

Я работаю над проектом моделирования привода. Я использую opengl в среде IDE VS2010.

Существует вектор glm::vec3 'dir' для объекта 'car_param' (не важно), который я хочу повернуть с помощью функции вращения glm\glx.

glm::rotate(car_param->dir,0.5f,glm::vec3(0,1,0));

Он успешно компилируется, но при запуске не действует. Я попытался проверить это с помощью:

cout<<car_param->dir.x<<"\t"<<car_param->dir.y<<"\t"<<car_param->dir.z<<"\n";

сразу после поворота, но он застрял на (0,0,-1), что было начальным значением.


person Hafez    schedule 30.12.2013    source источник


Ответы (1)


Посмотрите на подпись rotate():

template< typename T >
detail::tvec3< T > rotate( detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal )

Обратите внимание, что v передается как ссылка const.

rotate() возвращает повернутый вектор. Он не (не может!) вращаться v на месте.

Попробуй это:

car_param->dir = glm::rotate(car_param->dir,0.5f,glm::vec3(0,1,0));
person genpfault    schedule 30.12.2013