给定一个点,例如(0,0,0),和一个向量(x,y,z)。最简单的方法是将以(0,0,0)为中心的负Z轴对准指向该向量的方向。欢迎使用OpenGL进行示例,但不是必须的。
有很多不同的方法可以旋转坐标系以指向给定方向;它们都会使z轴指向您想要的方向,但x轴和y轴的方向可能有所不同。
以下内容可获得最短的旋转,但这可能并不是您想要的。
vec3 target_dir = normalise( vector );
float rot_angle = acos( dot_product(target_dir,z_axis) );
if( fabs(rot_angle) > a_very_small_number )
{
vec3 rot_axis = normalise( cross_product(target_dir,z_axis) );
glRotatef( rot_angle, rot_axis.x, rot_axis.y, rot_axis.z );
}