2010-06-20 146 views
3

首先,我要指出,就是我在数学可怕。数学问题:获取坐标从位置和角度

我试图重新定位和旋转的矩形。然而,我需要从一个不是0,0的点旋转矩形,而是根据其坐标移动的距离。我相信这没什么意义,所以我做了一些草图来帮助解释我需要的东西。

alt text http://www.freeimagehosting.net/uploads/5f0c9d5aa6.png

上面显示图像的红色矩形移动从0%到100%的3个阶段。红色矩形的X和Y坐标(红色矩形的左上角)仅移动蓝色矩形高度的百分比。

alt text http://www.freeimagehosting.net/uploads/a316b5650f.png

红色矩形可以旋转。仅关注上方的中间示例(“距离-50%”),其中红色矩形重新定位在蓝色矩形高度的-50处,其上图中的新角度现在为-45º。它已经从0,0点开始旋转。

alt text http://www.freeimagehosting.net/uploads/9c97165908.png

现在,我的问题是,我想它的旋转点,以反映其位置。

红色和蓝色矩形是相同的尺寸,但具有相反的宽度和高度。因为红色矩形的0,0坐标现在是蓝色矩形高度的-50%,并且由于它们具有相反的宽度和高度,我希望旋转点为红色矩形宽度的50%(或蓝色矩形的50%身高,这是同样的事情)。

而不是专门告诉红色矩形在其宽度的50%处旋转,为了做我想做的事情,我需要通过使用公式来模拟红色矩形的X和Y坐标,以便其旋转点反映其位置。

+2

关于创建一个插图的数学指南,安装inkscape ... – thomasfedb 2010-06-20 01:16:08

+0

@ TheDarkIn 1978:要回答,但duffymo似乎击败了我。你用Inkscape这些优秀的插图吗? – Jacob 2010-06-20 01:42:35

+0

我使用Adobe Illustrator – TheDarkIn1978 2010-06-20 03:16:34

回答

3

这里有一个说明解决问题的方法:

Method for determining position deltas from an off-centre rotation.

+0

谢谢@Cimbali,这两个问题都已解决。 – thomasfedb 2015-01-02 08:55:34

0

如果知道原点O和旋转矩形的侧的P点,就可以计算出两者之间的矢量:

alt text http://www.equationsheet.com/latexrender/pictures/9954bf8d997098ab327f37abd34eb70e.gif

你可以得到矢量和X之间的夹角通过采取点积用这个载体 - 轴:

alt text http://www.equationsheet.com/latexrender/pictures/a20a486c9afa2b9a33b8a0dab351a6ed.gif

鉴于此,您可以通过一个旋转矩阵相乘的矩形变换的任何一点:

alt text http://www.equationsheet.com/latexrender/pictures/9243080836834d7d86427d99d656f3e8.gif

+0

无法想象这是为什么这是downvoted,特别是写后三年。 – duffymo 2013-03-10 23:34:33

3

我完全不知道你需要什么,但似乎一个过程来绕任意点的矩形可能会有帮助。

假设我们要旋转点(X,Y)d弧度围绕原点(0,0)。对于旋转点的位置计算公式为:

x' = x*cos(d) - y*sin(d) 
y' = x*sin(d) + y*cos(d) 

现在我们不想绕原点旋转,而是围绕一个给定的点(A,B)。我们所做的是首先将原点移动到(a,b),然后应用上面的旋转公式,然后将原点移回(0,0)。

x' = (x-a)*cos(d) - (y-b)*sin(d) + a 
y' = (x-a)*sin(d) + (y-b)*cos(d) + b 

这是用于围绕点(a,b)旋转点(x,y)d弧度的公式。

对于你的问题(a,b)将是蓝色矩形右侧的中点,(x,y)将是红色矩形的每个角落。该公式给出(x',y')旋转的红色矩形的角的坐标。

0

看起来你可以避免一个更复杂的旋转最初更狡猾的定位?例如,在最后一个示例中,将红色框放在“-25%蓝色高度”和“-25%红色高度” - 如果我按照您的参考方案 - 然后执行所需的旋转。

3

这真的很简单。

让我们来解决你的问题,你想绕矩形,即旋转(RP)的点,当你周围的摆动你的矩形不动。假设下图中的点由钻石表示。

alt text

2.翻译的4点,使得RP(0,0)。假设该点的坐标是(RP x,RP y,因此用这些坐标减去矩形的所有4个角。

alt text

alt text

rotation matrix(其中通过一些角度也就是现在的旋转感谢以前的翻译点绕原点逆时针点)旋转点

下图显示逆时针旋转45°的矩形。

alt text

4.翻译矩形回(加入RP所有4分): alt text

我想这是你想要的:)

+1

感谢您的视觉效果 - 帮助我 – simianarmy 2012-02-13 01:35:40