Math 只有两个已知顶点的矩形内的点定位
我正在开发一个js小部件,我遇到了一个定位问题,用我有限的几何知识或借助Wikipedia/google,我似乎无法解决这个问题 我有一个四边形的矩形,它是以一个角度定位的。我知道它的两个相反的顶点和宽高比。上面有一个点,坐标我也知道。 我需要找出该点距离矩形边的距离(宽度/高度的%s)。有可能吗?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) 和单位
有两个角
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