为什么我的动画没有更新

时间:2014-01-17 16:59:56

标签: javascript 3d glowscript

我试图扩展他们的二进制行星模拟演示试图GlowScript。当然,我想将问题扩展到第三(或更多)行星。在这个过程中,我将对主循环中各个变量的引用移动到数组中的引用。因此,当循环运行时,动画将不会进展。

这是前面的代码(动画作品):

while (true) { 
    rate(200,wait)

    var dist = dwarf.pos - giant.pos
    var force = G * giant.mass * dwarf.mass * dist / pow(mag(dist),3)
    giant.p = giant.p + force*dt
    dwarf.p = dwarf.p - force*dt

    var stars = [giant, dwarf]
    for (var _star in stars) {
        var star = stars[_star]
        star.pos = star.pos + (star.p/star.mass) * dt
    }
}

和后代码(动画不起作用):

var stars = [giant,dwarf,moon]
while (true) { 
    rate(200,wait)

    for(var i=0; i<stars.lenght; i++)
    {
        for(var j=i+1; j<stars.length; j++)
        {
            var dist = stars[i].pos - stars[j].pos
            var force = G*stars[i].mass*stars[j].mass*dist/pow(mag(dist),3)
            stars[i].p = stars[i].p + force*dt
            stars[j].p = stars[j].p - force*dt
        }
        stars[i].pos = stars[i].pos + (stars[i].p/stars[i].mass) * dt
    }

    time += dt    
}

在更新stars[i]时,我可以判断它最好不会更新相应的sphere对象。也许有人可以帮我修复代码。

Program Source Link您可以在其中查看来源并运行它。

0 个答案:

没有答案