2013-02-26 152 views
-1

我有三維點集躺在垂直平面上。該平面不平行於X或Y軸,但與X軸形成一個角度(比如θ)。還有一些(+或 - )截取到X軸。如何將XYZ座標轉換爲另一個2D系統

現在,我想更新我的X軸平行於我的飛機的方位角方向。然後我想躺在垂直於XY平面的平面上。所以,我想我可以使用我的原始Z座標作爲新的Y座標。當平面位於XY平面上時,不應再有Z座標。所以,我想知道如何從原始的XYZ和θ中獲得新的X座標。

其實,我想在C++中實現這個修改。但我的數學能力非常差,並且很難弄清楚應該是什麼公式。

做完這個之後,我想用新的XY點座標進行一些處理。最後,我想把我的所有座標恢復到原始系統。最後我想回到我原來的XYZ軸。所以我也看着你的助手也得到這個案例。

您的助手非常感謝。

注:所以我做的是; 我找到了平面的方位角,然後將點數據相對於最小的XY,即我的點集的左下角的XY座標移動。然後,我得到了新的X,Y爲(X「 Y」):

X' = X * cos (θ) + Y * sin(θ) 
Y' = Z 

不知道我的方法是否正確或不..我喜歡學習這一點。

+1

COS和正弦函數需要用來解決問題。此外,將平面與初始座標系對齊比將座標系對齊到平面更方便快捷。計算機圖形學是您需要熟悉的主題。轉換矩陣也可能有所幫助.. – Akshay 2013-02-26 11:28:44

+1

首先嚐試在兩個維度做它。如果你不能解決問題,請展示你的嘗試。 – 2013-02-26 11:30:01

+0

@Peter Wood:我更新了我所做的文章 – gnp 2013-02-26 11:58:08

回答

3

我對你說的「我的點集的左下角」沒有任何意義,但是如果我正確理解了「飛機的方位角」,那麼第一個轉換就是這樣:

X' = X * cos(θ) + Y * sin(θ) 
Y' = -X * sin(θ) + Y * cos(θ) 
Z' = Z 

你應該玩弄這個,確保你理解它,確保它是你想要的,然後再往前走。

經過這種轉換後,飛機上的所有點應具有相同的Y'值。

第二個轉換(「躺下」)將是這樣的:

X" = X' 
Y" = Y' + Z' 
Z" = 0 

你必須記住什麼Y」值,以便以後扭轉這一轉變。

你做任何你想要在這些座標做之後,可以逆轉這一過程,回到你原來的座標系:

X' = X" 
Y' = Y' 
Z' = Y" - Y' 

X = X' * cos(θ) - Y' * sin(θ) 
Y = X' * sin(θ) + Y' * cos(θ) 
Z = Z' 
+0

謝謝。現在很清楚。實際上,我得到了 - 新的xy座標值,以便我移動原點。但是當我繪製一個點時,我意識到即使點位於第一象限,在旋轉之後,這些點可能具有neagative x,y值。感謝您的回答。我學到了很多。再次感謝 – gnp 2013-02-26 21:02:13

相關問題