微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

p5.Vector 不尊重angleMode

如何解决p5.Vector 不尊重angleMode

我注意到,在旋转向量时,即使在我用 angleMode 调用 degrees 之后,旋转也是以弧度完成的。此行为仅在使用 new p5.Vector 语法声明的向量时出现,而使用 createVector 可避免这种情况。

最小可重现示例:(粘贴到 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,v.x * 50,v.y * 50)
    v.rotate(HALF_PI)
    line(0,v.y * 50)
}

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

解决方法

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

此行为并未直接针对 rotate() 进行解释,但已针对 heading() 进行了记录:

计算此向量的旋转角度(仅限 2D 向量)。使用 p5.Vectors 创建的 createVector() 将考虑当前的 angleMode,并相应地以弧度或度数给出角度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。