我有一个带有x,y坐标的点列表。我知道如何获得sqrt(pow($x2 - $x1, 2) + pow($y2 - $y1, 2))
点与点atan2(y1 - y2, x1 - x2)
之间的距离。
如何计算点之间的相对角度(左,右,直)?所以,如果我在第1点,那么到2点的相对方向是什么,那么2到3,3到4等等......
感谢您的帮助!
答案 0 :(得分:2)
如果它在π/ 2和3π/ 2之间,它是直的 如果它大于3π/ 2或小于-3π/ 2,则为左转 如果它在-π/ 2和π/ 2之间,那就是右转。
这是一个图表:
{3π/2}-------{π/2}-------{π/4} | +-----[ +y]-----+ | | | | | | | | | {π} [-x] [0,0] [+x] {0} | | | | | | | | | +-----[ -y]-----+ | {-3π/2}-------{-π/2}------{-π/4}
答案 1 :(得分:0)
如果您知道从第2点到第1点以及第2点到第3点的角度,那么您知道如何使用atan2计算angle_to_3 - angle_to_1
,(或与下一个减去前一个角度的角度),还是我弄错了?左/右/直接只是将结果四舍五入。如果你想以一种艰难的方式做到这一点,你可以旋转你的点,使得从2到1的角度为0,但这似乎是不必要的错综复杂。
答案 2 :(得分:0)
考虑到你的驾驶方向的例子,左/右/直的概念只对当前的旅行方向有意义。这就是为什么SatNav单位从第一个回合开始,或者“当你离开它的地图时,请继续前进到计划路线”,而不是立即左转/右转等......
如果您知道x1,y1到x2,y2的角度,那么您可以使用角度x2,y2到x3,y3指示下一个点的相对方向。如果下一个角度大于那么它可能是一个左转弯,较少的是一个右转弯,并且在第一个角度附近的一定范围内它将是直线转弯。