2010-12-16 177 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