我发现了一篇关于如何计算将最短距离旋转到直角的方向的帖子。但现在我想检查它是否旋转过多。
以下是代码:
if (angle < angleTo)
{
if (Math.abs(angle - angleTo) < 180)
{
angle += deltaSeconds * 200;
//I want to test here
}
else
{
angle -= deltaSeconds * 200;
//here
}
}
else if (angle > angleTo)
{
if (Math.abs(angle - angleTo) < 180)
{
angle -= deltaSeconds * 200;
//here
}
else
{
angle += deltaSeconds * 200;
//and here
}
}
答案 0 :(得分:0)
我没有检查你是否将角度旋转得太远,而是预先计算距离,如果距离小于deltaSeconds * 200
,则只需旋转剩余的距离(或只是设置angle = angleTo
)。
此外,您可能希望确保angle
保持在边界[0,360]内。
编辑:以下代码将为您提供距离:
double distance = Math.abs(angle - angleTo);
if(distance > 180) {
distance = 360 - distance;
}
//If you want, you could replace the if-statement with this line:
//distance = (distance > 180) ? 360 - distance : distance;