我需要计算 A 的 x 轴和 B 点之间的角度,其中 A 点是学校,B 点是学生宿舍。我有学校和所有学生的经纬度 所有的角度都将计算在水平轴和 [School, Student] = [A, B] 线段之间。
我在 c# 中尝试过 Math.atan .. 但它计算两点之间的角度而不考虑 x 轴
这个方法对我有帮助吗?!
Cos(alpha) = (Lat B - Lat A) / 距离(AB)
其中 alpha 是我需要找到的角度
谢谢你
我将假设您的纵坐标表示每个点沿 x 轴的距离,而您的纬度坐标表示每个点沿 y 轴的距离。如果这是一个不正确的假设,请告诉我。
y
| (B)
| /|
| / |
| / |
| distance(AB) / |
| / | (LatB-LatA)
| / |
| / |
| / |
| /alpha |
| (A)----------
| (LonB-LonA)
|
|
|__________________________________ x
0
Run Code Online (Sandbox Code Playgroud)
然后,为了找到相对于 x 轴的角度,您应该应用以下规则之一:
sin(alpha) = (LatB - LatA) / distance(AB)
cos(alpha) = (LonB - LonA) / distance(AB)
tan(alpha) = (LatB - LatA) / (LonB - LonA)
Run Code Online (Sandbox Code Playgroud)
通过简单地利用的逆向重排方程的一个sin,cos或者tan,你应该能够找到alpha弧度。例如...
alpha = Math.Asin((LatB - LatA) / distance(AB));
alpha = Math.Acos((LonB - LonA) / distance(AB));
alpha = Math.Atan((LatB - LatA) / (LonB - LonA));
Run Code Online (Sandbox Code Playgroud)