注意:線段完全在矩形內也是相交,注意輸入。
解法:分別判斷線段是否跟矩形的四條邊相交,再判斷線段的兩個端點是否都在矩形內
#include#include#include#include#include#include#include #includeusing namespace std;
#define inf 2147483646
#define pi 3.1415926535898
#define n 33
#define ll __int64
struct point
;double xmulti(point p0,point p1,point p2)
bool isjiao(point s1,point e1,point s2,point e2)//線段與邊相交
point a,b,c,d,e,f;
int main()
if(xe>=x&&xe<=xx&&ye>=y&&ye<=yy)
a.x =x;a.y=yy;
b.x=x;b.y=y;
c.x=xx;c.y=y;
d.x=xx;d.y=yy;
e.x=xs;e.y=ys;
f.x=xe;f.y=ye;
if(isjiao(a,b,e,f))
ans=1;
if(isjiao(a,d,e,f))
ans=1;
if(isjiao(b,c,e,f))
ans=1;
if(isjiao(c,d,e,f))
ans=1;
if(ans)
printf("t\n");
else
printf("f\n");
}return 0;
}
poj1410 判斷線段和矩形是否相交
題意 判斷線段和矩形是否相交。思路 注意這裡的相交包括線段在矩形內,因此先判斷線段與矩形的邊是否相交,再判斷線段的兩端點是否在矩形內 因為是矩形,即凸多邊形,直接用叉積判斷即可,如果是一般的多邊形,需要用射線法判斷。ac code include include include include us...
C 判斷線段是否相交
c 判斷線段是否相交 線段是否相交,一種是從幾何上就是判斷兩個線段有沒有交點,還有一種是通過向量叉乘 也就是向量積 來判斷。因為向量叉乘的結果是乙個垂直於原來兩個向量的新向量,可以簡單的理解為垂直於原來兩向量所在平面的向量。我們來看圖。線段是否相交 線段p1p2的p1點 線段p1p2的p2點 線段q...
C 判斷線段是否相交
線段是否相交,一種是從幾何上就是判斷兩個線段有沒有交點,還有一種是通過向量叉乘 也就是向量積 來判斷。因為向量叉乘的結果是乙個垂直於原來兩個向量的新向量,可以簡單的理解為垂直於原來兩向量所在平面的向量。我們來看圖 線段是否相交 線段p1p2的p1點 線段p1p2的p2點 線段q1q2的q1點 線段q...