新闻详情

新闻详情

首页 / 资讯中心 / 详情

判断两个线段是否相交的计算几何算法

发布时间:2026/9/6 20:52:42来源:尧图网络
判断两个线段是否相交的计算几何算法
判断两个线段(注意是线段不是射线或直线)是否相交的计算几何算法在《算法导论》第三版33.1节有详细的文字描述还配有图示,这里就不赘述了.阅读以下代码前需要深刻理解scalarProduct(标量积,点积)和vectorProduct(矢量积叉积)的含义和应用.代码中pointOnLine函数用于判断点是否在线段上,parallel函数用于判断两线段是否平行,intersect函数最终用于判断两线段是否相交…C代码#includeiostream#includeutilityusingnamespacestd;structLineSegment{pairint,intfirst;pairint,intsecond;LineSegment(intlfirst,intlsecond,intrfirst,intrsecond):first({lfirst,lsecond}),second({rfirst,rsecond}){}};intscalarProduct(intx1,inty1,intx2,inty2){returnx1*x2y1*y2;}intvectorProduct(intx1,inty1,intx2,inty2){returnx1*y2-x2*y1;}boolpointOnLine(constpairint,intpoint,constLineSegmentline){if(vectorProduct(point.first-line.first.first,point.second-line.first.second,line.second.first-line.first.first,line.second.second-line.first.second)!0){returnfalse;}if(scalarProduct(point.first-line.first.first,point.second-line.first.second,point.first-line.second.first,point.second-line.second.second)0){returnfalse;}returntrue;}boolparallel(constLineSegmentline1,constLineSegmentline2){if(vectorProduct(line1.second.first-line1.first.first,line1.second.second-line1.first.second,line2.second.first-line2.first.first,line2.second.second-line2.first.second)0){returntrue;}returnfalse;}boolcross(constLineSegmentline1,constLineSegmentline2){intvector_product1vectorProduct(line1.first.first-line2.first.first,line1.first.second-line2.first.second,line2.second.first-line2.first.first,line2.second.second-line2.first.second);intvector_product2vectorProduct(line1.second.first-line2.first.first,line1.second.second-line2.first.second,line2.second.first-line2.first.first,line2.second.second-line2.first.second);if(vector_product10vector_product20||vector_product10vector_product20){returntrue;}returnfalse;}boolintersect(constLineSegmentline1,constLineSegmentline2){if(pointOnLine(line1.first,line2)||pointOnLine(line1.second,line2)){returntrue;}if(pointOnLine(line2.first,line1)||pointOnLine(line2.second,line1)){returntrue;}if(parallel(line1,line2)){returnfalse;}if(cross(line1,line2)cross(line2,line1)){returntrue;}returnfalse;}intmain(){LineSegmentleft(3,6,5,4);LineSegmentright(3,4,4,1);if(intersect(left,right)){cout相交;}else{cout不相交;}coutendl;return0;}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Flexsim自动化立体仓库仿真建模与货位分配策略详解 2026/9/6 22:14:01

Flexsim自动化立体仓库仿真建模与货位分配策略详解

简介:一份面向物流工程、工业工程等专业学生和仓储规划人员的 Flexsim 仿真设计资料,围绕自动化立体仓库(AS/RS)的建模仿真与优化展开,可帮助读者快速掌握用 Flexsim 搭建立体仓库模型、分析物料流动与设备利用率的一般…

阅读更多 →
STC89C52RC智能小车避障灭火毕设全流程解析 2026/9/6 22:14:01

STC89C52RC智能小车避障灭火毕设全流程解析

简介:面向单片机、嵌入式及自动化类专业的毕业设计与课程设计,这份基于STC89C52RC的智能避障灭火小车毕业设计文档,系统解决了智能小车如何自主寻找火源、避障并完成灭火的核心问题。资源以Word文档形式整包供给,共1个doc文件&…

阅读更多 →
Java大厂面试八股文整理与复习实战指南 2026/9/6 22:14:01

Java大厂面试八股文整理与复习实战指南

简介:一份面向大厂Java岗位求职者的高频面试题与八股文整理,内容源自作者在阿里期间的工作沉淀,适合准备社招或校招、需要系统复习Java核心知识的开发者,也适合后端工程师面试前快速回炉。资料按问答形式梳理了238页常考内容&…

阅读更多 →
Java面试八股文高效整理:238页笔记背后的知识体系构建方法论 2026/9/6 22:14:01

Java面试八股文高效整理:238页笔记背后的知识体系构建方法论

简介:面向Java大厂面试的八股文合集,由作者在阿里工作期间系统整理,共238页,涵盖Java基础、设计模式、JVM、MySQL、Spring、Dubbo、Zookeeper、MQ、Redis、TDDL、算法、Linux等核心知识点,并补充项目预案、限流、强弱依…

阅读更多 →
U盘加密文件打不开怎么办?破解与自救实操指南 2026/9/6 22:14:01

U盘加密文件打不开怎么办?破解与自救实操指南

简介:一份聚焦U盘加密文件绕密读取的实用型PDF,面向因忘记密码或加密软件异常而无法访问U盘文件的普通用户与办公人员。文档以常见的『U盘加密器』为例,用截图逐步展示从加密到再解密的全过程,重点教会读者借助系统工具定位加密软…

阅读更多 →
基于BERT-LSTM的舆情情感计算与热点预判实践 2026/9/6 22:11:01

基于BERT-LSTM的舆情情感计算与热点预判实践

简介:这份PDF文档是一份专注社交媒体舆情分析的PyTorch实战资料,面向具备一定Python基础、希望掌握深度学习和NLP结合应用的开发者、研究生及舆情分析从业者。内容以BERT-LSTM情感计算和热点事件预测为主线,从舆情分析流程、BERT与LSTM原理入…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