线段相交模板

来源:互联网 发布:欧洲女装品牌 知乎 编辑:程序博客网 时间:2024/05/20 21:23
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <algorithm>using namespace std;double EPS=1e-10;double add(double a,double b){    if (abs(a+b)<EPS*(abs(a)+abs(b)))        return 0;    return a+b;}struct P{    double x,y;    P(){    }    P(double x,double y):x(x),y(y)    {    }    P operator +(P p)    {        return P(add(x,p.x),add(y,p.y));    }    P operator -(P p)    {        return P(add(x,-1.0*p.x),add(y,-1.0*p.y));    }    P operator * (double d)    {        return P(x*d,y*d);    }    double det(P p)    {        return add(x*p.y,-1.0*y*p.x);    }    double dot(P a)    {        return add(x*a.x,y*a.y);    }};bool on_same_line(P p1,P p2,P q){    return (p1-q).det(p2-q)==0&&(p1-q).dot(p2-q)<=0;}P  Getnode(P p1,P p2,P q1,P q2){    return p1+(p2-p1)*((q2-q1).det(q1-p1)/(q2-q1).det(p2-p1));}

//判断两个线段相交的模板
0 0
原创粉丝点击