2014-05-01 50 views
1

我在AS3中工作。在旋转矩形上求解点

我有一个普通的矩形。这个矩形可以有任何长度,任何宽度和任何旋转。我正在尝试解决矩形四个角的x和y坐标。我知道矩形中心的坐标,我知道它的宽度,高度,最高点和最低点之间的y距离以及最左边和最右边点之间的x距离以及知道旋转。我的代码目前看起来像这样(对象,当然是问题的矩形,请记住,当我应用它时,它可以有任何尺寸 - 这只是一种可能性,初始宽度和高度是实际长度和宽度,而稍后引用的宽度和高度是最高点和最低点以及最远左右点之间的x和y距离,旋转当然是旋转的,并且x和y是对象的中心坐标)。

import flash.events.Event; 
addEventListener(Event.ENTER_FRAME, Rotate, false, 0, true); 

var Radius:Number = Math.sqrt(((Object.height/2) * (Object.height/2)) + ((Object.width/2) * (Object.width/2))); 

function Rotate(event:Event) 
{ 

    Object.rotation += 1; 
    Marker1.x = Math.sqrt((Radius * Radius) - ((Object.height/2) * (Object.height/2))) + Object.x; 
    Marker2.x = - Math.sqrt((Radius * Radius) - ((Object.height/2) * (Object.height/2))) + Object.x; 
    Marker3.y = Math.sqrt((Radius * Radius) - ((Object.width/2) * (Object.width/2))) + Object.y; 
    Marker4.y = - Math.sqrt((Radius * Radius) - ((Object.width/2) * (Object.width/2))) + Object.y; 

    Marker1.y = Object.y + (Object.height/2); 
    Marker2.y = Object.y - (Object.height/2); 
    Marker3.x = Object.x + (Object.width/2); 
    Marker4.x = Object.x - (Object.width/2); 

} 

正如你可以看到我在尝试使用圆形的几何形状在矩形的角落放置四个小圆圈(标记1-4),只是为了测试目的,以确认我已经收集了正确的坐标。问题是,坐标将始终放置在+ x和+ y或-x和-y中,但永远不会放置在图的其他两个象限中。我无法弄清楚在程序中动态模拟二次方程的+ - 的简单方法。有没有人知道一种方法来找到矩形的长度,宽度和旋转这四个点?

回答

1

如果代表角的坐标为从矩形的中点的偏移量可以很容易地旋转它们逆时针的角度θ与

DX” = DX × COS θ - DY ×罪θ
DY” = DX ×罪θ + DY × COS θ

然后,您可以旋转偏移添加到中点恢复角的新坐标。

+0

谁能告诉我这是如何通常命名为数学 –