線段相交之精粹和交點問題

2021-07-11 20:32:35 字數 1132 閱讀 8272

博主今天聽了一句話,感覺好有內涵。。。「待你征服宇宙,給我乙個地球可好」 。。。。

/*

線段相交 2016/5/16

*/#include #include #include #define def 1e-6

//點struct point

;//直線

struct line

;int direction(point* pi,point* pj,point* pk)

//判斷點是否在pi和pj為對角點的矩形裡

bool onsegment(point* pi,point* pj,point* pk)

else

if(pi->y > pj->y)

else

return (minx <= pk->x)&&(maxx >= pk->x)&&(miny <=pk->y)&&(maxy >= pk->y);

}//判斷線段相交

bool segmentintersect(point* p1,point* p2,point* p3,point* p4)

/*求直線交點

ax + by + c = 0

若1、ax + by = e

2、cx + dy = f

交點座標(x,y)

coll = ad - bc; //判斷共線 coll = 0

x = (ed - bf)/coll;

y = (af - ec)/coll;

已知直線上兩點求直線的一般式方程

已知直線上的兩點p1(x1,y1) p2(x2,y2), p1 p2兩點不重合。則直線的一般式方程ax+by+c=0中,a b c分別等於:

a = y2 - y1

b = x1 - x2

c = x2*y1 - x1*y2

*///判斷共線

bool segmentcollineation(double a ,double b,double c,double d)

//求交點

void segmentcrossover(point* p1,point* p2,point* p3, point* p4)

else

}int main()

求兩直線交點 判斷兩線段相交 求線段交點

點的結構 struct point point double x,double y 線段的結構 struct egde egde point a,point b 建立的邊,存在的線段求兩直線 線段 交點 void getpoint point p1,point p2,point p3 point p...

判斷兩線段相交,並求交點

原文 include math.h include stdio.h double e 0.0001 struct point double min double x1,double x2 double max double x1,double x2 bool between double x,dou...

線段相交問題

判斷兩條直線是否相交,有兩個步驟確定 1 快速排斥。2 跨立實驗 啊啊啊,逼格好高 然而事實解法的逼格卻。一 快速排斥簡單的說就是確保他們能相交的基本的要求是滿足的 如上圖,明顯的,要兩個線段相交,就要豎直方向有重疊 min a.y,b.y max d.y,c.y max a.y,b.y min d...