線段相交(快速排斥實驗 + 跨立實驗)
阿新 • • 發佈:2017-05-19
file end 一個點 hint -i tput 實驗 strong 數據
Description
給定線段P1P2(P1和P2是線段的兩端點,且不重合)、P3P4(P3和P4是線段的兩端點,且不重合),判斷P1P2和P3P4是否相交。P1P2和P3P4相交,即指存在一個點P,它既落在P1P2上又落在P3P4上(含線段的端點)。
Input
輸入數據有多組,第一行為測試數據的組數N,下面包括2N行,每組測試數據含2行,第一行為P1P2的坐標值,第二行為P3P4的坐標值,比如下面的數據 表示P1、P2、P3、P4的坐標分別為:P1(0,0),P2(1,1),P3(2,2),P4(3,3)
Output
判斷每組數據中的線段P1P2和P3P4是否相交,如果相交輸出YES,否則輸出NO。每組數據輸出占一行。
Sample Input
20 0 1 12 2 3 30 0 2 00 0 1 3
Sample Output
NOYES
Hint
兩線段相交分為“規範相交”和“非規範相交”。 “規範相交”指的是兩條線段恰有唯一一個不是端點的公共點;而如果一條線段的一個端點在另一條線段上,或者兩條線段部分重合,則視為“非規範相交”,本題是“非規範相交”。
定義點坐標類型時需用double
Solve:
先快速排斥實驗,然後跨立實驗,跨立實驗就是判斷是否有兩個點在一條線段兩段,這個叉積判斷下就好了
兩個跨立基本就是長這樣
線段相交(快速排斥實驗 + 跨立實驗)