2010-05-02 51 views
1

我有一個任意寬度和高度的矩形。我知道X,Y,寬度和高度。當矩形旋轉N度時,如何解決右上方的座標?我意識到,如果它是軸對齊,我會簡單地解決(x,y +寬度)。當我在矩形上應用一個變換矩陣以圍繞它的中心旋轉時,這不會成立。在AS3中尋找旋轉矩形的右上角(Flex)

+0

當然,這也取決於矩形的註冊點在哪裏。 – jonathanasdf 2010-05-03 16:19:11

回答

0

您只需計算給定半徑的圓上的點。矩形的中心將成爲圓的起點,任何角將成爲圓的圓周上的一個點。您需要使用三角函數來使用旋轉來計算新點。我現在沒有時間來解釋所有這些,但是這裏有一個鏈接,指向我過去使用過的體面的2D Javascript庫,它應該給你所需的一切(記住數學幾乎相同在Javascript和ActionScript中)自己解決它。

http://jsdraw2d.jsfiction.com/viewsourcecode.htm

1

它通常是最方便快捷的讓Flash的顯示的代碼做這些事情你。創建一個空的Sprite,並將其放在要跟蹤的角的矩形顯示對象內。然後,找到您所選擇的座標空間精靈的位置:

var p:Point = new Point(0,0); 
myRectangle.myCornerSprite.localToGlobal(p); 
someDisplayObject.globalToLocal(p); // for a coord space besides the stage 

這讓你出來作出有關矩形的設計(即報名點)的任何假設,即使矩形應該被扭曲的作品或縮放以及旋轉。另外,這將更容易實施和維護一堆亂七八糟的餘弦和什麼。 (請注意,上面的代碼假設「右上角」指的是一個特定的角落 - 如果您想要檢查當前右上角的哪個角落,我只需簡單地添加一個與sprite相同的東西在所有的四個角落,並選擇在全球座標右上角)