This documentation is automatically generated by online-judge-tools/verification-helper
This project is maintained by tsutaj
/***** 各種交差判定 (intersection) *****/
// 豆知識: 線分 ... line segment (英)
// 直線 a1, a2 と点 b の交差判定 (直線上に点があるかの判定)
// ccwで絶対値が1 (一直線で線分上にない) でなければ交差している
bool isec_lp(Point a1, Point a2, Point b) {
return abs( ccw(a1, a2, b) ) != 1;
}
// 直線 a1, a2 と直線 b1, b2 の交差判定
bool isec_ll(Point a1, Point a2, Point b1, Point b2) {
return !isec_lp(a2-a1, b2-b1, 0) || isec_lp(a1, b1, b2);
}
// 直線 a1, a2 と線分 b1, b2 の交差判定
bool isec_ls(Point a1, Point a2, Point b1, Point b2) {
return cross(a2-a1, b1-a1) * cross(a2-a1, b2-a1) < EPS;
}
// 線分 a1, a2 と線分 b1, b2 の交差判定
// Verified: CGL_2_B: Intersection
bool isec_ss(Point a1, Point a2, Point b1, Point b2) {
return ( ccw(a1,a2,b1) * ccw(a1,a2,b2) <= 0 ) &&
( ccw(b1,b2,a1) * ccw(b1,b2,a2) <= 0 );
}
// 線分 a1, a2 と点 b の交差判定 (線分上に点があるかの判定)
bool isec_sp(Point a1, Point a2, Point b) {
return !ccw(a1, a2, b);
}
#line 1 "geometry/old/gmtr_002_intersection.cpp"
/***** 各種交差判定 (intersection) *****/
// 豆知識: 線分 ... line segment (英)
// 直線 a1, a2 と点 b の交差判定 (直線上に点があるかの判定)
// ccwで絶対値が1 (一直線で線分上にない) でなければ交差している
bool isec_lp(Point a1, Point a2, Point b) {
return abs( ccw(a1, a2, b) ) != 1;
}
// 直線 a1, a2 と直線 b1, b2 の交差判定
bool isec_ll(Point a1, Point a2, Point b1, Point b2) {
return !isec_lp(a2-a1, b2-b1, 0) || isec_lp(a1, b1, b2);
}
// 直線 a1, a2 と線分 b1, b2 の交差判定
bool isec_ls(Point a1, Point a2, Point b1, Point b2) {
return cross(a2-a1, b1-a1) * cross(a2-a1, b2-a1) < EPS;
}
// 線分 a1, a2 と線分 b1, b2 の交差判定
// Verified: CGL_2_B: Intersection
bool isec_ss(Point a1, Point a2, Point b1, Point b2) {
return ( ccw(a1,a2,b1) * ccw(a1,a2,b2) <= 0 ) &&
( ccw(b1,b2,a1) * ccw(b1,b2,a2) <= 0 );
}
// 線分 a1, a2 と点 b の交差判定 (線分上に点があるかの判定)
bool isec_sp(Point a1, Point a2, Point b) {
return !ccw(a1, a2, b);
}