經緯座標系中求點到線段距離的方法

2021-07-03 06:50:02 字數 1362 閱讀 7828

在一些地圖的應用中(如求偏航),常常需要求乙個點到一條執行緒的距離,以判斷是否遠離航線。然而在經緯度座標中,並沒有類似直角座標系中的公式來計算。在經緯度中,一般應用最廣的公式是求兩點距離的方法,如何通過兩點之間的距離公式來達到計算出點到線段的方法呢,我們先來看在經緯度中求兩點距離的計算方法。

一、經緯度中求兩點距離的計算方法

網上有很多介紹該計算方法,此處不再 一一闡述。在北半球中:

c = sin(lata*pi/180)*sin(latb*pi/180) + cos(lata*pi/180)*cos(latb*pi/180)*cos((mlona-mlonb)*pi/180)

distance = r*arccos(c)*pi/180

注1:其中lona、lata、lonb、latb分別是a、b兩個點的經緯度值,其中三角函式的輸入和輸出都採用弧度值

注2:r(地球半徑)和distance單位是相同,如果是採用6378.137千公尺作為半徑,那麼distance就是千公尺為單位

c語言**:

double getdistancebtwp(double lona, double lata,double lonb, double latb)//根據兩點經緯度計算距離,x經度,y緯度

二、經緯座標中求點到線段的距離的方法

在經緯座標系中,求點c(lonc,latc)到以點a(lona,lata)和點b(lonb,latb)為端點的線段的距離d。此問題可以分為三種情況:

②ac與ab形成鈍角時,則距離d=線段ac的長度,如圖2;

③bc與ab形成鈍角時,則距離d=線段bc的長度,如圖3;

1、首先如何判斷是屬於哪種情況

我們可以利用勾股定理逆定理的推廣,假如ab、bc、ac的長度分別為a,b,c

①若b*b+c*c②若a*a+c*c③若a*a+b*b2、求圖1情況的距離d

我們希望可以通過距離公式即可求出距離d,從而聯想到海**式。

在海**式中,三角形的面積

三、計算方法總結

對於圖1情況以及計算出,對於圖2和圖3的計算均已轉換為兩個點之間的距離公式,此處不再累贅。因此,在經緯度座標系中,求點到線段的距離的c語言**如下:

//點pcx,pcy到線段pax,pay,pbx,pby的距離

double getnearestdistance(double pax, double pay,double pbx, double pby,double pcx, double pcy)

第一次發博文,不對之處敬請各位學者提出修改意見,不勝感激!

java怎麼求點到線段的距離

抽取了個函式,測試過可以執行,小白拿去使用。public doublepointline disp doublexx,doubleyy,doublex1,doubley1,doublex2,doubley2 如果點 xx,yy到點x1,y1 這條邊短 if a b else m xx x1 a if...

求點到直線 線段的距離 TS實現

如上圖所示,點c為直線ab外一點,cd ab,那麼cd的模長就是點c到直線ab的距離。所以求點到直線得距離,就是求cd得長度。作輔助線如上圖所示,要求得線段cd得長度,需要知道點d得座標,剩下求兩點距離就變得簡單了。為求得點d得座標。令a xa,ya b xb,yb c xc,yc d xd,yd ...

opencv中的畫素座標系與操作畫素的方法

opencv中畫素座標系的座標原點在影象的左上角,這種座標繫在結構體mat,rect,point中都是適用的。在point x,y 和rect x,y 中,第乙個引數x代表的是元素所在影象的列數,第二個引數y代表的是元素所在影象的行數。座標體系的x軸為影象矩形的上面那條水平線,從左往右 y軸為影象矩...