如何解决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 举报,一经查实,本站将立刻删除。