我对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();
中区分这两行。我很好奇为什么会这样绘制正方形。
答案 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());
}