首页 > 解决方案 > p5.Vector 不考虑角度模式

问题描述

我注意到在旋转向量时,即使在我angleModeDEGREES. 此行为仅出现在使用new p5.Vector语法声明的向量中,而 usingcreateVector避免了它。

最小可重现示例:(粘贴到 p5 网络编辑器或 OpenProcessing 中)

function setup() {
    createCanvas(400, 400)
    translate(100, 100) // To see the effect more clearly
    angleMode(DEGREES)
    let v = new p5.Vector(1, 0)
    line(0, 0, v.x * 50, v.y * 50)
    v.rotate(HALF_PI)
    line(0, 0, v.x * 50, v.y * 50)
}

请注意,旋转仍以弧度进行。如果您替换new p5.Vector为,createVector则问题消失。为什么是这样?

标签: javascriptprocessingp5.js

解决方案


由于数学上的函数类似sin()被影响,没有充分的理由不p5.Vector.rotate应该被影响。
但是,它并不打算像您那样构建一个向量。你应该使用createVector()来创建一个向量。此函数不仅创建对象,而且设置所有内部属性,以便对象按预期运行。

此行为未直接解释为rotate(),但记录为heading()

计算该向量的旋转角度(仅限 2D 向量)。p5.Vectors创建 usingcreateVector()将考虑电流angleMode并相应地以弧度或度数给出角度。


推荐阅读