这个问题最好用一个例子来解释:
http://dl.dropbox.com/u/1013446/distortedcoordinatespace.exe
将红色小方块拖放到右侧小方块内。它对应于左侧大四边形中的红色正方形。您还可以拖动左侧大四边形的 4 个角,以查看它如何占据正方形内空间的扭曲版本。
给定正方形 4 个点的绝对坐标和正方形内任意点的坐标,将点的坐标重新映射到任意四边形很简单。
我想要的是能够从任意四边形开始,并且能够做同样的事情,将四边形转换为任何其他 4 边形,但保持点的相对扭曲位置,
所以给定2个不规则四边形A和B中的每一个的4个绝对坐标,我如何转换点C的坐标给定它的绝对坐标?
也很有帮助,是我在这里缺少的关于这些转换的名称的任何术语,因为我想更多地研究它们
好的,我正在尝试实施 btilly 的解决方案,这就是我目前所拥有的:
#include<complex>
#define cf complex<float>
cf i=sqrt(complex<float>(-1));
cf GetZ(float x,float y)
{
return cf(x)+(cf(y)*i);
}
cf GetPathIntegral(cf p1,cf p2,cf q1,cf q2, int n)
{
cf sum;
for (int index=0;index<=n;index++)
{
cf s=cf(float(index)/float(n));
cf weight;
if (index==0||index==n)
weight=1;
else if(index%2)
weight=4;
else weight =2;
sum+=(((cf(1)-s)*q1)+(s*q2))*(p2-p1)*weight;
}
return sum/cf((3.0*(n-1.0)));
}
在我从这里继续之前,我想确保到目前为止我是对的......
另外,这一段让我有点困惑:
好的,所以我们可以进行路径积分。那有什么价值呢?好吧,假设我们在我们区域的某个地方随机取一个点 z0 = x + iy。假设在路径上定义了 f(z)。然后柯西积分公式说,f(z)/(2 * π * i * (z - z0)) 的我们区域周围的积分(这是我们知道如何做的 4 个分段积分的总和)确实是很好的函数,它将与我们在边界上的原始函数相匹配。
该功能究竟做了什么?