首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CGAL:线段和多边形之间的交点?

CGAL:线段和多边形之间的交点? [英] CGAL: Intersection between a segment and a polygon?...的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我有一组多边形,我想测试它与线段之间的交点。 我检查了手册,但找不到匹配的功能。...点,线,线段,三角形,平面之间的交点确实存在。 多边形之间的交点也在那里。 我的问题是: 有这样的功能吗? 如果没有,这是否意味着我需要将多边形分解为多个部分,并在这些部分之间进行相交?...(我不愿意这样做的原因是,我认为CGAL实际上可能会使用这种方式在多边形之间进行相交。为什么没有这样的函数将线与多边形相交?)或者还有其他更好的方法吗?...推荐答案 最简单的方法是创建一个Polygon_set_2对象,该对象可能包含几个多边形。要使用此集测试外部多边形的交集,您只需应用do_intersect方法。

51730

基于Turf.js教你快速实现地理围栏的合并拆分

在物流行业中常见的使用场景是配送区域及地理围栏的绘制,常会有对已有区域进行拆分或者合并的需要,所以编辑器也提供了相应的功能。本文介绍了如何基于Turf实现多边形的拆分及合并。...w=400&h=291&f=gif&s=3868364] Turf.js 不难发现,多边形的拆分合并中会有大量且复杂的几何计算,包括点、线、面相互之间的相交、包含等计算。...w=1769&h=1360&f=png&s=104235] 解决切割点不一致问题 上文所述第一个切割点不一致的问题是指,使用线A切线B得到的切割点与使用线B切线A得到的切割点不同。...如何保证两者一致?可以发现用线B切线A时,实际上是先计算线B与线A的交点,再使用splitLineWithPoints方法用这些交点对线A进行切割。...那么先计算好两条线的交点,再用交点分别对两条线进行切割,就可以保证切割点的一致了。

