巨蟒龟-如何确定最短转弯方向



我有一个海龟对象t,我想把它转向中心点。我使用t.p heading()来获取海龟的当前方向,使用t.p towards(0,0)来获取所需的方向。我如何判断左转还是右转更短?

最后,我想让海龟在中心点的方向上旋转,但不是让它直接指向中心。所以我需要知道哪个方向会使它更接近中心标题。

只要减去角度就可以得到你需要转弯的相对角度,也就是

turn = t.towards(0, 0) - t.heading() 

headingtowards返回的角度在数学上总是正的(逆时针),所以像上面这样取差值就像从heading开始测量角度跨度,然后逆时针旋转,直到到达towards方向。如果这个张成的空间穿过0°= 360°的直线,那么结果的差将是负的,因为360°的值基本上在这条直线上就会消失为0°。通过添加360°的完整圆来修复此问题。在单个公式中,这可以用模数来完成:

turn = (t.towards(0, 0) - t.heading()) % 360

现在你有了从heading逆时针转到towards所需的正角度。只需检查它是否大于180°,就可以知道向左转是否比向右转快。

最新更新