gpt4 book ai didi

java - 如何标准化 -π 和 π Java 之间的角度

转载 作者:行者123 更新时间:2023-12-02 04:54:38 25 4
gpt4 key购买 nike

我在获得标准化 float 以平滑旋转某些 Sprite 时遇到问题。我正在使用插值来旋转我的 Sprite 。在旋转的某个点, Sprite 会跳跃,每次都在同一位置。

name.angle = (name.getBody().getTransform().getRotation() * alpha + name.prevAngle * (1.0f - alpha));

我在网上查找并找到了几种方法来规范 -pi 和 +pi 之间的角度,但我无法让它们在我的情况下工作。

以下内容无效

if (name.angle > Math.PI)
name.angle += 2 * Math.PI;
else if (name.angle < -Math.PI)
name.angle -= 2 * Math.PI;

以下内容有效

name.angle = name.angle < 0 ? MathUtils.PI2 - (-name.angle % MathUtils.PI2) : name.angle % MathUtils.PI2;

最佳答案

在您编写的第一个代码 fragment 中

if (name.angle > Math.PI)
name.angle += 2 * Math.PI;

这表示“如果 name.angle 太大,请将其变大”。我通过将 += 更改为 -= (并将 -= 更改为 += 来修复此问题)少量)。我还将 if 替换为 while。这样,如果初始角度太大/太小超过 2 pi,它仍然可以工作。正确的代码是:

double pi = Math.PI;
while (angle > pi)
angle -= 2 * pi;
while (angle < -pi)
angle += 2 * pi;

关于java - 如何标准化 -π 和 π Java 之间的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28909130/

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