如何将 P5-属性 添加到 s.Vector 对象?

How can I add the P5-property to a s.Vector object?

我有两种不同的

  let diff = nearby.boid.velocity
  console.log(diff.p5) //undefined
  diff =  p5.Vector.div(diff, nearby.d*nearby.d)
  steering.add(diff)

第二个:

  let diff = p5.Vector.sub(this.position, nearby.boid.velocity);
  console.log(diff.p5) // an object with the p5-property
  console.log('')
  diff.div(nearby.d*nearby.d);
  steering.add(diff);

我想规范化代码,以便将其放入函数中。在第一个示例中,我不能使用 diff.div,而在第二个示例中,我不能使用 p5.vector.div。 p5.vector.sub 正在添加一个 p5 属性,我可以不做减法吗?

我对您要尝试做的事情有点困惑:为什么您的函数中需要 p5 引用?为什么不能在第二个示例中使用 p5.Vector.div()?你能 post 一个 small example 来显示你正在尝试做什么,以及为什么它不起作用吗?

请记住,函数有两个版本:静态和非静态。例如:

  • p5.Vector.div()是静态的,带两个参数,returns一个结果,不修改参数。
  • myVectorInstance.div() 是非静态的。它接受一个参数,并将 myVectorInstances 修改为包含结果。

如果你想创建一个不影响参数的函数,那么你可能想使用静态版本。

如果你很好奇,可以看看p5.Vectorhere的代码。看起来它在内部使用 p5 引用,使用 p5.toRadians()p5.fromRadians() 函数在度数和弧度之间进行转换。我不知道为什么 p5.Vector 的某些实例会填充它而其他实例不会填充它,但这似乎是您不应该依赖的实现细节。