java怎麼求點到線段的距離

2021-07-29 05:33:59 字數 1621 閱讀 5848

抽取了個函式,測試過可以執行,小白拿去使用。

public doublepointline_disp(doublexx,doubleyy,doublex1,doubley1,doublex2,doubley2)

//如果點(xx,yy到點x1,y1)這條邊短

if(a < b)

else

m = (xx - x1) / a;

if(m - 1 > 0.00001)

m = 1;

ang2 = math.acos(m);

if(y1 > yy)

ang2 = math.pi* 2 - ang2;//直線(x1,y1)-(xx,yy)與折x軸正向夾角的弧度

ang = ang2 - ang1;

if(ang < 0) ang = -ang;

if(ang > math.pi) ang = math.pi* 2 - ang;

//如果是鈍角則直接返回距離

if(ang > math.pi/ 2)

returna;

elsereturna * math.sin(ang);

}else//如果(xx,yy)到點(x2,y2)這條邊較短

m = (xx - x2) / b;

if(m - 1 > 0.00001)

m = 1;

ang2 = math.acos(m);//直線(x2-x1)-(xx,yy)斜率的弧度

if(y2 > yy)

ang2 = math.pi* 2 - ang2;

ang = ang2 - ang1;

if(ang < 0) ang = -ang;

if(ang > math.pi) ang = math.pi* 2 - ang;//交角的大小

//如果是對角則直接返回距離

if(ang > math.pi/ 2)

returnb;

elsereturnb * math.sin(ang);//如果是銳角,返回計算得到的距離

}}

點到線段的距離

最近由於工作任務的需要簡單研究了一下 1.可以列方程組,但太麻煩,繁瑣,不適合程式中執行 這種方法靠譜但還不夠精簡 3.用向量的方法,簡單實用,效率高。以下是我用as實現的 點到線段的距離 as 實現 var a point new point 0,0 線段起始點 var b point new p...

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

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

點到線段的距離(向量)

這種做法顯然可行,只是覺得比較繁瑣,想要更簡單一點的計算方式 二,向量做法,推薦看這篇部落格 我覺說得挺好的,看了很容易理解 我自己寫的 includeusing namespace std define ll long long const int maxn 1000 10 const ll mo...