2013-05-06 115 views
1

我想在虛擬桌面程序的API中編寫一個腳本(JavaScript),所以我可以操縱一些令牌(汽車戰爭:))。從任何一點旋轉矩形

我有點找到答案,但似乎我正在掙扎,重新發明輪子,所以我想我會尋求幫助。我感到困惑的一個原因是程序返回的結果是基於+ y的,並且Deg按順時針方向旋轉,這與所有三角公式所需的不同(逆時針和+ y向上)。

以下是我可以訪問的內容。矩形圍繞中心,中心點(x,y),寬度,高度和旋轉進行旋轉。我有代碼的工作方向的旋轉,左右,上下等方向移動矩形。現在我需要能夠圍繞任何四個角落旋轉或任何點將是很好的,但四個角落都是需要的。

它不會讓我包括一個圖像,因爲我是新的,所以我希望描述足夠好。我完成了一個圖像。 :(

在API中我實際上不能繪製矩形,我只能設置它的旋轉和中心值。所以我的想法是,如果我可以找到當前的一個角的x,y,然後旋轉它(我可以很容易地通過設置矩形旋轉來做到這一點),找到同一個角的新x,y,然後我將知道偏移量並將其應用到中心(即矩形如何移動)

所以我需要能夠在任何給定的起始角度找到一個矩形的任何角落的x,y,然後再以一個以其中心旋轉的新角度找到這個偏移然後很容易應用到中心x,y和長方形將看到沿着其一個角部旋轉

感謝您的幫助。我希望我能最終弄明白,只是寫出這些描述實際上幫助我思考了這一點。但我目前被卡住了!

康拉德

回答

1

訣竅圍繞在2D的任意一點旋轉(例如,長方形的四個角之一),那麼該點周圍要先翻譯圖形頂點旋轉在原點(即0,0)。

爲了達到這個目的:
1.用(-x,-y)翻譯你的矩形。
2.將矩形旋轉所需的角度。
3.用(x,y)翻譯矩形,將其放回原來的位置。
其中(x,y)是圍繞其旋轉的點的x/y座標。

您可以使用負角度來調整順時針旋轉。

網上有很多這方面的信息,例如: http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm