先判斷兩條線段是否不平行(最好同時判斷是否有交點並且不平行,因為浮點運算不精確),然後計算兩條線段的交點。以下是c語言**:
#include#include#define eps 1e-8
#define zero(x) (((x)>0?(x):-(x))eps;
}//判兩直線平行
int parallel(point u1,point u2,point v1,point v2)
//判三點共線
int dots_inline(point p1,point p2,point p3)
//判兩線段相交,包括端點和部分重合
int intersect_in(point u1,point u2,point v1,point v2)
//計算兩線段交點,請判線段是否相交(同時還是要判斷是否平行!)
point intersection(point u1,point u2,point v1,point v2)
int main(void)
else
return 0;
}
判斷線段相交
1.叉積的計算 為了確定兩個點的相對位置,可以使用叉積 有兩個點p1和p2,如果p1xp2 0,則p1位於p2的順時針方向,p1xp2 0,則p1位於p2的逆時針方向。p1的座標為 x1,y1 p2的座標為 x2,y2 則p1xp2 x1y2 x2y1 確定連續線段左轉還是右轉的問題,也可是使用叉積...
怎樣判斷線段相交
一.向量基本知識 因為後面的計算需要一些向量的基本知識,這裡只是簡單的列舉如下,如果需要更加詳細的資訊,可以自行搜尋wikipedia或google。1.向量的概念 如果一條線段的端點是有次序之分的,我們把這種線段成為有向線段 directed segment 如果有向線段p1p2的起點p1在座標原...
C 判斷線段是否相交
c 判斷線段是否相交 線段是否相交,一種是從幾何上就是判斷兩個線段有沒有交點,還有一種是通過向量叉乘 也就是向量積 來判斷。因為向量叉乘的結果是乙個垂直於原來兩個向量的新向量,可以簡單的理解為垂直於原來兩向量所在平面的向量。我們來看圖。線段是否相交 線段p1p2的p1點 線段p1p2的p2點 線段q...