我在3D中移動一個點。從一開始就要清楚,根據Matlab的文檔,「方位角和仰角是以弧度爲單位的角位移,方位角是x軸平面上的逆時針角,從正x軸測量,仰角是從xy平面起的仰角。 r是從原點到點的距離。「我將稱方位角爲Theta,仰角爲Phi。現在,我想確保Theta和Phi角度在適當範圍內(以弧度表示)。據這本書「3D數學底漆圖形和遊戲開發」規定如下球面座標matlab中Theta和Phi角的範圍?
如果p < -90,再加入360至P直至p≥-90。
如果p≥270,則從p中減去360直到p≤270。
如果p> 90,則將h添加180並設置p = 180-p。
如果h≤-180,那麼將360加到h直到h> -180。
如果h> 180,然後減去從h 360直到ħ≤180
其中p是披和h是西塔在我的情況。本書使用左手規則。在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
Theta = Theta + pi;
Phi = pi - Phi;
end
我的問題是,一旦披= 1.6(弧度)我點不能再和木棍走在其位置與步進來回一步。
2014-01-20
CroCo
+0
那裏的問題是到目前爲止提供的代碼它並不明顯。我認爲你正在某種循環中出現 - 你是如何設定的?什麼意思是「來回走動」 - 在哪些價值觀之間? –
+0
@nkjt,兩個角度增加1弧度。一旦Phi達到1.6,一切都會出錯。我的問題是我的代碼正確的角度披?我敢肯定Theta,因爲我已經在2D中測試過了,並且工作正常。 –