我在3D中移动一点。从一开始就要明确,根据Matlab文档,“方位角和仰角是弧度的角位移。方位角是xy平面中从正x轴测量的逆时针角度。仰角是xy平面的仰角。 r是从原点到点的距离。“我将方位角称为Theta,仰角称为Phi。现在,我想确保Theta和Phi在适当的范围内(弧度)。根据这本书“用于图形和游戏开发的3D数学入门”,请注明以下内容
- 如果p < -90,然后将p加到p,直到p≥-90。
- 如果p> 270,然后从p减去360直到p≤270。
- 如果p> 90,然后加180到h并设置p = 180 - p。
- 如果h≤-180,则加上360到h,直到h> 1。 -180。
- 如果h> 180,然后从h减去360直到h≤180。
醇>
其中p是Phi,h是我的Theta。这本书使用了左手规则。我在Matlab中的实现代码是
if Theta > pi
Theta = Theta - 2*pi;
end
if Theta <= -pi
Theta = Theta + 2*pi;
end
if Phi < -pi/2
Phi = Phi + 2*pi;
end
if Phi > (3*pi)/2
Phi = Phi - 2*pi;
end
if Phi > pi/2 <-------- here the problem
Theta = Theta + pi;
Phi = pi - Phi;
end
我的问题是,一旦Phi = 1.6(以弧度表示),我的观点就不能再往前走了一步,来回踩了一步。
答案 0 :(得分:1)
我通过修改代码来解决问题
if Phi > pi
Phi = 0;
end
if Phi < 0
Phi = pi;
end