【发布时间】:2011-03-23 20:55:11
【问题描述】:
这个问题最好用一个例子来解释:
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) 在路径上定义。然后 柯西积分公式说 我们地区的积分(即 4个分段积分的总和 我们知道怎么做) f(z)/(2 * π * i * (z - z0)) 是一个非常好的函数,它将与我们的原始函数相匹配 边界上的函数。
这个函数究竟做了什么?
【问题讨论】:
-
到目前为止,您所写的内容看起来很合理。至于函数的作用,当你完成后,
f(z)将是你的映射。在您的原始区域中取任何一点,您应该在新区域中获得一个点。一开始,您知道如何处理边界,但不知道其他任何地方。该积分在边界内的任何地方找到函数的值。 -
抱歉,我说错了。我的意思是公式 f(z)/(2 * π * i * (z - z0))。我对我应该在哪里插入什么感到有点困惑。我得到 z0 是我们的任意点,但是对于 f(z) 和 z,我只是选择路径上的任何点吗?这个公式实际上是使用积分来获得新位置吗?和“这是我们知道如何做的 4 个分段积分的总和”,所以我总结了 4 个边的积分,那在哪里插入?并且这个公式中的f(z)还是(1-s)Q1 + sQ2,还是我们现在说的是积分公式?
标签: math geometry coordinate-systems coordinate-transformation