社区
数据结构与算法
帖子详情
求:线段分割多边形的算法
yingkoz
2009-03-05 12:17:52
给定一个任意形状的不自交、封闭多边形(包括凸的和凹的)和一条线段,
1.求线段和多边形的交点个数。
2.保存分割后形成的所有的多变形。
谁有和上面类似的算法啊,麻烦告诉一下,谢谢了!!!
...全文
1096
18
打赏
收藏
求:线段分割多边形的算法
给定一个任意形状的不自交、封闭多边形(包括凸的和凹的)和一条线段, 1.求线段和多边形的交点个数。 2.保存分割后形成的所有的多变形。 谁有和上面类似的算法啊,麻烦告诉一下,谢谢了!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
油焖大侠
2012-02-24
打赏
举报
回复
怎么按顶点顺序绕一圈啊?[Quote=引用 1 楼 dlyme 的回复:]
这个问题并不复杂,不需要什么特别的算法:
1.最简单的办法,依次判断给出的线段和多边形的n条边是否相加(判断两线段是否相交总会计算吧?高效一些的可以用跨立法),就可以得到交点的个数;
2.由于你给出的是“线段”,所以存在只有一个交点的特殊情况,这时多边形没有被分割。
如果交点个数在2个或2个以上:
a)对于凸多边形来说,最多就2个交点。此时多边形被这两个交点连成的线段分割成了两个小的凸多变……
[/Quote]
umlzhijia
2009-03-13
打赏
举报
回复
我最近写了两个图形∩∪差的算法,原理很简单,先把图形调整为逆时钟旋转,在交点处不断转换在不同边中行走,就可以找出∩∪的集合,差集时,在a-b 时,在a中逆时钟行走,b中顺时钟行走走出的结果集 就是差集了。
大王派我去巡山
2009-03-11
打赏
举报
回复
画一下图就很清楚了,其实就是这个意思:
swiftwqq
2009-03-10
打赏
举报
回复
我最近也在研究这个算法,讲一个复杂多边形切割成多个小多边形,切割之后的每个小多边形至少有一段、至多有两段“割线”来作为它的边?这个是一段还是两端的如何判断?
问dlyme兄,能否再讲的详细点,谢谢。
????
想象一下,将所有的顶点和交点按照顺时针(绕多边形顺时针绕一圈)的顺序围成一个大圆。
有效(原多边形内部)割线对应的交点之间用线段连起来,这些弦不会发生交叉。
圆怎么被切的,多边形就是怎样被切的,一样的道理~
????
ningyong58
2009-03-06
打赏
举报
回复
收藏
kon3155
2009-03-06
打赏
举报
回复
[Quote=引用 1 楼 dlyme 的回复:]
对于凹多边形来说,情况要稍微复杂一点,因为交点连成的“割线”可能落在原来的多边形之外,需要对这种情况进行判断(判断两个交点的中点是否在原多边形内部,射线法、转角法...都可以)。然后按照顶点(包括交点)的顺序绕一圈,就可以得到分割后的所有多边形[/Quote]
“判断两个交点的中点是否在原多边形内部”,是那两个交点?按什么顺序的交点?像下面这个多边形被直线分割,可没那么简单啊!
大王派我去巡山
2009-03-06
打赏
举报
回复
想象一下,将所有的顶点和交点按照顺时针(绕多边形顺时针绕一圈)的顺序围成一个大圆。
有效(原多边形内部)割线对应的交点之间用线段连起来,这些弦不会发生交叉。
圆怎么被切的,多边形就是怎样被切的,一样的道理~
大王派我去巡山
2009-03-06
打赏
举报
回复
[Quote=引用 11 楼 kon3155 的回复:]
判断出内部和外部之后,怎么绕呢?如下图,怎么绕才能得到填充的多边形呢?
[/Quote]
注意切割之后的每个小多边形至少有一段、至多有两段“割线”来作为它的边。
假设有m段(在内部有效的)割线,原来的多边形就会被切成m+1块
图就不画了,这部分并不复杂,自己琢磨一下就清楚了~
大王派我去巡山
2009-03-06
打赏
举报
回复
把一个“回”字形的凹多边形一刀切成两半,看看是不是有段“割线”落在外面了?
你要求的是原来的多边形切割之后的被划分成的区域,总不能凭空多出一块来吧?
kon3155
2009-03-06
打赏
举报
回复
[Quote=引用 1 楼 dlyme 的回复:]
然后按照顶点(包括交点)的顺序绕一圈,就可以得到分割后的所有多边形
[/Quote]
判断出内部和外部之后,怎么绕呢?如下图,怎么绕才能得到填充的多边形呢?
绿色夹克衫
2009-03-06
打赏
举报
回复
因为第二问不是要保存多边形么,在里面的就成为了多边形的新的边,在外面的就不是!
[Quote=引用 9 楼 yingkoz 的回复:]
引用 1 楼 dlyme 的回复:
b)对于凹多边形来说,情况要稍微复杂一点,因为交点连成的“割线”可能落在原来的多边形之外,需要对这种情况进行判断...
为什么要判断交点连成的“割线”是否落在多边形之外?
[/Quote]
yingkoz
2009-03-06
打赏
举报
回复
[Quote=引用 1 楼 dlyme 的回复:]
b)对于凹多边形来说,情况要稍微复杂一点,因为交点连成的“割线”可能落在原来的多边形之外,需要对这种情况进行判断...
[/Quote]
为什么要判断交点连成的“割线”是否落在多边形之外?
大王派我去巡山
2009-03-06
打赏
举报
回复
[Quote=引用 5 楼 kon3155 的回复:]
“判断两个交点的中点是否在原多边形内部”,是那两个交点?按什么顺序的交点?像下面这个多边形被直线分割,可没那么简单啊!
[/Quote]
当然是按照射线的反向、判断射线上相邻两个交点的中点是在内部还是外部~
yingkoz
2009-03-06
打赏
举报
回复
不能沉啊!!!
绿色夹克衫
2009-03-05
打赏
举报
回复
就像1楼说的,依次求多边形的各个边同直线的交点,求交点可以用快斥法+跨立法(也是前两天刚学的!)
jlj84237485
2009-03-05
打赏
举报
回复
帮顶一下
yingkoz
2009-03-05
打赏
举报
回复
自己顶一下!
大王派我去巡山
2009-03-05
打赏
举报
回复
1
这个问题并不复杂,不需要什么特别的算法:
1.最简单的办法,依次判断给出的线段和多边形的n条边是否相加(判断两线段是否相交总会计算吧?高效一些的可以用跨立法),就可以得到交点的个数;
2.由于你给出的是“线段”,所以存在只有一个交点的特殊情况,这时多边形没有被分割。
如果交点个数在2个或2个以上:
a)对于凸多边形来说,最多就2个交点。此时多边形被这两个交点连成的线段分割成了两个小的凸多变形;
b)对于凹多边形来说,情况要稍微复杂一点,因为交点连成的“割线”可能落在原来的多边形之外,需要对这种情况进行判断(判断两个交点的中点是否在原多边形内部,射线法、转角法...都可以)。然后按照顶点(包括交点)的顺序绕一圈,就可以得到分割后的所有多边形。
Godot引擎2D
多边形
实时破碎插件:原理、实现与性能优化
多边形
处理是计算机图形学和游戏开发中的基础技术,涉及顶点、边和面的几何运算,常用于碰撞检测、地形生成和物理模拟。其核心原理是通过
算法
对
多边形
进行
分割
、合并与布尔运算,在游戏开发中,这一技术能显著提升物理交互的真实感与沉浸感。基于几何切割与物理重构,开发者可以实现实时的物体破碎效果,让游戏中的墙体、玻璃等元素能够动态分裂成多个具备独立物理属性的碎片。这种技术不仅增强了视觉效果,还扩展了游戏机制设计的可能性,例如可破坏地形、环境谜题等。本文聚焦于Godot引擎中的2D
多边形
实时破碎插件,深入探讨其切割
算法
、物理
多边形
分割
成若干凸
多边形
(NavMesh的初步形成)
本文基于 Arkin, Ronald C.的论文 “Path planning for a vision-based autonomous robot”.论文链接部分计算几何的
算法
基于现任佐治亚理工教授 Ronald C. Arkin,在1986年时发表了一篇叫做Path planning for a vison-based autonomous robot的报告,隶属robotics领域。文章提出了Meadow Map的方法以长时间存储地图。Meadow Map为现代Navmesh系统的雏形,
通过turfjs使用
线段
分割
矢量
多边形
高德地图
线段
分割
多边形
线段
切割
多边形
算法
大家好,分享一个几何
算法
思路,欢迎提出更优的方法! 一、问题:用一个
线段
集切割一个
多边形
,得到多个切割后的
多边形
。将其看成以点为节点的图结构,依次搜索最小的闭合区域。 三、
算法
思路: 1 所有
线段
求
相交,得到所有点,并根据点和点之间的连接关系,得到有向图(双向连接) vector<Point> AllPts;//所有的交点 map<int,vector<int>> Graph;//有向图,key为节点下标,value为和其相连的点 ...
多边形
的扫描转化
算法
多边形
的扫描转化
算法
(python 实现)实验目的实现从
多边形
顶点表示到点阵表示的转换,从
多边形
给定的边界出发,通过扫描线的方式
求
出位于其内部各个像素,从而达到对
多边形
填充的作用。
算法
思想按扫描线顺序,计算扫描线与
多边形
的相交的交点,这些交点将扫描线
分割
成落在
多边形
内部的
线段
和落在
多边形
外部的
线段
,并且二者相间排列。再用要
求
的颜色显示这些区间的所有象素。有效边:指与当前扫描线相交的
多边形
的边,也称为
数据结构与算法
33,025
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章