求个思路:判断两个及以上的图形是否重叠。

30 天前
 Visitor233
https://img.picui.cn/free/2024/10/20/6715285d254d4.png
在做 coreldraw 插件开发,先只考虑重叠,包含和相切稍后。官方接口提供了一种方式。来这问大佬只是想扩展下思路,以防万一。方式不限。几年没来 v2 发帖了
1680 次点击
所在节点    算法
13 条回复
Visitor233
30 天前
补充下内容,软件接口会提供图形对象供访问,一次处理 1 至 1000 个静态图形
yankebupt
30 天前
呼叫计算机图形学大神。
这个黄三角边缘肉眼可见是B样曲线的,还不止是多边形……这重叠怎么判断……矢量图……
Mark 等更新
xuanbg
30 天前
什么重叠啊,数学上这叫「相交」。判断多边形是否相交即可
shinsekai
30 天前
先判断矩形框是否相交,如果相交,再判断多边形是否相交
Visitor233
30 天前
@xuanbg
@shinsekai
是的。图中矩形框相交肯定是不够满足的。甲方只会认为黄色三角和红色矩形两个没挨到一起。
xtreme1
30 天前
看看能否转成矢量, 然后 Boost.Geometry
cheng6563
30 天前
转点阵图
jones2000
30 天前
用 2 种纯色的是填充图形, 然后把整个图保存下, 读出图片的所有的像素和颜色, 如果如果存在重叠, 对应的像素颜色就不是这 2 个纯色的。
dt201909
30 天前
@Visitor233 #5 矩形框判断是必须的,目的还是提效,特别是针对批量的情况
dt201909
30 天前
@Visitor233 #5 看到曲线了,能不能转多段线再判断。多边形相交貌似可以通过投影的算法来做。
最粗暴的方式就是,判断是否有任意线有交点(遍历),效率最低,但是可以硬写出来
dt201909
30 天前
coreldraw 插件给我感觉似乎很小众,咋跑进这一行的...
Visitor233
29 天前
@dt201909 我查了好多资料,大部分方案都是图形装入盒子,然后检测盒子的直线边有无重叠。STA 分离轴算法对凹图形(五角星)不好处理。
sillydaddy
29 天前
换个思路:根据各图形合并之后的面积,是否小于图形面积的和,来判断是否有重叠。

首先计算出这 1000 个图形(G0,G1,G2,...,G999)的布尔并,得到图形 Gu ,然后计算 Gu 的面积 Au (面积公式很简单)。如果 Au 小于这 1000 个图形各自面积的和,说明有重叠。

布尔运算、求面积,都可以使用成熟高效的 clipper 库。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1082013

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX