gpt4 book ai didi

javascript - 使用atan2的 Angular 动画

转载 作者:行者123 更新时间:2023-11-29 10:40:38 25 4
gpt4 key购买 nike

var diffx = (this.destination.x - pos.x), px = diffx / dist;
var diffy = (this.destination.y - pos.y), py = diffy / dist;
var angle = Math.atan2(diffy, diffx) - rot.z;

rot.set(0, 0, rot.z + angle / 24);

一个对象指向我的鼠标光标。我使用上面的代码以弧度计算 Angular ,并在几帧内“动画化” Angular 。但是,当 angle 变量从正变为负(PI 弧度)时,它会一直顺时针旋转到新的光标位置(如红色所示)。然而,我想要的路径是直接进入新 Angular (绿色箭头)。

enter image description here

编辑:

这是我想出的,似乎可行。我可以改进吗?

            if(atan - this.lastAtan < -Math.PI)
atan += Math.PI * 2;
else if(atan - this.lastAtan > Math.PI)
atan -= Math.PI * 2;
this.lastAtan = atan;

var zrot = rot.z + (atan * 12 * Game.dt);
rot.set(0, 0, zrot % (Math.PI * 2));

最佳答案

您必须考虑到 atan2 的输出仅在 -pi 到 +pi 范围内。如果 atan2 的输出与您之前的 Angular 之间的差异大于 pi,那么您就知道发生了一些环绕,您必须通过加/减 2*pi 来纠正它。

关于javascript - 使用atan2的 Angular 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29939062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com