给定一个点(如 (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 );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)