默認情況下,旋轉矩陣使用原點作爲旋轉中心。要圍繞任意點旋轉,您必須使用平移矩陣減去到原點的距離,旋轉,然後再平移。除此之外,這對我來說似乎沒有那麼好。我有以下代碼(假設我的目標是100×100與50,50中心):關於任意點的旋轉矩陣
t = IDENTITY;
t = translate(t, -50, -50);
t = rotate(t, theta);
t = translate(t, 50, 50);
不幸的是,如果我申請這個變換矩陣t
我的對象,該對象的位置不正確。
我已經實現了一個快速的jsfiddle來證明我的問題:http://jsfiddle.net/9M3uy/67/
在的jsfiddle,紅色旋轉的廣場就是旋轉應該已經結束了(CSS3內置的變換起源提供),以及藍色旋轉正方形是我的計算結束的地方(綠色將是原始的非旋轉正方形)。
任何想法?我只是不理解如何翻譯,旋轉,翻譯機械工作,或者我在做一些可怕的錯誤?
我看不到綠色... –
您必須使用Chrome或Safari。我更新了JSFiddle以包含所有瀏覽器所需的CSS。 – syazdani
是的!但是,你似乎找到了答案!我來得太晚了 –