我正在尝试使用GLUI在OpenGL中实现一项功能,以便“Arcball”控件用于输入灯光的位置。我不知道如何解决这个问题,因为弧球给出的旋转矩阵是4x4维度,而光位置是3坐标的1-D数组。
答案 0 :(得分:1)
旋转场景周围的光仅对方向光(即无限远处的位置)有意义。所以你不是在旋转一个点,而是一个方向,就像正常一样。足够简单:让未旋转的光具有方向(0,0,1,0)。然后围绕场景旋转它,将它乘以给定矩阵的转置 - 逆。但是既然你知道,这个矩阵只包含一个旋转,这是一个特殊情况,其中transpose-inverse与原始矩阵相同。
因此,您只需将初始光线方向(0,0,1,0)与矩阵相乘。
我们可以进一步简化这一点。如果你看一下乘法,你会看到,它基本上只是提取原始光位置矢量非零的矩阵的(加权)列。所以,如果我们真的从(0,0,1,0)的光方向开始,你只需从弧形旋转矩阵中取第3列。