如果我知道两个中间坐标,我怎么能定义矩形的坐标?

时间:2016-04-08 14:22:36

标签: geometry

黑点的坐标是已知的。矩形的宽度是10.如何定义矩形的所有坐标?

http://i.stack.imgur.com/Sc2oz.jpg

2 个答案:

答案 0 :(得分:0)

enter image description here

宽度= 10时,我假设最短边的宽度为10.因此,宽度的一半是5。

让我们首先找到从L到R的向量,然后将其标准化为长度为1并将其拉伸到长度为5.让我们调用此向量A. A可以按如下方式计算:A = 5 *(RL)/ | RL |

现在,A可以顺时针或逆时针旋转90度并应用于L,分别获得S或W.

以同样的方式,A可以顺时针或逆时针旋转90度,分别应用于R,也可以应用于E或N.

那是:

S = L + A *旋转(-90)

W = L + A *旋转(90)

E = R + A *旋转(-90)

N = R + A *旋转(90)

其中,旋转(x)是用于逆时针旋转向量x度的旋转矩阵,如https://en.wikipedia.org/wiki/Rotation_matrix

中所定义

完整的计算:

Ax = 5 *(Rx-Lx)/ sqrt((Rx-Lx)^ 2 +(Ry-Ly)^ 2)

Ay = 5 *(Ry-Ly)/ sqrt((Rx-Lx)^ 2 +(Ry-Ly)^ 2)

S =(Lx + Ay,Ly - Ax)

W =(Lx-Ay,Ly + Ax)

E =(Rx + Ay,Ry - Ax)

N =(Rx-Ay,Ry + Ax)

答案 1 :(得分:0)

让我们的M0,M1是黑点。

//vector M0-M1
mx = M1.X - M0.X
my = M1.Y - M0.Y

//perpendicular vector
px = - my
py = mx

//it's length
lp =Sqrt(px*px + py*py)

 //unit perp. vector
 upx = px / lp
 upy = py / lp

 //vertices
 V1.x = M0.X + 5 * upx
 V1.y = M0.Y + 5 * upy
 V2.x = M0.X - 5 * upx
 V2.y = M0.Y - 5 * upy
 //the same for M1 and V3, V4