限制相机间距

Wer*_*ert 12 math 3d camera quaternions

当我只有相机四元数时,如何才能有效地限制相机间距?我是否必须转换为欧拉角然后再转换为四元数或者还有其他方法吗?

RMA*_*ida 0

相机旋转四元数可以定义为:

vector A = [x, y, z] 
Q.x = A.x * sin(theta/2)
Q.y = A.y * sin(theta/2)
Q.z = A.z * sin(theta/2)
Q.w = cos(theta/2)
Run Code Online (Sandbox Code Playgroud)

其中A是位置,theta是你想要旋转相机的角度(调整俯仰)。

因此,如果您有可用的四元数,您可以通过每次验证旋转角度加/减实际角度是否正确来限制俯仰角。

我认为如果您将限制设置为

+cos(supLim/2) < (Q.w + P.w) < -cos(infLim/2)
Run Code Online (Sandbox Code Playgroud)

由于余弦是一个连续函数,因此应该可以工作。

如果您可以发布您实际使用的代码,也许我们可以提供更多帮助。