在大地坐标系(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
但这似乎给出了错误的结果。
答案 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。