判斷圓和線段是否相交。分兩種情況:
推導過程如下:
線段所在直線方程的一般式為: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不會碰到這種問題。我大概分了幾個情況進行討論,並且用到了求點到直線的距離公式。面試官後來提示說從幾何的角度考慮,最好不要去用方程求解的角度去想,大概想到了向量點乘和叉乘,但是當時沒寫出來。後來在網上看部落格大部分也都是去解...