【发布时间】:2020-11-01 08:01:16
【问题描述】:
我有两组经度和纬度,我拼命想弄清楚A点从B点水平和垂直偏移了多少米。
我的目标必须是 +/-X 和 +/-Y 值——我已经通过 Location.distanceBetween() 获得了两点之间的最短距离....我想我可以将它与 Location 一起使用。 BearingTo() 通过基本三角函数找到我正在寻找的值。
我的想法是我可以使用方位作为角度 A、90 度作为角度 C 和 C 侧的长度(距离之间)来计算 A 侧(x 轴)和 B(y 轴)的长度,但结果并不令人印象深刻至少可以说大声笑
//CALCULATE ANGLES
double ANGLE_A;
ANGLE_A = current_Bearing; //Location.bearingTo()
ANGLE_A = ANGLE_A*Math.PI/180; //CONVERT DEGREES TO RADIANS
double ANGLE_C;
ANGLE_C = 90; // Always Right Angle
ANGLE_C = ANGLE_C*Math.PI/180; //CONVERT DEGREES TO RADIANS
double ANGLE_B;
ANGLE_B = 180 - ANGLE_A - ANGLE_C; // 3 sides of triangle must add up to 180, if 2 sides known 3rd can be calced
ANGLE_B = ANGLE_B*Math.PI/180; //CONVERT DEGREES TO RADIANS
//CALCULATE DISTANCES
double SIDE_C = calculatedDistance; //Location.distanceTo()
double SIDE_A = Math.sin(ANGLE_A) * SIDE_C /Math.sin(ANGLE_C);
double SIDE_B = Math.sin(ANGLE_B)*SIDE_C/Math.sin(ANGLE_C);
我注意到的是,无论我们如何移动,我的方位在两点之间变化很小,但请注意,我在 10 到 100 米的距离处进行了测试,它始终为 64.xxxxxxx,只有最后几位小数真正发生了变化。
我能找到的所有在线参考资料总是着眼于计算最短路径,虽然这个很棒的 site 参考了 x 和 y 位置,但它总是最终将它们再次组合成最短距离
非常感谢任何指向正确方向的指针!
【问题讨论】:
-
嗨科林。目前尚不清楚您是否在寻求数学或编程方面的帮助。如果您需要数学方面的帮助,您可能想在math.stackexchange.com 中发帖。如果它是您需要帮助的编程,请尝试创建minimal reproducible example
-
Programming - 适用于 Android Studio 的 Javascript,为什么我的方位几乎没有变化?我已经阅读了文档,但我不明白它实际上为我提供了什么角度。我相信 BearingTo() 函数会为我提供一个可以用来关联两个纬度/经度的角度
标签: java android geospatial latitude-longitude geo