如何使几何跟随曲线?

Pie*_*ari 5 bezier curve scenekit swift

是否有可能制作一些精灵/物体来复制自己并弯曲成曲线?我做了一个图像来表明我的意思:

路

这里的曲线,可能是贝塞尔曲线路径为绿色,几何曲线显示为黑色.我希望精灵或对象(在左侧)复制自身并将其顶点与最后一个副本合并,而最后两个顶点跟随曲线.如果是的话,该怎么做?有关于这样的事情的文件吗?你做过这样的事吗?怎么样?

编辑:我不希望精灵或对象在路径中移动,但有点复制本身并将其自身与其副本合并.

use*_*321 2

是的,你想做的事情是可行的,并且你的绘图显示了它如何运作得相当好。伪代码看起来像这样:

curveLength = <length of entire curve>;
tileLength = <length of 1 tile>;
currentLength = 0;
while (currentLength < curveLength)
{
    currentTileLength = 0;
    startPt = prevPt = calculateBezierAt(0.0);
    for (t = delta; (t < 1) && (currentTileLength < tileLength); t += delta) // delta is up to you. I often use 1/100th
    {
        nextPt = calculateBezierAt(t);
        distance = distanceBetween(prevPt, nextPt);
        currentTileLength += distance;
        currentLength += distance;
        prevPt = nextPt;
    }
    endPt = prevPt;
    // Calculate quad here
}
Run Code Online (Sandbox Code Playgroud)

要计算每个四边形,您需要在起点和终点生成垂线。然后你的四边形就有 4 分。

请注意,我通过假设只有一个贝塞尔曲线来简化事情。通常,您会将它们中的许多连接在一起,因此迭代它们会比我上面所说的更棘手,但应该不会太难。

另请注意,如果拐角非常紧或者曲线自行循环,则可能会得到看起来很糟糕的结果。不过,如果您自己生成曲线,想必您会避免这种情况。