我在循环排斥处理中有一个小演示。 除了物体及其排斥器(鼠标)的那一刻外,它工作得很好 度数接近 360 | 0 区(或 PI | -PI )。
或 YouTube video
100% 是因为这个转变,但我不知道如何克服它。已经玩过模。
最佳答案
首先 - 我希望您不要在比较中混淆弧度和度数。
你的计算
float angleDist = abs(angle - repulsor.angle);
and later comparison with
inc=45 degrees
例如,如果一个角度为 359
而另一个角度为 1
,则 会出错。
您可以构建一些 if 条件或使用表达式:
angleDist = arrcos(cos(angle - repulsor.angle));
正确处理所有情况
关于algorithm - 在 0 和 360 度(或弧度-PI 和 PI)的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45380210/