求个思路:判断两个及以上的图形是否重叠。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Visitor233
V2EX    算法

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

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

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

    布尔运算、求面积,都可以使用成熟高效的 clipper 库。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5327 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 09:15 PVG 17:15 LAX 02:15 JFK 05:15
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86