四元数和球体上最近的点

时间:2013-06-11 11:08:59

标签: opengl geometry quaternions closest

我使用四元数在3d空间中旋转球体。

球体位于p =(0,0,0)

问题是:如何找到离相机最近的点和/或脸。

1 个答案:

答案 0 :(得分:1)

这很简单。球体具有良好的属性,它由所有点的集合形成,距离中心的距离具有一定的值(半径)。

在OpenGL中,我们假设观察者位于原点。通过线性变换(模型视图)将对象放置在它们各自的坐标空间中。因此,我们所要做的就是在球体的局部坐标系中找到观察者的位置,并将向量朝向局部空间观察者位置标准化为单位长度。

转换是完整的模型视图矩阵 MV 。您的四元数 q 可以映射到矩阵 R 。假设 q ,即 R 定义球体在其自身局部框架内的旋转,则朝向视图空间的总转换变为

p_view = MV · R · p_local

其中 p 是球体点的集合。

因此,球体框架参考的局部观察者位于

o_local = inv(MV · R) · (0,0,0,1)

最后,您要将本地帧位置矢量重新缩放到观察者的球体半径

o_direction_on_sphere = radious · o_local / len(o_local)