線段與圓是否相交

2021-07-23 03:34:11 字數 873 閱讀 3205

判斷圓和線段是否相交。分兩種情況:

推導過程如下:

線段所在直線方程的一般式為:ax+by+c=0;線段兩個端點a(x1,y1),b(x2,y2);圓心o(px,py),根據y=kx+z;那麼直線斜率k=y1-y2/x1-x2;然後再將點a帶入方程可得z=(x1y2-x2y1)/(x1-x2),然後轉化成一般式的形式則:

a=y1-y2,b=x2x1,c=x1y2-x2y1。

再根據點到直線距離公式:

餘弦定理:

if (dist1 > dist2) return 0;//點到直線距離大於半徑r

angle1 = (o.x - p1->x) * (p2->x - p1->x) + (o.y - p1->y) * (p2->y - p1->y);

angle2 = (o.x - p2->x) * (p1->x - p2->x) + (o.y - p2->y) * (p1->y - p2->y);

if (angle1 > 0 && angle2 > 0) return 1;//余弦都為正,則是銳角

return 0;

}

判斷線段是否與圓相交模板

判斷線段和圓是否相交 判斷圓和線段相交,分兩種情況 1.如圖a所示,當圓心與線段的距離大於圓的半徑時,線段與圓肯定不相交 推導過程 此處補充直線方程的五種形式 一般式為ax by c 0,它的優點就是它可以表示平面上的任意一條直線,僅此而已.斜截式y kx b,就不能表示垂直x軸的直線x a.點斜式...

線段是否相交

給定兩條線段,判斷是否相交 include include use sort include use fabs using namespace std struct point 點座標 struct line 線段屬性 void isintersect line line1,line line2 i...

利用向量判斷線段和圓是否相交

面試的時候被問到如何判斷扇形和圓是否相交,當時也是比較懵的,刷leetcode不會碰到這種問題。我大概分了幾個情況進行討論,並且用到了求點到直線的距離公式。面試官後來提示說從幾何的角度考慮,最好不要去用方程求解的角度去想,大概想到了向量點乘和叉乘,但是當時沒寫出來。後來在網上看部落格大部分也都是去解...