Math 只有两个已知顶点的矩形内的点定位

Math 只有两个已知顶点的矩形内的点定位,math,geometry,trigonometry,Math,Geometry,Trigonometry,我正在开发一个js小部件,我遇到了一个定位问题,用我有限的几何知识或借助Wikipedia/google,我似乎无法解决这个问题 我有一个四边形的矩形,它是以一个角度定位的。我知道它的两个相反的顶点和宽高比。上面有一个点,坐标我也知道。 我需要找出该点距离矩形边的距离(宽度/高度的%s)。有可能吗? 有两个角P1=(x1,y1)和P2=(x2,y2)和点Q,可以找到对角线长度 dx = (x2 - x1) dy = (y2 - y1) dlen = sqrt(dx^2 + dy^2) 和单位

我正在开发一个js小部件,我遇到了一个定位问题,用我有限的几何知识或借助Wikipedia/google,我似乎无法解决这个问题

我有一个四边形的矩形,它是以一个角度定位的。我知道它的两个相反的顶点宽高比。上面有一个点,坐标我也知道。 我需要找出该点距离矩形边的距离(宽度/高度的%s)。有可能吗?
有两个角
P1=(x1,y1)
P2=(x2,y2)
和点Q,可以找到对角线长度

dx = (x2 - x1)
dy = (y2 - y1) 
dlen = sqrt(dx^2 + dy^2)
和单位方向向量

dx = dx / dlen
dy = dy / dlen
和矩形的中心

cx = x1 + dx/2
cy = y1 + dy/2
宽度和高度(已知
r=w/h
比率)

现在我们需要长度边的方向
w
。请注意,给定的信息不允许从两种可能的情况中选择精确的矩形方向

对角线和边之间的角度

sina = r / sqrt(1 + r^2)
cosa = 1 / sqrt(1 + r^2)
侧向矢量

wx = dx * cosa - dy * sina
wy = dx * sina  + dy * cosa
第二个方向呢

wx' = dx * cosa + dy * sina
wy' = -dx * sina + dy * cosa
第二边向量

hx = -wy
hy = wx
现在我们可以用点积求p点在
W
H
两侧的投影长度

qx = q.x - x1
qy = q.y - y1

qw = qx * wx + qy * wy
qh = qx * hx + qy * hy
最后一个值是
W-H
基准中的坐标,因此值
qw
从“左侧”点的0变化到“右侧”点的
W
。您可以将这些值除以
w
h
得到百分比值


再次注意-有两个可能的矩形和相应的点的两个位置
Q

有两个大小相同的矩形可以适合这两个点。如果没有一些额外的信息,例如矩形左上角的点1,您将有两个解决方案。如果你知道点在哪个角,那么两点之间的距离给出了直角三角形的
hypot
,长度为W和H。从那里你可以解出所有感兴趣的点。
qx = q.x - x1
qy = q.y - y1

qw = qx * wx + qy * wy
qh = qx * hx + qy * hy