计算几何之线段相交问题模板
来源:互联网 发布:施耐德可编程编程软件 编辑:程序博客网 时间:2024/05/24 05:33
1.定义一个点的结构体:
const double eps=1e-6;//精度struct point{ int x,y;//一般是double比较好,个人喜好}node[100];
线段相交不同于直线相交,需要判断多次:
2.叉积:
double cross(point a,point b,point c){ return (c.x-a.x)*(b.y-a.y)-(b.x-a.x)*(c.y-a.y);}
3.快速排斥实验:
bool quick_check(point a,point b,point c,point d){ if(min(a.x,b.x)<=max(c.x,d.x)&&min(c.x,d.x)<=max(a.x,b.x)&&min(a.y,b.y)<=max(c.y,d.y)&&min(c.y,d.y)<=max(a.y,b.y)) return 1; else return 0;}
4.跨立实验(一般和快速排斥一起用,进而排除特殊情况)
bool kua_li(point a,point b,point c,point d){ if(!quick_check(a,b,c,d)) return 0; if(cross(a,b,c)*cross(a,b,d)>=-eps) return 0; if(cross(c,d,a)*cross(c,d,b)>=-eps) return 0; return 1;}
5.求线段交点(使用叉积):
point intersection(point a,point b,point c,point d){ point inter; inter.x=(cross(a,b,d)*c.x+cross(a,b,c)*d.x)/(cross(a,b,d)-cross(a,b,c)); inter.y=(cross(a,b,d)*c.y+cross(a,b,c)*d.y)/(cross(a,b,d)-cross(a,b,c)); return inter;}
阅读全文
0 0
- 计算几何之线段相交问题模板
- 计算几何 线段相交 模板
- 计算几何之判断线段相交(模板)
- 计算几何,判两线段相交模板
- 计算几何中的线段相交判断问题
- 【计算几何】线段相交
- 计算几何之判断线段相交
- 计算几何之两线段相交
- 计算几何之判断线段相交
- 计算几何之判断线段是否相交
- 计算几何之判断线段相交
- 计算几何-判断两线段是否相交(模板)
- poj1039(计算几何)线段相交
- 【计算几何】判断线段相交
- 计算几何:规范相交模板
- 计算几何:规范相交模板
- 计算几何之判断两线段是否相交
- 计算几何之判断两线段是否相交
- dubbo项目配置文件错误,出现小红叉的问题
- python学习(二)----字符串常用方法及注释
- 推荐几个学习linux的国外著名论坛网站
- hdu2052 Picture(C语言)
- 每日一发Python---python list转字符串会显示u'的问题
- 计算几何之线段相交问题模板
- sql查询语句27到练习
- [新手入门]什么是量化策略
- 2017 Multi-University Training Contest
- HDU 6053 容斥dp 或 莫比乌斯反演
- Python修改数据中的字符串数据列
- 莫比乌斯函数
- oracle
- 针对百家号抓取项目