2011-04-17 39 views

回答

2

將對象的中心轉置爲(0,0,0),執行旋轉並轉回。

1

比方說,我們有以下幾點:

class 2DMoon 
{ 
    Texture2D texture; 
    Vector2 axis; 
    Vector2 origin; 
} 

原點可以是(0,0),但是讓我們說這是更復雜的東西 - 像(29,43)。現在讓我們假設紋理的寬度爲50,高度爲90.假設你想要中心,你可以做以下操作(假設原點(即電流)位置)和紋理加載):

axis.X =(.5 * texture.Width); axis.Y =(.5 * texture.Height);

如您所知,這將使軸成爲(25,45)的向量。上述

由於BlueRaja狀態,那麼你可以做看起來像這樣的方法:

Rotate() 
{ 
    origin.X -= axis.X; 
    origin.Y -= axis.Y; 
    // rotation goes here 
    origin.X += axis.X; 
    origin.Y += axis.y; 
} 

這應該任何一種標準紋理的工作。 (當然,你不必有Vector2我提出了所謂的「軸」 - 它只是爲了便於參考

現在,採取同樣的邏輯,並將其應用在3D

。一個忠告:如果你正在嘗試通過3D邏輯工作,首先看2D中的邏輯,10次中有9次,你會發現你正在尋找的答案!

(如果我在我的Rotate()方法中進行換位時出現任何錯誤,請告訴我 - 我在哪裏感到疲倦,而且我沒有測試它,但輪換應該像那樣工作,不是嗎?)