码迷,mamicode.com
首页 > 其他好文 > 详细

[模板] 计算几何

时间:2018-12-14 23:05:52      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:return   tor   oss   线段相交   相关   sid   code   point   type   

基本

typedef double db;
const db eps=1e-8;

int dcmp(db x){return fabs(x)<eps?0:(x<0?-1:1);}

// 2D Point && Vector
struct tp{
    db x,y;
    tp(){}
    tp(db xx,db yy):x(xx),y(yy){}
    tp(tp a,tp b):x(b.x-a.x),y(b.y-a.y){}
};

// Segment
struct tseg{
    tp p1,p2;
    db k;
    tseg(){}
    tseg(tp aa,tp bb):p1(aa),p2(bb){
//      k=(aa.y-bb.y)/(aa.x-bb.x);
    }
};

算法

向量相关

db cross(tp a,tp b){return b.y*a.x-b.x*a.y;} //2D

判断线段相交

快速排斥 + 跨立实验

bool difside(tseg a,tseg b){ //b is on 2 sides of a
    tp v21(a.p2,a.p1),v23(a.p2,b.p1),v24(a.p2,b.p2);
    return cross(v21,v23)*cross(v21,v24)<=0;
}
bool isintersect(tseg a,tseg b){
    return difside(a,b)&&difside(b,a);
}

直线交点

[模板] 计算几何

标签:return   tor   oss   线段相交   相关   sid   code   point   type   

原文地址:https://www.cnblogs.com/ubospica/p/10121673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!