【问题标题】:calculate angle between horizontal axis and two points计算水平轴和两点之间的角度
【发布时间】:2014-03-05 14:23:23
【问题描述】:

我需要计算 A 的 x 轴与 B 点之间的角度,其中 A 点是学校,B 点是学生宿舍。 我有学校和所有学生的经纬度 将计算水平轴和线段 [School, Student] = [A, B] 之间的所有角度。

我在 c# 中尝试过 Math.atan .. 但它计算两点之间的角度而不考虑 x 轴

这个方法对我有帮助吗?!

Cos(alpha) = (Lat B - Lat A) / 距离(AB)

其中 alpha 是我需要找到的角度

谢谢

【问题讨论】:

  • 使用Atan2 代替atan。

标签: c# math map


【解决方案1】:

我将假设您的纵向坐标表示每个点沿 x 轴的距离,而您的纬度坐标表示每个点沿 y 轴的距离。如果这是一个不正确的假设,请告诉我。

y
|                   (B)
|                   /|
|                  / |
|                 /  |
|   distance(AB) /   |
|               /    | (LatB-LatA)
|              /     |
|             /      |
|            /       |
|           /alpha   |
|        (A)----------
|          (LonB-LonA)
|
|
|__________________________________ x
0

然后,为了找到相对于 x 轴的角度,您应该应用以下规则之一:

sin(alpha) = (LatB - LatA) / distance(AB)
cos(alpha) = (LonB - LonA) / distance(AB)
tan(alpha) = (LatB - LatA) / (LonB - LonA)

通过使用sincostan 的倒数简单地重新排列方程之一,您应该能够找到以弧度表示的alpha。比如……

alpha = Math.Asin((LatB - LatA) / distance(AB));
alpha = Math.Acos((LonB - LonA) / distance(AB));
alpha = Math.Atan((LatB - LatA) / (LonB - LonA));

【讨论】:

  • 是的,就是这样!非常感谢:) @jaredk
猜你喜欢
  • 2011-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多