POJ 3304 直線與線段相交)

2021-10-03 12:01:57 字數 959 閱讀 8135

題目:poj3304

給定n條線段,找出一條直線,能與所有的線段有乙個交點(可以在端點處相交)。

思路:如果存在這麼一條直線,必定過平面中的兩個點,所以任意窮舉兩個點所在的直線與所有線段判斷是否相交。

sample input

3

21.0 2.0 3.0 4.0

4.0 5.0 6.0 7.0

30.0 0.0 0.0 1.0

0.0 1.0 0.0 2.0

1.0 1.0 2.0 1.0

30.0 0.0 0.0 1.0

0.0 2.0 0.0 3.0

1.0 1.0 2.0 1.0

sample output

yes!

yes!

no!

**:

#include #include #include using namespace std;

const int n=210;

const double eps=1e-8;

int sig(double d)

struct pointpoint[n];

int n;

//差積

double cross(point &c,point &a,point &b)

//判斷直線a,b是否與線段cd相交

//0 不想交

//1 規範相交

//2 不規範相交

int seglinecross(point &a,point &b,point &c,point &d)

//判斷直線與線段所有線段是否相交

bool test(point &a,point &b)

//測試所有倆點構成的直線

bool find()

int main()

return 0;

}

poj 3304 判斷直線與線段相交

傳送門 題意 給你一些線段,然後問你是否存在一條直線,把這些線段投影到直線上,所投影與原線段至少有1個公共點。思路 由題意可得原線段與直線符合條件的直線至少有1個公共點,所以就轉化成是否有直線與所有線段相交的問題了。列舉任意兩個不同端點作為直線上兩點確定一直線判斷是否與所有直線相交即可。吐槽 距離小...

poj3304 計算幾何 線段與直線相交

題意 給定n條線段,確定是否存在一條直線,使得這n條線段在這條直線上的射影具有公共點 可將問題轉化為是否存在一條直線經過所有的線段,證明見依然的部落格 include include include using namespace std const double eps 1e 8 const in...

POJ 3304 計算幾何 直線與線段相交

題意 給出n條線段,判斷是否存在有一條直線,滿足所有的線段在直線上投影後至少有乙個公共點 等價於 給出n條線段,問你是否存在一條直線,使得每個線段與該直線至少有乙個交點。題解 嗯,猜測直線一定過至少兩個端點。若不過某線段端點,則可以通過平應找到過乙個端點的位置 若過乙個端點,則可以旋轉使其通過兩個端...