对不起,如果这是副本的话我试图在Google和Stackoverflow中找到这个,但是我找不到也许我不能正确地说出我要找的东西。
假设我有一个正方形,里面有点。我把它的点改成四边形如何在转换后获取点的新坐标?

最佳答案

一个单位平方(一个正方形有一个角在Orgo和1的边)存在一个规范的方法,因为一个点[cc]的坐标可以直接用于在一个倾斜的四边形内插值,该点在(x,y)(对应于Orgo(x=0,y=0)),q00为(x=0,y=1),q01为(x= 1,y= 0)和q10为(x= 1,y= 1)。转换点是bilinear interpolation

p = (1-x)*(1-y)*q00 + x*(1-y)*q10 + (1-x)*y*q01 + x*y*q11

概括起来就是将q11计算为多边形角的加权平均值(权重总和必须为1)。基于单位平方的四边形的权重为:
w = { (1-x)*(1-y); x*(1-y); (1-x)*y; x*y }
q = { q00; q10; q01; q11 }
p = w * q

其中p是点积。通过求解w * q来计算三角形的权重,其中p0 = w * q0是原始点,sum(w)=1是原始角点。
多边形的一般情况有多个解一种非常有效的方法(在我做的一个简单测试中)是从覆盖给定点的多边形的所有角的三元组中形成三角形,计算三角形的权重,并将它们在所有角上的组合权重用作p0中的q0

关于algorithm - 内有点的多边形变换算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28658516/

10-12 06:27