2013-01-15 55 views
0

我有一個相機類,通過歐拉角度和位置保持她的方向。類似的東西:歐拉相機,在相機本地系統中繞x軸旋轉

float m_x; 
float m_y; 
float m_z; 

Vector4 m_pos; 

而我想移動這臺相機在空間上自由。 當用戶移動鼠標上下相機時,必須以自己的座標系圍繞x軸旋轉。但是我只想保持這三個角度和位置,而不是更多。

所以算法看起來像這樣:

  1. 查找相機本地系統軸(U,V,N)
  2. 繞u軸上α角
  3. 周圍查找角(1,0,0 ),(0,1,0),(0,0,1)的答案上旋轉角度阿爾法圍繞u軸
  4. 添加他們m_x,m_y,m_z

的問題是:如何能calcula在本地攝像機座標系中旋轉角度回答的默認座標系(i是指在(1,0,0),(0,1,0)和(0,0,1))中的旋轉角度?

Description

或可能是更好的解決方案存在這個問題呢?

+3

我強烈建議看看四元數,歐拉角對於相機來說很少有用,特別是如果你打算圍繞所有3軸旋轉。 – sradforth

+0

謝謝,我會,但無論如何:如何計算我想要的? :) – acrilige

+0

這是有點不清楚你真的想要做什麼,是相機「她」在整個文本?除此之外,你試圖做的事情會給你一個你最不可能想要的結果,查看萬向節鎖。 – Ylisar

回答

1

我從your comment回答簡潔的問題:

如何計算在一個旋轉座標系回答轉動另一個座標系?

您可以通過應用合適的變換矩陣來轉換座標系之間的旋轉。這又可以從歐拉角度計算,參見Wikipedia section on conversion formulae

根據您的申請,您可能也可能不必考慮翻譯。根據我的理解你的問題,你可以專注於每個轉換的旋轉部分。