找到四边形中的等效点

时间:2016-10-01 14:44:35

标签: javascript math geometry 2d coordinates

我试图找到从一个四边形到另一个四边形的粗略等效点。

quadrilateral equivalent point

找到这一点的好方法是什么?

正确方向的任何信息都会很棒。

由于

2 个答案:

答案 0 :(得分:0)

让点为[P1, P2, P3, P4]并假设它们通过[Q1, Q2, Q3, Q4]形式的仿射变换转换为x -> Mx + b,其中M2x2矩阵和b是一个常量向量。我们的目的是找到M并将转化应用到P以获取Q

允许v1 = P2 - P1v2 = P3 - P1w1 = Q2 - Q1w2 = Q3 - Q1。然后,M是将[v1, v2]应用于[w1, w2]的线性转换。查找M的一种方法是计算矩阵乘积

M = S * T

其中S2x2矩阵,其列为向量w1w2T列为v1v2的矩阵。

关于位移矢量b,可以将其计算为

b = Q1 - M * P1

这里的澄清是,只有当第四点与转换一致时,所有这一切都是正确的,即,如果

M * P4 + b = Q4

否则Q - 四边形不是P - 四边形的仿射变换。

答案 1 :(得分:0)

您可以找到该点与第一个四边形相对应的一般重心坐标,然后将重心坐标应用于第二个四边形,以找到"等效的"点。

有许多不同的方法来计算针对四边形(或针对n边多边形)的点的一般重心坐标。其中之一是Wachpress坐标,仅在多边形为凸面时才有效。对于具有顶点V0,V1,... Vn:

的凸多边形

enter image description here

我们可以计算多边形内P点的Wachpress坐标为

enter image description here

其中A(a,b,c)是三角形abc的有符号区域。

然后,我们可以计算P的重心坐标

enter image description here

对于具有顶点V * i(或在您的情况下为四边形)的新多边形的等效点P *可以计算为

对于i = 0~n,P * = \ summation(Wi * V * i)。