计算水平轴和两点之间的角度

时间:2014-03-05 14:23:24

标签: c# math map

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

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

这种方法会帮助我吗?

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

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

谢谢

1 个答案:

答案 0 :(得分:3)

我将假设您的纵坐标表示每个点沿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));