线段相交模板
来源:互联网 发布:js给二维数组赋值 编辑:程序博客网 时间:2024/05/31 05:28
struct PT{ double x,y;//点的坐标}s[15][2];//线段的2个端点,MAX表示线段条数的上限double Min(double a,double b){ return a<b?a:b;}double Max(double a,double b){ return a>b?a:b;}double Dir(PT p1,PT p2,PT p0){ return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);}int OnSgm(PT p1,PT p2,PT p0){ double minx,maxx,miny,maxy; minx=Min(p1.x,p2.x); maxx=Max(p1.x,p2.x); miny=Min(p1.y,p2.y); maxy=Max(p1.y,p2.y); return minx<=p0.x&&p0.x<=maxx&&miny<=p0.y&&p0.y<=maxy;}bool Intersect(PT p1,PT p2,PT p3,PT p4){//两线段相交有两种情况 double d1,d2,d3,d4; d1=Dir(p4,p1,p3); d2=Dir(p4,p2,p3); d3=Dir(p2,p3,p1); d4=Dir(p2,p4,p1); if(d1*d2<0&&d3*d4<0)//两线段互相跨过 return 1;//一条直线有一个端点在另外一条直线上 if(d1==0&&OnSgm(p3,p4,p1)) return 1; if(d2==0&&OnSgm(p3,p4,p2)) return 1; if(d3==0&&OnSgm(p1,p2,p3)) return 1; if(d4==0&&OnSgm(p1,p2,p4)) return 1; return 0;//两线段不相交返回false}
0 0
- 线段相交 直线相交 模板
- 线段相交模板
- 【模板】线段相交
- 判断线段相交模板
- 线段相交模板
- 线段相交模板
- 计算几何 线段相交 模板
- ACdream 1097 线段相交(直线与线段相交模板)
- 计算几何,判两线段相交模板
- 判断两条线段是否相交 模板
- POJ1410_Intersection(几何/线段是否相交/模板)
- HDU4998 Rotate(旋转,线段相交模板)
- 判断两线段相交的模板
- 51nod 1264 线段相交 (模板)
- UVALive 5908 更新一下线段相交模板
- 模板--判断两线段是否相交
- 51NOD 1264 两线段相交模板
- 计算几何之线段相交问题模板
- code-smell-6-发散式变化
- 百度之星IP聚合(水题map&字符处理)
- android中实现自动输入文本效果
- 第九周项目5-方程也是类
- 安卓中的Model-View-Presenter模式介绍
- 线段相交模板
- tiny210 出现 nfs:server is not responding,still trying 原因与解决方案
- 第12周项目4点与园
- Word List for 5.24
- 高级部分 侧滑菜单框架的使用 SlidingMenu
- 黑马程序员——【Java反射学习】方法的反射/成员变量的反射/构造函数的反射
- code-smell-7-霰弹式修改
- Weekly Summary
- JS判断图片加载完成