簡體   English   中英

Directx11圍繞世界中心旋轉?

[英]Directx11 rotation around center of world?

我已經使用DirectX玩了一段時間了,無法弄清楚如何旋轉某些內容而不將其一直旋轉(0,0,0)。 我離世界中心越遠,旋轉過程中產生的圓圈越大。

如果需要旋轉α,圍繞(x₀,y₀,z a)處的點p,則創建矩陣:

T(-x₀,-y₀,-z₀) * R(α) * T(x₀,y₀,z₀)

T表示平移,R表示旋轉。 另外,根據行或列矩陣等慣例,您可能必須還原操作順序。

不要忘記將矩陣變換應用於坐標系。 假設您要在xy平面上將對象向上移動20個單位,然后將其旋轉90度。 如果先旋轉90度,則將整個平面旋轉90度。 這意味着90度是向上y軸平移的新“向上”。

因此,我們首先進行平移,以使對象的中心為0,0。 現在,當我們旋轉時,我們應該圍繞對象的中心旋轉。 當然,不要忘記翻譯回來或以某種方式清除矩陣。

如您所知,順序在進行矩陣轉換時很重要。 通常,您應該平移,縮放然后旋轉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM