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

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

如何使用CGAL轻松检索两条相交多边形的相交线(从第一个交点到最后一个交点)。看到图像的澄清,绿线是我想要的。...使用CGAL获取多边形相交线 Two intersecting polygons with intersection line 目前我使用下面的算法,在那里我得到的交集多边形,然后发现这是两个多边形的边界点...有人可以告诉我这是否是正确的方法,或者指出如何更好地做到这一点。 来源 2017-08-02 D.J. Klomp A 回答 2 将两个多边形的线段插入到2D排列中。然后找到具有度4的顶点。...注意,在一般情况下可能有2个以上;有可能是没有,有可能是1 std::list segments; for (const auto& pgn : polygons...(这是纯粹的通用编程,与CGAL无关。)

39540

想知道所在的城市有多少条道路?我用python发现北京一共有1.5万条道路!

很明显北京市不止1000条道路,那么如何获取全部道路呢? ?...关键字搜索 终于,我们发现多边形搜索的接口,它可以对指定的矩形区域内的道路进行搜索,这样我们就脑洞一个想法将北京市按照经纬度分割为若干小区域,如果搜索各个区域内的道路数据后汇总就可以了,为了尽可能不要有遗漏...多边形搜索 那么,新的问题也来了:如何进行经纬度区域划分呢?...行政区域查询 思路有了,我们就开始干活吧! 2....',end='') 最终,我们得到了北京一共有14994条道路,其中各区道路数分别如下: 区 道路数 顺义区 2164 大兴区 1826 通州区 1310 朝阳区 1264 海淀区 1088 房山区

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

    UE4Unity绘制地图基础元素-面和体

    绘制多边形区域面 面数据通常以离散点串形式存储,面的绘制与线的绘制原理类似。渲染的基本单位是三角形,线是通过扩展线宽构造三角形后渲染,而面是通过将多边形拆分为多个三角形后渲染。...通过全链路的排查,才查出是多边形数据的问题。 三角剖分在使用时有一个前置条件:使用对象必须为简单多边形,即多边形中的任何两条边仅可以在顶点处相交。...2、根据多边形计算外接矩形,减少细节 3、根据三角剖分结果剔除多余顶点,重新生成简单多边形 以上三个方案对于多边形的细节保留由少到多,但并不是完全还原真实数据。...] 边形有 [8057722c07b246788d7fbf46d1e56265~tplv-k3u1fbpfcp-watermark.image] 条边,每条边只需要和其他的 [8af87c70057a4701a3cfb8053ffffa98...但对于需要实时处理的动态数据来说,其需要遍历所有组合,尤其对于可能仅存在少量相交点的情况,冗余计算太多,因此可以引入时间复杂度更低的相交判定算法进行处理。

    1.3K51

    一道面试题到卡特兰数及其应用

    元钱,另一半人恰有10元钱,而票房无零钱可找,那么如何将这2n个人排成一列,顺次购票,使得不至于因票房无零钱可找而耽误时间,应该采用什么算法解决呢?...h(n-1)种 2、出栈次序 一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列? 输出序列的总数目=c(2n,n)-c(2n,n+1)=c(2n,n)/(n+1)=h(n)。...其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?...(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈) 3、凸多边形三角划分 在一个凸多边形中,通过若干条互不相交的对角线,把这个多边形划分成了若干个三角形。...如果她从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路? 在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?

    64020

    一篇文章带你玩转PostGIS空间数据库

    ST_AsGeoJSON(geometry) returns JSON text ST_AsSVG(geometry) returns SVG text 总的来说,就是可以:求面积、求边界、求大边形里有多少小多边形...上图中,和黄色星星相交的线的数量是 1,即红色那条线。但是与黄色框相交的范围框有红色和蓝色,共 2 个。...数据库求解 “什么线与黄色星相交” 这个问题,是先用空间索引求解 “什么范围框与黄色范围框相交” 这个问题的(速度非常快),然后才是 “什么线与黄色的星星相交”。...多边形的环必须闭合 内环必须位于外环的内部 环不能自相交(它们不能相互接触,也不能交叉) 除了在某个点接触,环不能与其他环接触 前两条是必须的。后面两条则是非必须设置的。...关于它们的交集的DE9IM矩阵如下: 请注意,以上两个要素的边界实际上根本不相交(线的端点与多边形的内部相交,而不是与多边形的边界相交,反之亦然),因此B/B单元用"F"填充。

    7.6K50

    004计算机图形学之多边形的扫描转换和区域填充

    图像有两种表示方式,一种是顶点表示,另一种是点阵表示。 这两种表示方式各有各的优点,由此引出来两个问题: 如何知道边界,怎么求出,那些像素在边界之内。...知道多边形的内部像素,如何反过来求多边形的边界。 多边形的扫描转换是指: 把多边形的顶点表示转换为点阵表示。也就是知道多边形的边界,如何找到多边形内部的点,即把多边形内部填上颜色。...多边形扫描转换 x-扫描线算法 按照扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的像素。 求交的工作量大。...改进算法是利用增量思想,考虑到图形的连贯性,同时引入一个特殊的数据结构,减少求交的计算量。 加权区域采样方法 符合人视觉系统对图像信息的处理方式,反走样效果更好。...将直线段看作是一条具有一定宽度的狭长矩形;当直线段与像素有交时,根据相交区域与像素中心的距离来决定其对象素亮度的贡献。

    1.5K80

    卡特兰数简介原理性质应用参考:

    考虑n对括号时的任意一种配对方案,最后一个右括号有唯一的与之匹配的左括号,于是有唯一的表示A(B),其中A和B也是合法的括号匹配序列 假设S(n)为n对括号的正确配对数目,那么有递推关系S(n)=S(...(h(n)种) 出栈次序 一个栈无穷大的进栈序列为1,2,3,…,n,有多少个不同的出栈序列? 分析: 首先,我们设f(n)=序列个数为n的出栈序列种数。...相似问题-买票找零 有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?...因为凸多边形的任意一条边必定属于某一个三角形,所以我们以某一条边为基准,以这条边的两个顶点为起点P1和终点Pn(P即Point),将该凸多边形的顶点依序标记为P1、P2、……、Pn,再在该凸多边形中找任意一个不属于这两个点的顶点...如果她从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路? 在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?

    2.1K40

    如何快速求出与n互素的数有多少个?

    作者 | 小K 出品 | 公众号:小K算法 01 故事起源 一个数n,在小于等于n的正整数[1,n]中,与n互素的数有多少个呢?...(注:x与n互素,说明x与n的最大公约数为1) 02 分析 最直观的方法当然就是直接枚举所有小于n的数,再通过求最大公约数判断即可。 但当n很大的时候,这个方法就不优了。...可能有同学已经发现了,这个不就是欧拉函数的定义吗,所以今天我们从数学上来分析如何快速求解。 03 欧拉函数 欧拉函数定义如下: 欧拉函数具有几个优秀的性质,先介绍几个常用的数学符号,便于描述。...这个性质的证明需要用到同余和集合相关的定理,有点复杂,以后写同余相关的知识再专门分享如何证明,现在就先记住这个性质就行了。 04 计算 有了这2个性质就可以推导出欧拉乘积公式。...接下来就只需要考虑如何对n进行质因素分解。 最简单的方式可以直接枚举,先找到最小的质因子p1,然后除去所有p1因子,再对剩余的数继续分解。

    67220

    hover 背后的数学和图形学

    射线法的原理是以待判断的点坐标画一条水平的直线,然后判断这条直接与多边形各条边的交点数量,如果是奇数则代表点在多边形内,如果是偶数则代表点在多边形之外。...射线法可以适用于任意多边形,包括有洞(hole)的多边形,具体的推导过程就不贴了,感兴趣的话可以自己查一下相关资料。 射线法涉及以下三个问题: 如何获取多边形的各条边的端坐标?...如果多边形的某条边是曲线怎么办? 如何判断两条线段有交点? 如何获取多边形的各条边的端坐标? 这其实并不是一个图形绘制领域的问题,而是数据制备领域的问题。...所以WebGL中的任何图形本质上都是多边形,既然是多边形就可以按照上文的方案解决点与多边形的相对位置判断问题。 如何判断两条线段有交点?...回顾上文提到的多边形顶点数据制备,多边形的边是由相邻两个顶点相连而成,顶点是有序的,也就是说多边形的每条边都是有向线段,所以判断两条线段是否相交这个问题准确的说发应该是:判断两个有模向量是否相交。

    1.4K10

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

    因此基础的光线追踪包含下面三部分,对每个像素执行一次: 生成视线:计算出每个像素发出的视线 视线相交:找出与视线相交的最近一个物体和相交面的法线 着色:利用相交的交点,法线和光照计算出当前像素所需显示的颜色...对于正交投影,视线是最容易计算的。视线的方向都是-w,视线的起点则是由投影面的像素位置决定,所以重点就转化为了如何确定投影面的位置。...,这样可以省去一些明显无用的计算 视线与多边形相交 视线与多边形的相交判断是个更加复杂的问题,因为多边形可能是凸多边形或凹多边形,平面交点可能刚好穿过多边形的空洞。...关键思路是计算射线在多边形平面的交点与投影到二维平面的多边形可以形成的交点数量 首先求解下面的式子,其中p=e+td,通过求解t得出射线与多边形所在平面相交的交点,这一步可以筛选掉多边形与射线平行的情况...由于将多边形投影到轴面上可能导致判断的不精准例如投影后多边形很多顶点重叠缩为一条线,这里我们可以在投影前进行一次预判断,将多边形往三个轴面都进行一次投影,然后找出投影后剩余的可判断顶点数量最多的轴面来进行计算

    2.6K20

    计算几何算法概览

    计算两条共线的线段的交点 计算线段或直线与线段的交点 求线段或直线与折线、矩形、多边形的交点 求线段或直线与圆的交点 凸包的概念 凸包的求法 三、算法介绍   矢量的概念:   如果一条线段的端点是有次序之分的...在图(a)中,L和多边形的顶点相交,这时候交点只能计算一个;在图(b)中,L和多边形顶点的交点不应被计算;在图(c)和(d) 中,L和多边形的一条边重合,这条边应该被忽略不计。...判断折线是否在多边形内:   只要判断折线的每条线段是否都在多边形内即可。设折线有m条线段,多边形有n个顶点,则该算法的时间复杂度为O(m*n)。   ...计算两条共线的线段的交点:   对于两条共线的线段,它们之间的位置关系有下图所示的几种情况。图(a)中两条线段没有交点;图 (b) 和 (d) 中两条线段有无穷焦点;图 (c) 中两条线段有一个交点。...计算线段或直线与线段的交点:   设一条线段为L0 = P1P2,另一条线段或直线为L1 = Q1Q2 ,要计算的就是L0和L1的交点。  1.

    1.6K40

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

    如何求解点到多边形的距离 此题求解需要解决两个问题: 点到多边形的边的最短距离。 点是否包含在多边形内。...点到边的距离 计算点到多边形最短距离的基本原理是:依次计算点到多边形每条边的距离,然后筛选出最短距离。 ? 如下图,假设AB为多边形的一条边,现在求点P到AB的距离。 ?...这个表达式的意思是说,随便画个多边形,随便定一个点,然后通过这个点水平划一条线,先数数看这条横线和多边形的边相交几次(可先排除那些不相交的边,即第一个判断条件),然后再数这条横线穿越多边形的次数是否为奇数...点在直线下 - 相交判断 如下图,ab与过p点的水平线相交于c, ? 则有: ? Java代码实现: if (((ys[j] > y) !...contained;} 点在多边形内部 - 射线法 判断点是否在多边形内,可以从这个点做一条射线,计算它跟多边形边界的交点个数,如果交点个数为奇数,那么点在多边形内部,否则点在多边形外。

    2.5K31

    3D图形渲染技术

    ---- 如何用2D平面展现3D图形 2D图形 在一个平面中有了两个点,知道了他们的XY坐标,就可以把它们链接起来画成一条线 通过控制A和B点的XY坐标可以控制一条线 在3D图像中,点的坐标多了一个...,找出最大和最小的Y值,然后只在这两个点之间进行工作 然后算法从上往下,一次处理一行,计算每一行和多边形相交的两个点。...扫描线算法会填满两个相交点之间的像素 因为是三角形,如果相交一条边,必然相交另外一条边 抗锯齿 这样的三角形比较丑,因为边缘满是锯齿 一种减轻锯齿的方法叫做抗锯齿 抗锯齿:与其每一个像素都涂成一样的像素...这次要考虑的是多边形面对的方向,他们不平行与屏幕,而是面对不同方向。...cpu不是为此设计的,因此图形运算不快,所以计算机工程师为图形做了专门的处理器,叫做GPU"图形处理单元" GPU在显卡上,周围有专用的RAM,所有网格和纹理都在里面,让GPU的多个核心可以高速访问

    1.8K20

    你被追尾了

    则就可以使用上述数学公式方便的计算旋转之后的 圆心坐标. 转换为蓝色矩形和蓝色圆形之后,就可以使用 圆形与无旋转矩形 相交的判定方法了....但是程序中遍历所有光源的角度是不现实的,那如何确定 投影轴 呢?其实投影轴的数量与多边形的边数相等即可。 ?...显然,上述代码有几个需要解决的地方: 如何确定多边形的各个投影轴,也就是上述 getAxes 函数怎么实现 如何将多边形投射到某条投影轴上,也就是上述 project 函数怎么写 如何检测两段投影是否发生重叠...注意,从投影的过程中,我们就能看出为什么 SAT 定理只能针对凸多边形有效,因为凸多边形有一个凹多边形不具备的性质.就是凸多边形在它的任何一条边的同侧,而凹多边形可能在它的某条边的异侧....由于圆形可近似地看成一个有无数条边的正多边形,但是我们不可能按照这些边一一进行投影与测试。

    4.6K30

    【编程之美】票买完了,零钱哪去了?

    买票找零 假设有2N个人在排队买票,其中有N个人手持50元的钞票,另外有N个人手持100元的钞票,假设开始售票时,售票处没有零钱,问这2N个人有多少种排队方式,不至使售票处出现找不开钱的局面?...一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列? 类似:有2n个人排成一行进入剧场。入场费5元。...其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?...将一个凸多边形区域分成三角形区域的方法数? 类似:一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。...如果她 从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路? 类似:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数? 4.给顶节点组成二叉树的问题。

    88570

    GIS拓扑讲解点线面几何体的拓扑关系判断及运算分析_turf案例

    B⊃A相交:Crosses几何形状至少有一个共有点 A∩B≠∅ , 检查两个几何对象是否交叉相交。只能在不同维度使用:如点和线,线和面等。不能在线与线之间,和点与点之间,也不能在面与面之间使用。...A≡B,B⊆A且B⊇A重叠:Overlaps几何形状共享一部分但不是所有的公共点,而且相交处有他们自己相同的区域。...该方法只使用与两个Polyline之间或者两个Polygon 之间。接触:Touch几何形状有至少一个公共的边界点,但是没有内部点。...拓扑关系判断需要注意点是:overlaps 重叠这里的重叠跟平时我们理解的不太一样,这里的重叠,必须是A与B有交集,且A与B的交集不能和A,B一样,其实就是我们平时理解的相交。...crosses 穿过(相交)这里的拓扑关系比较特殊,使用crosses,不能在同纬度使用,但可以在不同的维度使用,如:点和线,线和面等。不能在线与线之间,和点与点之间,也不能在面与面之间使用。

    2.6K10

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

    本文介绍了如何基于Turf实现多边形的拆分及合并。 背景介绍 多边形的拆分合并 多边形的拆分是指将多边形沿着线切分为几个多边形。...如下图所示,不仅可以沿线一分为二,当线与多边形有多段相交时也可以分为多份,另外当多边形带洞(环多边形)时也可以在拆分后保持洞的形状。 [17211f4213f008de?...w=400&h=291&f=gif&s=3868364] Turf.js 不难发现,多边形的拆分合并中会有大量且复杂的几何计算,包括点、线、面相互之间的相交、包含等计算。...如何保证两者一致?可以发现用线B切线A时,实际上是先计算线B与线A的交点,再使用splitLineWithPoints方法用这些交点对线A进行切割。...那么先计算好两条线的交点,再用交点分别对两条线进行切割,就可以保证切割点的一致了。

    3.1K30

    (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验二----网络分析(超超超详细!!!)

    (3)数据拓扑检查与修复:根据实验要求选择拓扑规则,对道路数据进行拓扑构建并进行验证,对存在的错误进行修正。...(4)数据人库:建立osm数据库,将修改后的数据导人数据库中 (5)最短路径分析:建立新建住宅小区的道路网络数据集,设置距离与时间成本,求从“objectid=9150”的建筑物到“obiectid=...我这儿勾画出了几个道路连接线,还是比较明显的,大家也连这几个特征点,或者多边形的尖角也行(实验指导书上是这样的,但我感觉这样难度会很大,误差也很大) 按上面所述,构建链接如下:...比如在道路网中,除了死胡同,不允许某条道路的端点为悬挂点。...2.3.5 构建网络数据集 (1)数据准备: 在ArcMap空白处点击鼠标右键,选择【高级编辑】工具条,启动编辑器,中所有道路数据,用高级编辑工具下的打断相交线出拆分线要素。

    23310

    算法集锦(18) | 自动驾驶 | 车道线检测算法

    事实证明,使用计算机视觉技术识别道路上的车道标记是可能的。本算法将介绍其中的一些技术。 这个项目的目标是创建一种方法,使用Python和OpenCV在道路上找到车道线。...在这样做之后,我们可以观察到黄色和白色的车道是如何很好地隔离。 ? 现在我们使用OR操作合并这两个掩码,然后使用AND操作与原始映像合并,并仅保留相交的元素。 ? 到目前为止,结果非常令人满意。...看看上面的图片,我们根据汽车所在车道的轮廓“猜测”这个区域可能是什么,并定义一个多边形,它将作为我们的关注区域。 我们将精明的分割图像并排放在一起,观察如何只保留最相关的细节: ?...为了使车道检测更平滑,并利用每一帧的排序和位置(因此也包括车道),我决定在帧之间插入泳道梯度和截取,并剔除任何与前一帧的计算平均值偏离太多的线。 车道检测器 记住,视频是一系列的帧。...因此,如果在t坐标系下,我们计算出的直线与我们在坐标系[0,t-1]中计算出的直线斜率和截距的平均值有不相称的差异,那么我们就可以利用之前坐标系中的信息来平滑我们在路上跟踪的直线,并采取纠正步骤。

    3K21
    领券