OpenGL向一个点旋转

jac*_*bot 2 c++ opengl math

使用openGL(仅2d),我正在尝试旋转纹理,使其指向屏幕上的一个点.我将首先展示一张图片,以帮助我解释.

http://img692.imageshack.us/img692/3088/probe.png

假设我的纹理是第1点的蓝点,它在第2点移动到目的地.我想旋转#1,使它"指向"第2点(纹理是一只鸟,所以它有一个定义的"前面" ").要做到这一点,我需要找出角度3.同样,如果我的鸟在第4点朝向第5点,我需要计算角度6.

这样做的秘诀是什么?

ltj*_*jax 6

解决方案是超级有用的std::atan2功能.减去鸟的目标位置,和东西的当前位置yx(注意顺序!)到atan2得到的角度.

编辑:请注意,atan通常假设0°位于X +轴(右侧).但是,您似乎将"基本方向"与Y +对齐(向上),因此您可能希望减去90°或者将参数的顺序和符号与atan函数混合(使用圆形中的基本对称,即atan2(-x,y)) .