p5.j​​s-更改两条代码行的顺序会更改绘图方块的行为

时间:2018-08-04 15:11:48

标签: drawing p5.js drawing2d

我对map有一个奇怪的问题。基本上,有一个重力源(红色正方形)和一个蓝色正方形(在代码中称为像素)围绕红色正方形旋转。 p5.js函数在时间上迈出了一步,并且对两个对象进行了物理处理,proc()函数仅绘制了这两个正方形。问题是关于我的sketch.js文件。一切正常时:

draw()

它运作良好,但是在以下情况下:

env.draw();
env.proc();

它的工作非常奇怪。 以下是快速预览:

运作良好:http://home.elka.pw.edu.pl/~eprokopc/goodGrav/index.html

工作不佳: http://home.elka.pw.edu.pl/~eprokopc/badGrav/index.html

Github回购: https://github.com/kekore/BadGravity

两个示例仅在env.proc(); env.draw(); 中区分这两行。我很好奇为什么会这样绘制正方形。

1 个答案:

答案 0 :(得分:1)

大小取决于“ draw”和“ proc”的调用位置而变化的“怪异”行为是由Vector类对scaleTo的调用引起的。 Vector scaleTo调用scale,即使Vector具有自己的scale函数,该调用也会调用p5 scale函数。

class Vector{
    constructor(initX,initY){
        this.x = initX;
        this.y = initY;
    }
    scale(a){
        this.x = this.x * a;
        this.y = this.y * a;
    }
    scaleNC(a){
    return new Vector(this.x*a,this.y*a);
    }
    scaleTo(len){
        scale(len/this.length());
    }
}

如果所需的行为是scaleTo调用Vector.scale,请修改scaleTo:

scaleTo(len){
    this.scale(len/this.length());
}