摘要: 当折线的端点过于密集,以至于显示时堆积在一起时,有必要简化折线,以提高后续凸包或相交运算的处理效率与显示清晰度。第一步通过设置顶点之间的距离阈值来减少冗余顶点。第二步,采用Douglas-Peucker (DP)算法简化折线,其在计算机图形学与地理信息系统领域被广泛应用。
阅读全文
03 2008 档案
摘要: 介绍完平面上凸包各种求取方法后,讲解三维顶点集合凸包的方法。
阅读全文
摘要: 现在介绍平面上顶点集合凸包的Bentley-Faust-Preparata (BFP)方法,与前面讲解的Graham Scan和Andrew's Monotone Chain方法不同之处是,预先并不需要将整个顶点集合一起按照X、Y轴数值排序。这种方法虽然是种近似方法,但时间复杂度降低,对于大数据量顶点的处理要求比较适合。
阅读全文
摘要: 介绍求取平面上顶点集合凸包的Graham Scan和Andrew's Monotone Chain方法。基本原理是在顶点排序好后,初始化一栈,循环取出顶点集合中每个顶点元素,将其与栈顶两元素进行判别,看是否符合凸包条件,循环结束后,栈中剩余元素即为所求。具体过程如下。
阅读全文
摘要: 寻找几何物体(点、线段、面与体等)的包围容器(Bounding Container)能加速三维仿真程序中的光线跟踪、碰撞检测和消隐处理等过程,因为在使用这些复杂的处理方法前,采用一个包围容器的预处理能先剔除一些不需参加后续计算的几何物体。包围容器的形状分为矩形、多边形和椭圆等,需注意计算这个容器所消耗的时间应小于希望节省的时间。
阅读全文
摘要: 说明单调链后,针对平面上多条线段求交问题,若使用最直接的方法,即两两求其交点,则(N-1) + (N-2)+…1 = N(N-1)/2次运算,时间复杂度是O(n2)。这种方法对交点个数接近N(N-1)/2的情况可行,但大多数情况下,N条线段形成的交点个数是较少的,此时算法可调整成与输入线段个数和输出的交点个数相关的效率更高的方法,如Bentley-Ottmann 算法。
阅读全文
摘要: 查询平面上一点是否在某多边形(可以为凸或凹多边形)范围内,或在其边上,或在范围之外,此方法作为GIS空间分析中的一种有广泛的应用。具体方法之一是从此点开始沿任意方向作射线,计算此射线与多边形的边的相交个数;方法之二是判断此点与多边形边的左右邻接关系。
阅读全文
摘要: 继续讲解3D空间下直线与平面的交点,点到平面的距离,直线到平面的距离,3D空间下两平面相交形成的交线等内容。求解过程中,未知顶点以参数方式表达,并依照矢量点乘和叉乘的性质列出方程求取结果,此技术思路符合实际工作中的初始条件,并且计算过程较快捷。
阅读全文
摘要: 在前面两节探讨的基础上,利用已知空间顶点坐标情况下,以矢量点乘和叉乘为基础,继续讲解三维空间中两条直线之间的距离,二维平面上任意凸多边形的面积, 三维空间中凸多边形的面积等方面的应用和程序编写工作。
阅读全文
摘要: 继续上一节的内容,本节主要讲解三维空间中射线、线段与平面及三维物体的交点及距离的计算,它们在碰撞检测和可见性剔除等应用中是必不可少的。首先给出3D空间下点乘和叉乘的定义与定理的推导,再谈如何应用到求取3D空间下点到直线距离编码的工作中。
阅读全文
摘要:地理信息系统软件开发中经常需要求取点、线、面之间的交点、交线、封闭区域面积和闭合集等结果,采用以矢量点乘和叉乘为基础的求取算法符合实际工作中已给出点位置和法向量等条件的情况,效率较高。首先给出基本公式的推导,然后给出代码和效果图。
阅读全文