Javascript 如何沿多边形移动对象

Javascript 如何沿多边形移动对象,javascript,language-agnostic,html5-canvas,processing,Javascript,Language Agnostic,Html5 Canvas,Processing,假设(比如说三角形),我想把一个物体从A移到B,然后从B移到C,再从C移到A。我该怎么做 我在谷歌上搜索了很多,但找不到一个围绕多边形移动对象(比如球)的例子。我知道,我可以用贝塞尔曲线来做,但对于一个简单的三角形或矩形,没有它怎么办?请给出一些伪代码或任何语言的代码。(更喜欢JavaScript/处理)。插值 您可以使用插值获得位置: x = x1 + (x2 - x1) * f; y = y1 + (y2 - y1) * f; 其中,x1,y1是您的第一个点,x2,y2是您的终点 f是一个

假设(比如说三角形),我想把一个物体从A移到B,然后从B移到C,再从C移到A。我该怎么做

我在谷歌上搜索了很多,但找不到一个围绕多边形移动对象(比如球)的例子。我知道,我可以用贝塞尔曲线来做,但对于一个简单的三角形或矩形,没有它怎么办?请给出一些伪代码或任何语言的代码。(更喜欢JavaScript/处理)。

插值 您可以使用插值获得位置:

x = x1 + (x2 - x1) * f;
y = y1 + (y2 - y1) * f;
其中,
x1,y1
是您的第一个点,
x2,y2
是您的终点

f
是一个介于0.0和1.0之间的值,用于确定您在线路上的位置(即0=开始,0.5表示中间,1=结束)

当您
f=1
时,只需转到多边形中的下一段,然后将
f
重置为0

//prepare first segment:

x1 = nextX1;
y1 = nextY1;
x2 = nextX2;
y2 = nextY2;

loop:
    f += speed;  /// f.ex. 0.01

    x = x1 + (x2 - x1) * f;
    y = y1 + (y2 - y1) * f;

    if f=1 then
        f = 0;
        x1 = nextX1;
        y1 = nextY1;
        x2 = nextX2;
        y2 = nextY2;

    repeat loop;
JavaScript中的示例(有关完整的工作示例,请参见上面的演示链接)


对于恒定速度,计算起点和终点之间的距离,并在距离上除以步长值(预定义的固定值),该距离用于
速度

,谢谢兄弟,你真是太棒了。
function loop() {

    /// leave a trace behind for demo
    ctx.clearRect(x + 1, y + 1, 6, 6);
    
    f += speed;
    
    if (f >= 1) {
        /// initialize next line in polygon (see demo)
        getNextSegment();
    }

    /// Here: get x and y based on interpolation       
    x = x1 + (x2 - x1) * f;
    y = y1 + (y2 - y1) * f;    

    /// draw something to show position
    ctx.fillRect(x, y, 8, 8);
    
    /// loop
    requestAnimationFrame(loop);
}