我设法让一个函数工作,它将计算并返回一个点与另一个点之间的角度。我把它称为lookAt
函数,因为它基本上导致一个变换看另一个变换。这是:
this.lookAt = function(target) {
var d = target.subtract(this.position)
this.rotation = Math.atan2(d.y, d.x) + Math.PI/2;
return this.rotation;
}
在此函数的上下文中,this
指的是具有变量rotation
(以弧度表示的旋转)和position
的周围对象,Vector2
类具有几个基本的数学函数并存储x
和y
值。 d
是通过调用变量Vector2
上的辅助函数创建的target
,它会从另一个Vector2
中减去一个π / 2
。
这按预期工作 - 如果我在一个对象上调用此函数,则旋转正确“查看”目标。但是,我想知道为什么我必须添加π / 2
(1弧度,正确?)。我从this question得到了原始等式,但答案没有将{{1}}添加到等式中,而我必须这样做。
有人可以解释这背后的数学吗?此外,我还没有那么多的三角学(除了我的代数课程向我介绍的那样),所以请解释一下,好像你正在和一个非常小的孩子交谈。 : - )