如何在 p5.js 中临时乘以向量?
How do I temporarily multiply a vector in p5.js?
我有一个名为 Boid 的对象,它有一个位置和一个速度矢量(运动方向)。更新位置时,我想应用一个用户可以控制的因素。但是,以下脚本不起作用:
let speedFactor = 0.1; //ranges from 0 to 2
class Boid {
constructor(x, y) {
this.position = createVector(x, y);
this.velocity = p5.Vector.random2D();
}
update() {
this.position.add(this.velocity * speedFactor); // doesn't work
}
}
我也尝试过使用 speedFactor = createVector(0.1, 0.1)
或 = [0.1, 0.1]
之类的东西,但它不起作用。
如果我使用 this.velocity.mult(speedFactor)
,这将影响我不想要的速度矢量(例如,因为如果 speedFactor == 0
,this.velocity
会变得混乱)。我试图通过使用 Object.assign({}, this.velocity)
或 JSON.parse(JSON.stringify(this.velocity))
创建一个速度矢量的副本来克服这个问题,但不知何故这两个都不起作用。
大多数时候我收到错误 p5.Vector.prototype.mult: x, y, or z arguments are either undefined or not a finite number
。
在这里做什么最好?
复制向量,然后用正常的mult
方法相乘
let speedFactor = 0.1; //ranges from 0 to 2
class Boid {
constructor(x, y) {
this.position = createVector(x, y);
this.velocity = p5.Vector.random2D();
}
update() {
this.position.add(this.velocity.copy().mult(speedFactor));
}
}
我有一个名为 Boid 的对象,它有一个位置和一个速度矢量(运动方向)。更新位置时,我想应用一个用户可以控制的因素。但是,以下脚本不起作用:
let speedFactor = 0.1; //ranges from 0 to 2
class Boid {
constructor(x, y) {
this.position = createVector(x, y);
this.velocity = p5.Vector.random2D();
}
update() {
this.position.add(this.velocity * speedFactor); // doesn't work
}
}
我也尝试过使用 speedFactor = createVector(0.1, 0.1)
或 = [0.1, 0.1]
之类的东西,但它不起作用。
如果我使用 this.velocity.mult(speedFactor)
,这将影响我不想要的速度矢量(例如,因为如果 speedFactor == 0
,this.velocity
会变得混乱)。我试图通过使用 Object.assign({}, this.velocity)
或 JSON.parse(JSON.stringify(this.velocity))
创建一个速度矢量的副本来克服这个问题,但不知何故这两个都不起作用。
大多数时候我收到错误 p5.Vector.prototype.mult: x, y, or z arguments are either undefined or not a finite number
。
在这里做什么最好?
复制向量,然后用正常的mult
方法相乘
let speedFactor = 0.1; //ranges from 0 to 2
class Boid {
constructor(x, y) {
this.position = createVector(x, y);
this.velocity = p5.Vector.random2D();
}
update() {
this.position.add(this.velocity.copy().mult(speedFactor));
}
}