黑点的坐标是已知的。矩形的宽度是10.如何定义矩形的所有坐标?
答案 0 :(得分:0)
宽度= 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