計算幾何之判斷線段相交

2021-10-19 11:50:08 字數 1241 閱讀 5099

判斷線段相交可以用到之前講的判斷點與線段的位置關係的來實現。

兩條線段相交的充要條件是:

兩條線段都滿足「另一條線段的兩個端點分別位於當前線段的順時針方向和逆時針方向」,那麼這兩條線段相交。

這樣的話,就能用之前的ccw來解決了。

題目:cgl_2_b

ac**:

#include #include using namespace std;

#define counter_clockwise -1 //逆時針

#define clockwise 1 //順時針

#define online_back -2 //p2 p0 p1依次排列在一條直線上

#define online_front 2 //p0 p1 p2依次排列在一條直線上

#define eps 1e-8

class point

point(double x, double y)

double operator^(const point &p) const //叉乘

double operator*(const point &p) const //點乘

point operator*(const double &d) const

point operator/(const double &d) const

point operator-(const point &p) const

point operator+(const point &p) const

double sqr()

double abs()

double distance(const point &p)

/*void print()

*/};class line

line(point p1, point p2)

};int ccw(point p0, point p1, point p2) //判斷p2與線段p0p1的關係

}}bool intersect(line l1, line l2) //判斷線段是否相交。

//如果兩條線段都符合「另一條線段的兩個端點分別位於當前線段的順時針和逆時針方向」,那麼兩條線段相交

計算幾何之判斷線段相交

計算幾何 判斷線段相交 time limit 1000ms memory limit 65536k description 線段相交 linecross.pas c cpp 問題描述 基本問題 判斷二維平面上的兩條線段是否相交。注意 相交有很多種,這裡指的 相交 是指兩條線段恰好有唯一乙個不是端點的...

計算幾何之判斷線段相交

兩條線段可以看作是兩個向量 一條線段跨立另一條線段的條件是 一條線段的端點分別到另一條線段兩個端點構成的向量在該線段兩側 可能不相交 而兩條線段互相跨立,即相交,就可判斷。模板分享 include include include include define equals a,b fabs a b ...

計算幾何 判斷線段相交(一)

兩個線段的交點個數可能有0個 1個或者無數個 判斷兩個線段相交,可以按照如下步驟 計算叉積時異號 計算叉積時異號 3.下面是判斷線段相交的程式 include include using namespace std define min x,y x define max x,y x y x y co...