0

我在单个变量上定义了一个二维路径:

var point = path(t);  // --> [0.113, 0.883]

迭代tfrom01I 可以枚举整个路径,然后绘制连续的对[x,y]。路径在 x 轴上没有重叠,所以理论上我应该能够从中创建一个函数,尽管目前我还没有找到确切的方法。如果我只是向下投影到 x 轴并取 [x,y] --> y,那么图表是错误的,因为我们正在通过 x 和 y,所以如果有时间花在通过 y 轴而不是x 这在投影到一维时不会反映出来。如何构建将我的二维路径表示为从 x 到 y 的映射的函数?

编辑:这是曲线的图像(白线是贝塞尔样条路径(t)-> [x,y],灰色圆圈是原始数据点,绿线是我用来生成的原始关键帧数据曲线。忽略其余的线):

在此处输入图像描述

4

2 回答 2

0

您的函数不重叠这一事实并不那么重要,但也许您可以将其映射到空间索引或空间填充曲线?莫顿曲线减小了尺寸,是自回避和不重叠的曲线。形状就像 az 曲线,它是分形维数,这意味着它是近似值?它经常用于地图应用程序:http: //msdn.microsoft.com/en-us/library/bb259689.aspx和这里:http ://www.drdobbs.com/database/space-filling-curves-in-geospatial -应用/184410998

于 2013-06-05T19:44:50.243 回答
0

我终于想通了!我做了一个二分搜索算法,它尝试 path(x) 并确定 [x,y] 对中返回的 x 与所寻找的 x 之间的差异。然后它增加一半的差异并再次尝试。给定一个 epsilon,这会在对数时间内逼近正确的 [x,y] 对!

如果有人想要,我有代码。

编辑:这是代码(用于二进制搜索部分):

function buildBinary(at, epsilon) {
  return function(x) {
    var guess = x;
    var near = at(guess);
    var approx = near[0];
    var diff = x - approx;

    while (Math.abs(diff) > epsilon) {
      guess = guess + diff * 0.5;
      near = at(guess);
      approx = near[0];
      diff = x - approx;
    }

    return near[1];
  }
}

at是函数 path(t) -> [x,y] 并且epsilon是可接受的接近程度。效果很好!

于 2013-06-14T19:03:06.877 回答