题目大意:给定一条线段的起始和终止点的坐标,和一个矩形的左上和右下的坐标,判断线段是否与矩形相交。注意:矩形是实心 的,而且矩形的两点坐标不一定是按照左上、右下的顺序。
解题思路:首先需要确定矩形左上和右下的坐标,判断线段是否在矩形内部。接着判断线段是否和矩形的某条边相交即可。
代码如下:
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
struct point{
int x;
int y;
};
struct Vector{
point s;
point e;
};
double mult(point p1,point p2,point p0)
{
return ((p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y));
}
bool Isinside(point p1,point p2,point p3,point p4)
{