2010-12-16 205 views
5

如何獲得4個點圍繞指針旋轉一定角度以形成矩形?我可以圍繞某個點旋轉一個點,但是我無法將其偏移以製作一個不失真的矩形。圍繞某個點旋轉矩形

+2

你試過做這麼遠嗎?一些代碼?謝謝 – Trufa 2010-12-16 22:26:40

+3

翻譯你的四點,以便你將指針作爲中心,通過標準旋轉矩陣方法進行旋轉,然後將點轉回。 [說明](http://www.euclideanspace.com/maths/geometry/affine/aroundPoint/index.htm) – Michal 2010-12-16 23:45:03

+0

如果我明白我會用它,但我需要一個簡單的英文或最好是JavaScript的解決方案。 – Anonymous 2010-12-17 08:03:58

回答

23

如果你可以圍繞一個點旋轉一個點,那麼它應該很容易旋轉一個矩形 - 你只需旋轉4個點。

這裏是一個js函數繞原點旋轉角度:

function rotate_point(pointX, pointY, originX, originY, angle) { 
    angle = angle * Math.PI/180.0; 
    return { 
     x: Math.cos(angle) * (pointX-originX) - Math.sin(angle) * (pointY-originY) + originX, 
     y: Math.sin(angle) * (pointX-originX) + Math.cos(angle) * (pointY-originY) + originY 
    }; 
} 

然後你就可以做到這一點到每個點。 下面是一個例子:http://jsfiddle.net/dahousecat/4TtvU/

改變角度和命中運行看結果...

+0

你能解釋一下嗎? jsfiddle.net/bjhc34xk/7這是否與PI的逼近有關,或者浮點數學錯誤? – 2015-04-04 23:52:09

+1

分叉費利克斯的小提琴包括一個動態輸入的滑塊,使其更容易實驗 - https://jsfiddle.net/brichins/0ccdd362/ – brichins 2016-07-15 18:05:12

+2

@MaxMastalerz我相信你現在從這一點上移動,但你的小提琴可能是不在做你的想法。在計算過程中,您正在更改端點的X座標,然後從該偏移點而不是中心旋轉Y座標。在一個很酷的黃金螺旋結果,但我認爲你的意思是做到這一點:https://jsfiddle.net/brichins/w2rxsbt4/ – brichins 2016-07-15 18:15:08