给出两个线段(p1, q1) 和(p2, q2)
当给给出三个点a,b,c后,这三个点的关系 可能是逆时针、顺时针和共线。
当下面的一种情况成立时(仅有一种情况),他们相交:
1(p1,q1,p2) (p1,q1,p2)的方向不同 且(p2,q2,p1)(p2,q2,q1)的方向不同
2 (p1,q1,p2) (p1,q1,p2)(p2,q2,p1)(p2,q2,q1) 共线且p1,q1至少有一个在p2,q2中间或相反。
/ A C++ program to check if two given line segments intersect
#include <iostream>
using
namespace
std;
struct
Point
{
int
x;
int
y;
};
// Given three colinear points p, q, r, the function checks if
// point q lies on line segment 'pr'
bool
onSegment(Point p, Point q, Point r)
{
if
(q.x <= max(p.x, r.x) && q.x >= min(p.x, r.x) &&