gpt4 book ai didi

android - 使用位置查找运动转角

转载 作者:可可西里 更新时间:2023-10-31 22:03:33 26 4
gpt4 key购买 nike

我需要找到以度为单位的车辆转弯角度。

Problem description

位置点以相等的间隔(1 秒)更新。因此,设备在转弯时获得 4-5 分。我在图片上示意性地展示了它。

是否可以使用位置计算转弯角度?如果可能,如何计算?


我尝试过的:

  1. 分别从点 3、4 和点 1、2 创建两个几何向量,并找出这些向量之间的角度。我计算的矢量坐标,如 Vector1 (lat2 - lat1; lon2 - lon2)。不确定这种方法是否适用于位置坐标。
  2. 使用location1.bearingTo(location2)。但这并没有给出预期的结果。似乎它给出了“指南针”结果。也许我可以以某种方式使用它,但不确定。
  3. 还尝试了一些三角函数公式,例如 hereherehere .他们没有给出预期的角度。

编辑:解决方案接受的答案效果很好。但要完成答案,我必须展示 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;
}

我在列表中添加点直到有 4 个点,然后计算第 1 个点和第 4 个点之间的角度差以获得更好的结果。

希望对大家有所帮助!

最佳答案

vect1 = LatLon2 - LatLon1; // vector subtraction

vect2 = LatLon4 - LatLon3;

根据定义,点积具有以下属性:

vect1.vect2 = ||vect1||*||vect2||*Cos(theta)

这是符号的分割

术语 vect1.vect2vect1 的点积和 vect2 .

点积的一般形式可以按分量分解 v1 = <x1,y1>v2=<x2,y2>对于两个任意向量 v1v2点积将是:

v1.v2 = x1*x2 + y1*y2 

和一些任意向量的大小v是:

||v|| = sqrt(v.v); which is a scalar.

上面等价于欧几里得距离公式,分量为 x 和 y:

||v|| = sqrt(x^2 + y^2)

获取角度

查找 theta 的值给定两个向量 vect1vect2 :

theta = Math.ArcCos(vect1.vect2/(||vect1||*||vect2||))

关于android - 使用位置查找运动转角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31005915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com