Theta& amp;的范围球面坐标matlab中的披角?

时间:2014-01-20 08:36:12

标签: matlab math 3d angle

我在3D中移动一点。从一开始就要明确,根据Matlab文档,“方位角和仰角是弧度的角位移。方位角是xy平面中从正x轴测量的逆时针角度。仰角是xy平面的仰角。 r是从原点到点的距离。“我将方位角称为Theta,仰角称为Phi。现在,我想确保Theta和Phi在适当的范围内(弧度)。根据这本书“用于图形和游戏开发的3D数学入门”,请注明以下内容

  
      
  1. 如果p < -90,然后将p加到p,直到p≥-90。
  2.   
  3. 如果p> 270,然后从p减去360直到p≤270。
  4.   
  5. 如果p> 90,然后加180到h并设置p = 180 - p。
  6.   
  7. 如果h≤-180,则加上360到h,直到h> 1。 -180。
  8.   
  9. 如果h> 180,然后从h减去360直到h≤180。
  10.   

其中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(以弧度表示),我的观点就不能再往前走了一步,来回踩了一步。

1 个答案:

答案 0 :(得分:1)

我通过修改代码来解决问题

if Phi > pi
    Phi = 0;
end
if Phi < 0
    Phi = pi;
end