给出一对(纬度,长度)和偏移纬度的经度

时间:2015-06-11 17:52:23

标签: c++ math opengl-es geometry latitude-longitude

在大地坐标系(wgs84)中,我有一对(纬度,经度)说(45,50)(60,20)。我还说,一对新的纬度,经度位于连接这两个的线上,并且偏离(45,50),即(45.1, x),即y = mx+c m = (lat1 - lat2)/ long1-long2) c = lat1 - m * long1 。我如何找到这个新观点?我试过的是应用直线方程

> calEvent.start
Moment {_isAMomentObject: true, _i: "2015-06-11T11:00:00", _f: "YYYY-MM-DDTHH:mm:ss", _isUTC: false, _pf: Object…}_ambigTime: false_ambigZone: false_d: Thu Jun 11 2015 11:00:00 GMT+0300 (EEST)_f: "YYYY-MM-DDTHH:mm:ss"_fullCalendar: true_i: "2015-06-11T11:00:00"_isAMomentObject: true_isUTC: false_isValid: true_locale: f_offset: 0_pf: Object__proto__: Moment

> dateTime.startDT
Moment {_isAMomentObject: true, _i: "Th, 11-06-2015 11:00", _f: "dd, DD-MM-YYYY HH:mm", _isUTC: false, _pf: Object…}_d: Thu Jun 11 2015 11:00:00 GMT+0300 (EEST)_f: "dd, DD-MM-YYYY HH:mm"_i: "Th, 11-06-2015 11:00"_isAMomentObject: true_isUTC: false_isValid: true_locale: Object_pf: Object__proto__: Moment

但这似乎给出了错误的结果。

2 个答案:

答案 0 :(得分:2)

你的问题是m的计算。你转过身了!

正常的公式是:

a = (y1 - y2) / (x1 - x2)

所以在你的情况下是:

m = (long2 -long1) / (lat1 - lat2)

所以你会得到m = -2

你也改变了c的计算。

正常是:

b = y1 - a * x1

所以你应该这样做:

c = long1 - m * lat1

所以你得到c = 140。

公式为:

long = -2 * lat + 140

另一种思考方式如下。结果是相同的,原因。

两个坐标之间的曲面线不是直线。它是在圆形物体(即地球)的表面上绘制的线。这将是一个环绕地球的圈子。

然而,该线上的所有坐标仍然会通过一条直线。

这是因为坐标表示从地球中心到您正在观察的点的矢量角度。将这两个角度与赤道(纬度)进行比较,并与格林威治(经度)进行比较。

因此,您需要设置一个描述该行所有坐标的公式。

在你的情况下,纬度从45到60,即增加15。

你的经度从50到20,即减少30。

所以你的公式将是:

(lat(t), long(t)) = (45, 50) + (15*t, -30*t) for t in [0:1]

现在你可以计算将要击中的t的值(45.1,x),之后你可以计算x。

答案 1 :(得分:1)

您使用的公式描述了2D cartesian coordinate system中的直线。

经度和纬度描述spherical coordinate system中的一个点。 球面坐标系不是笛卡尔坐标。

回答了类似的问题here

相关问题