抽取了個函式,測試過可以執行,小白拿去使用。
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...