用点内部变换多边形的算法

时间:2015-02-22 13:46:35

标签: algorithm polygon

很抱歉,如果这是重复的话。我试图在谷歌和Stackoverflow中找到它,但我找不到它。也许我无法正确说出我在寻找的东西。

假设我有一个正方形,里面有积分。比我改变它的要点使四边形。如何在变换后获得点的新坐标? enter image description here

1 个答案:

答案 0 :(得分:1)

对于单位正方形(在原点和长度为1的边上有一个角的正方形)存在规范方法,因为点(x,y)的坐标可以直接用于在倾斜的四边形内插值,其中点为{ {1}}(对应于orig(x = 0,y = 0)),q00表示(x = 0,y = 1),q01表示(x = 1,y = 0 )和q10 for(x = 1,y = 1)。转换后的点是bilinear interpolation

q11

这种推广的一个概括是将p = (1-x)*(1-y)*q00 + x*(1-y)*q10 + (1-x)*y*q01 + x*y*q11 计算为多边形角的加权平均值(权重必须总和为1)。基于单位平方的四边形的权重是:

p

w = { (1-x)*(1-y); x*(1-y); (1-x)*y; x*y } q = { q00; q10; q01; q11 } p = w * q 是点积的地方。通过求解w * q的{​​{1}}来计算三角形的权重,其中p0 = w * q0是原始点,sum(w)=1是原始角点。

多边形的一般情况有多个解决方案。一种非常好的方法(在我做过的简单测试中)是从覆盖给定点的多边形中的所有角的三元组形成三角形,计算三角形的权重,并将它们的组合权重用于所有角点{{ 1}} p0