图形算法
文章平均质量分 89
蜡笔小马
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
把 Boost.Polygon 塞进 Qt:从概念注册到可视化,一套代码吃透计算几何实战
你是否曾想过,把 Boost.Polygon 这头‘性能怪兽’塞进 Qt 的绘图管线里,让它在 QWidget 上乖乖跑起来,还要做到‘代码一眼能看懂、后续随便改’?今天这篇实战笔记,就带你拆解一套“Boost.Polygon + Qt”的完整范例。作者用不到 1 500 行头文件,把点、多边形、多边形集合、连通性提取、属性合并五大高频场景全部封装成“step-by-step”的可视化 Demo。如何把任意几何类型注册到 Boost.Polygon 的概念体系;如何让它与 QPainter 无缝衔接。原创 2025-12-26 14:48:25 · 950 阅读 · 0 评论 -
深入解析双向链接边列表(DCEL):C++实现与拓扑结构管理
/ DCEL.h - 定义DCEL的三大核心结构// 前向声明,因为结构之间互相引用// 顶点结构 - 存储点的位置和关联边// 顶点的坐标位置// 从该顶点出发的一条边(用于遍历)// 将顶点转为字符串显示// 面结构 - 表示一个封闭区域// 外边界环的起始边(必须存在)// 内边界环列表(孔洞,可选)// 半边结构 - DCEL的核心,表示有向边// 边的起点顶点// 反向的孪生边// 该边所属的面// 同一环中的下一条边// 同一环中的前一条边。原创 2025-10-28 10:10:15 · 1046 阅读 · 0 评论 -
平面扫描算法:高效计算线段交点的C++实现详解
平面扫描算法是计算几何中的经典算法,通过巧妙的扫描线思想和高效的数据结构,成功将线段交点问题的时间复杂度从O(n²)优化到O((n+k)log n)。本文详细解析了算法的C++实现,包括关键的数据结构设计和算法流程。扫描线范式:将二维几何问题转化为一维序列处理问题事件驱动:通过事件点来驱动算法流程,有序处理几何变化状态维护:动态维护与扫描线相交的线段集合相邻检测:只在状态结构中相邻的线段之间检测新交点平衡数据结构:使用AVL树保证所有操作的高效性。原创 2025-10-28 09:45:19 · 860 阅读 · 0 评论 -
凸包计算:从原理到C++实现详解
本文介绍了计算点集凸包的安德鲁单调链算法及其C++实现。该算法通过两次扫描(从左到右和从右到左)构建凸包上下边界,核心是利用叉积判断点的相对位置来维护凸性。文章详细解析了算法步骤,包括预处理排序、去重处理、凸包构建主逻辑,以及面积计算和点包含检测等辅助功能。C++实现中运用了STL算法优化性能,并通过边界条件处理确保算法鲁棒性。该算法在碰撞检测、路径规划等领域有广泛应用,时间复杂度为O(nlogn)。原创 2025-10-27 11:41:49 · 1133 阅读 · 0 评论 -
6.线段求交(学习笔记)
在实际的环境中,大多数的线段要么根本不与其他线段相交,要么只与少数的线段相交,因此,交点的总数远远达不到平方量级。进行测试,以找出它们可能位于扫描线下方的交点,并添加为事件点(注意,该事件点可能已经被发现——例如,两条线段在此前的一段时间内曾经是紧邻的,后来变得不再紧邻,最终又再次变成是相互紧邻的)。在这条假象的直线扫过平面的过程中,跟踪记录所有与之相交的线段——以找出所需的所有线段对。不幸的是,这还不够——因为,在某些(特殊的)情况下,尽管实际的交点数目很少,却依然需要对平方量级的线段进行测试。原创 2025-04-11 10:33:51 · 1329 阅读 · 0 评论 -
5.退化及鲁棒性——几何算法(学习笔记)
(这也是前一节设计凸包算法时所做的一项工作——尽管算法给出的多边形有可能并不凸,但是我们还是可以肯定,输出的多边形在结构上是正确的,而且它与凸包十分接近)。在几何算法的实现过程中,所遇到的种种麻烦,究其根源,往往可以归结为鲁棒性(robustness)的问题。然而在很多情况下,还有更好的办法——通过对问题的几何性质做再次的分析,往往可以将各种特例集成到一般情况当中。最后,还可以根据具体的输入,以数值的形式预测出,为了得到问题的正确结果,究竟需要达到多高的精度。一个几何算法的建立过程,往往要经过三个阶段。原创 2025-04-11 10:29:55 · 576 阅读 · 0 评论 -
4. 凸包算法(学习笔记)
平面的一个子集S被称为是"凸"的,当且仅当对于任意两点pq∈Sp,q\in Spq∈S线段pq都完全属于S。集合S的凸包Conv(S),就是包含S的最小凸集。这里所要讨论的,是如何计算平面上由n个点组成的有限集合P的凸包。可以借助一个虚构式实验,来想像这种凸包的模样:将这里的点想像成钉在平面上的钉子;取来一根橡皮绳,将它撑开围住所有的钉子,然后松开手——啪的一声,橡皮绳将紧绷到钉子上,它的总长度也将达到最小。此时,由橡皮绳围住的区域就是P的凸包。原创 2025-04-11 10:28:53 · 1252 阅读 · 0 评论 -
2.计算几何学习指南(AI生成)
原创 2025-04-11 10:24:01 · 1037 阅读 · 0 评论 -
1.图形学学习路线(AI生成)
原创 2025-04-11 10:22:50 · 799 阅读 · 0 评论
分享