3.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    硬核万字长文:我是如何把Skia的体积“缩小”到18的?

    如上图所示,看起来杂乱无章实际上也是一个合法的多边形。这样的多边形也应该被算法正确的处理,比如三角化,甚至做一些布尔运算。  多边形规范 在图形学中会使用一些关键点序列来描述一个多边形。...如上图所示,最后得到了 4 个三角形的网格,分别是红色、绿色、橙色、紫色 四个三角形。在渲染器中,可能还需要指定线的端点和交点的样式。比如圆角端点,交点的长度限制等等。...算法的关键在于求出边的“交点”和“交点的进出性”。“交点”相对比较容易理解,姑且不表。“进出性”可以用来表达交点和对应多边形的关系。...比如下图交点 “C0” 如果从多边形 B 的 B0 点出发,那么“C0”点对于多边形 A 来说是“外部”进入到“内部”,相对应的“C0”点就是多边形 B 的出点。...下图描述了如何剔除矩形之间的堆叠,只需要执行一次线扫描算法即可。 同样矩形非常容易就可以剖分成三角形,并不需要使用复杂的三角剖分的算法。所以可以快速构建对二维区域的描述。

    2.3K10

    计算几何算法概览

    判断两线段是否相交:   我们分两步确定两条线段是否相交:   (1)快速排斥试验     设以线段 P1P2 为对角线的矩形为R, 设以线段 Q1Q2 为对角线的矩形为T,如果R和T不相交,显然两线段不会相交...判断矩形是否包含点:   只要判断该点的横坐标和纵坐标是否夹在矩形的左右边和上下边之间。   ...判断点是否在多边形中的这个算法的时间复杂度为O(n)。   另外还有一种算法是用带符号的三角形面积之和与多边形面积进行比较,这种算法由于使用浮点数运算所以会带来一定误差,不推荐大家使用。   ...线段和多边形交于线段的两端点并不会影响线段是否在多边形内;但是如果多边形的某个顶点和线段相交,还必须判断两相邻交点之间的线段是否包含于多边形内部(反例见图b)。   ...至此我们得出算法如下:     if 线端PQ的端点不都在多边形内        then return false;     点集pointSet初始化为空;     for 多边形的每条边s

    1.6K40

    给定一个边与边可能相交的多边形,求它的轮廓线

    最近遇到一个需求,给定一个多边形(边与边可能相交),求这个多边形的轮廓线。 需要注意的是,轮廓线多边形内不能有空洞,使用的不是常见的非零绕数规则(nonzero)以及奇偶规则(odd-even)。...整体思路 计算多边形各边的交点,求出一个有多边形点和交点信息的邻接表。 从最下方的点开始,找出与其相邻节点中夹角最小的点保存到路径中,不断重复这个行为,直到点又回到起点位置。...1; const right = (i + 1) % size; adjList.push([left, right]); } return adjList; } 需要求解的轮廓线多边形的点不一定是目标多边形上的点...结果是在点 1 和 点 2 之间,更新这两个点的邻接点数组,将其中的 1 和 2 替换为 5。...(1)取左下角点作为起点 找顶点(不包括交点)中最靠下的点,如果有多个,取最靠左的。这个点一定是轮廓多边形的一个点。

    16510

    【笔记】《计算机图形学》(4)——光线追踪

    这一章的内容比较多,但是难度都不大,数学上要求对高数和线代都有一定的印象 4.1 基础光追算法 实时的光线追踪是这两年非常热门的话题,下一代的游戏机和游戏都以自己能够达到实时光线追踪为荣。...因此基础的光线追踪包含下面三部分,对每个像素执行一次: 生成视线:计算出每个像素发出的视线 视线相交:找出与视线相交的最近一个物体和相交面的法线 着色:利用相交的交点,法线和光照计算出当前像素所需显示的颜色...和绘画中一样,传统上分为平行投影和透视投影两种 ? 平行投影的特点是相互平行的线投影后仍然平行,实现起来最简单也就是所有视线都互相平行。...然后我们将多边形和交点投影到某个轴面上,例如xoy面,在二维上让交点向着某个轴向例如x轴方向形成直线,接着计算与多边形产生的交点数量,如果交点数量是偶数个则代表交点在多边形外,如果交点数量是奇数则表示交点在多边形内...由于将多边形投影到轴面上可能导致判断的不精准例如投影后多边形很多顶点重叠缩为一条线,这里我们可以在投影前进行一次预判断,将多边形往三个轴面都进行一次投影,然后找出投影后剩余的可判断顶点数量最多的轴面来进行计算

    2.6K20

    如何使用CGAL轻松检索两条相交多边形的相交线

    如何使用CGAL轻松检索两条相交多边形的相交线(从第一个交点到最后一个交点)。看到图像的澄清,绿线是我想要的。...使用CGAL获取多边形相交线 Two intersecting polygons with intersection line 目前我使用下面的算法,在那里我得到的交集多边形,然后发现这是两个多边形的边界点...,这应该是交叉点。...有人可以告诉我这是否是正确的方法,或者指出如何更好地做到这一点。 来源 2017-08-02 D.J. Klomp A 回答 2 将两个多边形的线段插入到2D排列中。然后找到具有度4的顶点。...= arr.end_vertices(); ++it) { if (4 == it->degree()) ... } 可以避开“段”名单的建设,而是直接将多边形细分成使用迭代器适配器的安排

    39440

    算法 - PNPoly解决点和多边形问题

    如何求解点到多边形的距离 此题求解需要解决两个问题: 点到多边形的边的最短距离。 点是否包含在多边形内。...contained; }} 每次计算都涉及到相邻的两个点和待测试点,然后考虑两个问题: 被测试点的纵坐标testy是否在本次循环所测试的两个相邻点纵坐标范围之内,即 ys[i]的意思是说,随便画个多边形,随便定一个点,然后通过这个点水平划一条线,先数数看这条横线和多边形的边相交几次(可先排除那些不相交的边,即第一个判断条件),然后再数这条横线穿越多边形的次数是否为奇数...点在直线下 - 相交判断 如下图,ab与过p点的水平线相交于c, ? 则有: ? Java代码实现: if (((ys[j] > y) !...contained;} 点在多边形内部 - 射线法 判断点是否在多边形内,可以从这个点做一条射线,计算它跟多边形边界的交点个数,如果交点个数为奇数,那么点在多边形内部,否则点在多边形外。

    2.5K31

    Google Earth Engine(GEE)——点线面运算及其交集并集等

    为了测试其中一些关系,几何默认使用“奇偶”规则。根据奇偶规则,如果从该点到已知在多边形外部的某个点的线与奇数个其他边相交,则该点在多边形内部。多边形的内部是壳内的所有东西,而不是孔内。...作为一个简单的例子,圆形多边形内的一个点必须正好穿过一条边才能脱离多边形。如有必要,几何图形可以选择使用“左内”规则。想象一下按照给定的顺序走环的点;内部将在左侧。...为了演示使用“左向内”规则 ( ) 创建的几何与使用“奇偶”规则创建的几何之间的区别,以下示例将一个点与两个不同的多边形进行比较:evenOdd: false // 创造一个左侧的几何图形用来验证是不是包含在里面...Polygon构造左多边形时,提供给构造函数的坐标顺序如何 影响结果。...具体来说,该点位于左内多边形之外,但位于奇数多边形内。 以下示例基于两个多边形之间的关系计算和可视化派生几何:也就是两个几何图形之间的交、并、非集。

    24710

    CTPN、TextBoxes、SegLink、RRPN、FTSN、DMPNet…你都掌握了吗?一文总结OCR必备经典模型(一)

    2, conv11; 对不同层的特征图使用3x3的卷积层以得到最终的输出,不同特征层输出的维度是不一样的,因为除了conv4_3层外,其它层存在跨层的link。...IoU计算方法 RRPN中IoU的计算和RPN思路相同,具体如图6所示,两个相交旋转矩形的交集可根据交点的个数分为三种情况,分别是4个,6个,8个交点: 图6 IoU计算示例:(a)4个点,(b)6个点...,(c)8个点(矩形的顶点为黑色,而交点为绿色)。...考虑到(b),首先将交点I、J、L、K和内部顶点A、C加入P集,对P集进行排序,得到凸多边形AIJCKL,然后计算交点面积 Area(AIJCKL) = Area(∆AIJ)+Area(∆AJC)+ Area...预测给定多边形上四个点的最终顺序:首先在四个点里面选择 x 坐标最小的,如果有两个点的x一样,那么选择y最小的点作为第一个点;确定完点1之后,连接第一个点与其它三个点,找到中间那条,确定点3;然后画出对角线

    54430

    一个R语言中操纵矢量空间数据的标准化工具—sf

    我们可以把“Features”看做是一种包含特定空间位置或范围的“事物”或对象;Featrue gemetry 是指某种空间几何特征(位置或范围),或者你也可以直接把其当成是一个点、点集合、线、线集合、...简单来说,simple features 就是线集合、多边形集合的特征(这些线集合或者多边形集合是由很多点连接的直线段构成的)。...Simple feature 对象 (Herring,2011)是呈现、编码矢量空间数据的国际通用标准,主要用于呈现点、线、多边形等几何对象(IOS,2004)。...在使用ggplot2绘图时,先利用fortify函数将sp对象转化成数据框(该数据框里存放着每一个多边形构成点的信息),以此来尝试“简化”多边形对象,这样既不优雅,也不高效。...一篇关于在sf中设置空间索引的博文 描述了如何使用索引操纵大内存的空间数据集。对于球面数据,还需要研究liblwgeom或s2提供的索引。

    4.3K51

    模拟试题B

    ,则输出线段SP与裁剪线的交点和P ?...参数形式和隐函数形式都是精确的解析表示法,在图形学中,它们均使用较多; C)从描述复杂性和形状灵活性考虑,最常用的参数曲面是3次有理多项式的曲面; D)在曲线和曲面定义时,使用的基函数应有两个重要性质...( ) A)多边形被两条扫描线分割成许多梯形,梯形的底边在扫描线上,腰在多边形的边上,并且相间排列; B)多边形与某扫描线相交得到偶数个交点,这些交点间构成的线段分别在多边形内、外,且相间排列;...彩色打印机使用CMY颜色模型 C)光栅扫描图形显示器中,所有图形都应转化为像素点来显示 D)在图形文件中,点、线、圆、弧等图形元素都要转化为像素点来描述 10.下列有关双线性法向插值法(Phong...A)深度缓冲算法不需要开辟一个与图像大小相等的深度缓存数组 B)深度缓冲算法不能很好地处理对透明物体的消隐 C)深度缓冲算法可以实现并行 D)深度缓冲算法中没有对多边形进行排序 12.下列两重组合变换中

    4.3K10

    hover 背后的数学和图形学

    WebGL 中只有点、线段、三角形三种基本图元,所有视觉可见的形状都是以这三种图元组成。其实主要是三角形,包括绝大多数的线和点也是由三角形组成。...射线法的原理是以待判断的点坐标画一条水平的直线,然后判断这条直接与多边形各条边的交点数量,如果是奇数则代表点在多边形内,如果是偶数则代表点在多边形之外。...如果多边形的某条边是曲线怎么办? 如何判断两条线段有交点? 如何获取多边形的各条边的端坐标? 这其实并不是一个图形绘制领域的问题,而是数据制备领域的问题。...所以WebGL中的任何图形本质上都是多边形,既然是多边形就可以按照上文的方案解决点与多边形的相对位置判断问题。 如何判断两条线段有交点?...判断两条线段是否相交用到了上述的规则2-4。先看下面这张图: 如果线段AB和CD相交可以推导出以下规则: 点A和点B分别位于线段CD的两侧; 点C和点D分别位于线段AB的两侧。

    1.4K10

    CAD复习资料

    :donut 36.在AutoCAD中被锁死的层上:不可修改本层图形 37.在AutoCAD中,对两条直线使用圆角命令,则两线必须:共面 38.多线命令mline;多线的编辑应该使用命令:mledit。...打断是单独的直线或圆弧在某处切段掉一小段,而成为两个部分,这个命令对复合对象(如用多边形画成的正方形)无效。 12、图纸空间和模型空间有何区别?各种作用是什么?...模:绘制二维图形和3D建模,所有建模编辑工作都是在这里完成的; 图:主要是输出时使用。 13、如何理解多段线、样条曲线的概念以及相应的生成方法?    ...,按【Ctrl+B】或【F9】; 对象捕捉是在绘图过程中,用户可以使用光标自动捕捉到图形对象的特殊点,如线的端点、中点、圆或弧的圆心及线与线的交点等。...使用此功能用户能够快速地绘制通过已存在对象特殊点的图形对象,如通过某圆心的直线、通过两直线交点的直线等,【F3】。 41、构造选择集的方法有哪些,各有什么特点?

    6.4K01

    【笔记】《游戏编程算法与技巧》7-12

    (凸包): 一般从目标模型的一些显著的顶点上采样并连接生成的一个新多边形, 判断效率很低但是精准度是最高的 组合几何体: 也就是对每个模型嵌套多个不同优先级的碰撞体, 然后从简单到复杂逐步排除场景中需要渐层的碰撞体...但是要判断t是否合法和具体的t还需要完整解方程, 将[0, 1]之外的部分排除就能得到最终的相交结果 碰撞响应与优化 刚体碰撞的响应结果一般是弹性碰撞, 也就是速度方向变为反射方向 首先利用上面的扫掠体算法计算出碰撞的交点中...t较小的那个时间点T, 那就是碰撞开始时的时间点, 用T计算出碰撞时的速度 然后利用T时两个球的坐标, 按照其半径线性插值就能得到精确的碰撞点, 然后这两个球心的连线就是切平面的法向量线, 借助这个创建碰撞点上的切平面...以这两个点作为射线的起点和终点, 计算t最接近近平面的交点就是相机拣选的结果 9 人工智能 寻路基础 理想的寻路算法是求解最短路径, 合适的搜索空间是效率的关键, 但是搜索空间并不影响寻路算法的使用 方格结构...为了避开递归的使用, 对每个节点保存指向上一步的节点的指针prev和当前节点对应的距离值h 然后还需要一个开放集合和一个封闭集合, 分别保存了目前需要考虑的节点和已经无法使用的节点.

    2.2K20

    使用 SVG 和 JS 创建一个由星形变心形的动画

    通常,给定一个正多边形(不管是凸多边形还是星形多边形),使用 Schläfli symbol {p,q} 表示,与一条边相对的圆心角就是 q·(360°/p) (弧度为 q·(2·π/p))。 ?...通过这个函数,我们首先计算变换形状时不会改变的常量,比如五角星形的外接圆半径(外圆的半径)、正五角星和正多边形一条边所对的圆心角、五角星形和内五边形(其顶点是五角星形边的交叉点)共有的内切圆半径、内五边形的外接圆半径...,我们使用它们所在的圆的半径和与水平轴相连的径向线的角度,可以看下面的交互式演示(拖动这个点,看看它的笛卡尔坐标是如何变化的): See the Pen position of point in a plane...高亮显示的三次 Bézier 曲线构成了心形, 下方曲线的控制点重合 (live). 下方的曲线的控制点正好和之前两切线的交点重合。但是其他四条曲线呢?如何用三次 Bézier 曲线得到圆弧?...其中, O 是对角线的交点,OT 是对角线 ST 的一半。T 和 S 都位于 y 轴,所以它们的 x 坐标为 0 。它们的 y 坐标的绝对值等于 OT 线段的长度,也是对角线(OS 线段)的一半。

    4.8K51

    3D图形渲染技术

    ---- 如何用2D平面展现3D图形 2D图形 在一个平面中有了两个点,知道了他们的XY坐标,就可以把它们链接起来画成一条线 通过控制A和B点的XY坐标可以控制一条线 在3D图像中,点的坐标多了一个...透视投射 透视投影可以产生近大远小的效果,就和人类观察世界的方式类似 在真实的3D世界中,平行线段会在远处收敛与一点 为什么复杂图形的绘制要使用三角形 在3D图形学中,我们叫三角形“多边形” 一堆多边形的集合叫做...图像需要填充 步骤: 先铺上一层像素网络 扫描线算法,先会去读取多边形的三个点,找出最大和最小的Y值,然后只在这两个点之间进行工作 然后算法从上往下,一次处理一行,计算每一行和多边形相交的两个点...扫描线算法会填满两个相交点之间的像素 因为是三角形,如果相交一条边,必然相交另外一条边 抗锯齿 这样的三角形比较丑,因为边缘满是锯齿 一种减轻锯齿的方法叫做抗锯齿 抗锯齿:与其每一个像素都涂成一样的像素...,而是吧多边形的距离和Z-buffing里面的距离进行对比,他总是记录更低的值 Z缓冲区完成后,会和“扫描线”算法的改进高级版配合使用,不仅可以勘测到线的交叉点还可以知道某像素是否在最终场景中可见

    1.8K20

    平面几何:判断点是否在多边形内(射线法)

    之前我们讲解了如何利用叉乘 判断点是否在凸多边形内。但该算法限制较大,多边形必须为凸多变形。 最近我的图形编辑器又新增了星形图形,然而这个星形又不是凸多边形。...于是我再基于射线法,实现一个较通用的算法,支持判断点是否在任意多边形内。 实现后的图形拾取效果如下。 射线法原理 这里我们用射线法来实现。 原理很简单,从点引出一条射线,计算射线和多边形的交点数量。...交点数如果是奇数,说明点在多边形内;如果是偶数,则点不在多边形内。 背后的原因是,交点刚好把这条射线切割为 “...内-外-内-外” 这样交替的子区域。...自交会将多边形切割为多个区域,所以我们通常需要指定 填充规则,确定哪些区域需要填充,哪些区域不需要填充。 基于射线法的实现只适用其中使用了 奇偶规则 的自交多边形。...} 拿到边的两个端点 a 和 b。我们调整一下 a 和 b 的位置,确保 a 是上方的点,b 是下方的点。

    49110

    判断点是否在多边形内的Python实现及小应用(射线法)

    判断一个点是否在多边形内是处理空间数据时经常面对的需求,例如GIS软件中的点选功能、根据多边形边界筛选出位于多边形内的点、求交集、筛选不在多边形内的点等等。...判断一个点是否在多边形内有几种不同的思路,相应的方法有: 射线法:从判断点向某个统一方向作射线,依交点个数的奇偶判断; 转角法:按照多边形顶点逆时针顺序,根据顶点和判断点连线的方向正负(设定角度逆时针为正...面积和法:求判断点与多边形边组成的三角形面积和,等于多边形面积则点在多边形内部。...射线法的原理及实现 射线法就是以判断点开始,向右(或向左)的水平方向作一射线,计算该射线与多边形每条边的交点个数,如果交点个数为奇数,则点位于多边形内,偶数则在多边形外。...1 return True if sinsc%2==1 else False 我们取一个比较复杂的多边形进行测试,多边形和一些点如图: ?

    9.8K40

    无人驾驶之车道线检测简易版

    Lane Extrapolation 参考 Pipe Line 本文进行车道线检测的pipe line如下,主要使用了opencv库: RGB to GRAY Gauss Blur Canny Edges...和原图结合的最终图片: Gray 通常的彩色图片是三通道的,简便起见,对其做单通道处理,转化为灰色图像。...原空间中的点可以映射到参数空间中的直线。A。 原空间中的点可以映射到参数空间中的直线,参数空间中直线的交点代表原空间中点的连线。C。...原空间中的直线可以映射到参数空间中的点,参数空间中两个点的连线代表原空间中两个直线的交点。A。...车道线 无论采用xy坐标还是极坐标,原空间的点都对应参数空间的曲线,原空间的直线都对应着参数空间中曲线的交点。如下图所示,可以根据在参数空间中每个grid相交点的出现次数寻找原空间中的直线。

    2.6K1711
    领券