固定位置から 2 つの GPS 位置を結んだ線までの最も近い位置を見つけたい。図を使って説明してみました。すべての位置は GPS 座標です。位置 P から、位置 A と位置 B を結ぶ線までの最短距離、つまり、P からの線は、A と B を結ぶ線で 90 度になることを知りたいです。このための既存の実装または同じためのアルゴリズム。どうもありがとう。
私が計算するように言われた方法は、最初に GPS 位置をデカルト座標に変換することです。変換には、基準位置 (Q_Ref_longitude、Q_Ref_latitude) を使用します。
x=(longitude-reflong)*π/180*r_e, r_e radius of earth
y=artanh(sin(latitude))
Therefore the reference point has the Cartesian coordinates (0,artanh(sin(reflat))).
conv(refp)=(0,artanh(sin(reflat)))
All positions A,B, P are converted to (x,y) coordinate system
Calculation of the intercept point with reference Cartesian coordinates (x,y)∈R^2:
In the following context (vp) ⃗∈R^2 is the position vector of the P in reference Cartesian coordinates.
<a ⃗,b ⃗> is the dot product of two vectors a ⃗ and b ⃗.
(op2) ⃗ refers to position A
(op1) ⃗ refers to position B
(vp) ⃗ refers to position P
(op1) ⃗,(op2) ⃗,(vp) ⃗∈R^2
intPoint=[(<((op2)-(op1)),((vp)-(op1))>)/(<((op2)-(op1)),((op2)-(op1))>)]*((op2)-(op1))+(op1)
The intercept point has to be transformed back into GPS coordinates with the following inverse formula:
Iconv:R^2→[-180°,180°]×[-90°,90]
longitude=x+reflong
latitude=arcsin(tanh(y))
誰かがこの方法について知っていますか?私はこのようにしようとしましたが、負の値が得られます。