我需要找到以度数表示的车辆转向角度。位置点等间隔更新(1秒)。因此,在转弯过程中,设备会生成大约4-5个点。我在图片上用示意图显示了这一点。
能否使用位置信息计算转向角度?如果可以,如何计算?
我的尝试:
1. 从点3、4和点1、2创建两个几何向量,然后找到这些向量之间的角度。 我计算向量的坐标为Vector1(lat2-lat1; lon2-lon2)。 不确定这种方法是否适用于位置坐标。 2. 使用location1.bearingTo(location2)。 但是,这并没有给出预期的结果。似乎它提供了“指南针”结果。也许我可以用它来做些什么,但我不确定。 3. 还尝试了一些三角公式,例如这里,这里或这里。 它们都没有给出预期的角度。
编辑:解决方案 接受的答案非常好。 但是为了完成答案,我必须展示angleDifference方法。 这个对我有用:
我将在列表中添加点,直到有四个点,并计算第一个点和第四个点之间的角度差以获得更好的结果。
希望这对某个人有所帮助!
能否使用位置信息计算转向角度?如果可以,如何计算?
我的尝试:
1. 从点3、4和点1、2创建两个几何向量,然后找到这些向量之间的角度。 我计算向量的坐标为Vector1(lat2-lat1; lon2-lon2)。 不确定这种方法是否适用于位置坐标。 2. 使用location1.bearingTo(location2)。 但是,这并没有给出预期的结果。似乎它提供了“指南针”结果。也许我可以用它来做些什么,但我不确定。 3. 还尝试了一些三角公式,例如这里,这里或这里。 它们都没有给出预期的角度。
编辑:解决方案 接受的答案非常好。 但是为了完成答案,我必须展示angleDifference方法。 这个对我有用:
public int getAngleDifference(int currentAngle){
int r = 0;
angleList.add(currentAngle);
if (angleList.size() == 4) {
int d = Math.abs(angleList.get(0) - angleList.get(3)) % 360;
r = d > 180 ? 360 - d : d;
angleList.clear();
}
return r;
}
我将在列表中添加点,直到有四个点,并计算第一个点和第四个点之间的角度差以获得更好的结果。
希望这对某个人有所帮助!
vector.vector
在sqrt(vect.vect)
中代表什么?据我所知,它应该是一个点积值。但是,vect1.vect2
和vector.vector
有什么区别呢?可能是我太蠢了。 - AnZ