2012-10-30 192 views
2

我一直在尋找這個問題,但我找不到合適的答案。
我需要圍繞給定點(例如0,0,0)旋轉一個圓柱體,但圓柱體的樞軸是默認給定的。我如何改變它?圍繞特定點旋轉(例如,圍繞0,0,0旋轉)

我發現this的話題,這是我想要做的,但我不知道如何用java做到這一點。

更好地說明我想這樣做,我將展示3張圖片內容。(五)

imageshack.us/photo/my-images/259/aintgood.jpg

imageshack.us /photo/my-images/840/whatineed.jpg

imageshack.us/photo/my-images/705/nogoodn.jpg

所以,第一個圖像顯示了我的基本問題,氣缸應定位以球體的中心結束,讓我們說(0,0,0)。用戶給出兩個角度。第一個是rotX命令,第二個是rotZ命令。圓柱體的樞軸位於其中心,因此,如圖3所示,即使我翻譯圓柱體使其末端位於球體的中心,當它旋轉時,整個事物就會消失。

圖2顯示了圓柱體組應該看起來像什麼,無論給定的角度。 圖像不是基於算法獲得的,而是基於微積分和mouserotated。

回答

3

約任意點P轉動的一般過程是:

  1. 通過-P(所以P是在(0,0,0))
  2. 繞原點
  3. 意思?由P(將原點返回到P的原始位置)

最簡單的方法是代表homogeneous coordinates中的所有內容,並用矩陣表示翻譯和旋轉。通過矩陣乘法完成上述三種轉換(translate-rotate-translate)。如果旋轉由兩個或更多更簡單的旋轉組成,那麼旋轉矩陣本身就是用於較簡單旋轉的矩陣的乘積。

+0

謝謝,這真的很有幫助。事實上,我所需要的只是先翻譯,然後旋轉,而不是顛倒的順序。 –

+0

我現在希望以均勻座標表示將幫助我通過我的下一個問題,我需要找到一個公式來確定相反的點(另一端的圓的中心),這樣我可以限制兩個球體。非常感謝您的幫助,如果您對此有任何想法,我會感謝您提供新的建議。 –

+1

@BujancaMihai - 你可以應用同樣的想法:找到一個球體上一個點的相反點,轉換一切,使球體的中心位於原點,否定點,然後將一切變回原點。希望這可以幫助。附:記得點贊和/或接受有用的答案和/或回答你的問題。 :) –