天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 10|回复: 0

去除重叠的闭合区域

[复制链接]
  • TA的每日心情
    开心
    昨天 15:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    在图形开发过程中,需要求最小闭合区域,当获得了所有的闭合区域后,有一部分区域是重叠的,现设计算法将重叠的区域删除。(此算法类似于 删除无序数组中重复的元素)

    一、去除重叠的图形[code]//去除重叠的图形
    std::vector> removeOverlapArea(vector> ClosedArea)
    {
    //> 表示一个闭合区域,有多条线段围成
    //vector> 表示闭合区域的集合
        unsigned int nSize = ClosedArea.size();
        if (nSize < 2) //只有一個閉合區域
        {
            return ClosedArea;
        }
    ​
    //去除重叠的区域
    size_t n = ClosedArea.size();
    size_t j = 0;
    ​
    for (size_t i=0; i < n; i++)
    {
        for(size_t j=0;j<i;j++)
        {
            //if(arr[i]arr[j])
            if(IsOverlap(ClosedArea[i],ClosedArea[j]))
            {
                n--;
                for (size_t k=i; k<n; k++)
                {
                    ClosedArea[k]=ClosedArea[k+1];
                }
                i--;   
            }
        }
    }
    ​
    vector<vector<CLine>>::iterator it1,it2;
    ​
    it1 = ClosedArea.begin() + n;
    it2 = ClosedArea.end();
    ​
    ClosedArea.erase(it1,it2);
    ​
    return ClosedArea;
    ​
    }
    二、判断是否是重合的图形

    //判断是否是重合的图形
    bool IsOverlap(vector AreaLeft,vector AreaRight)
    {
        for (unsigned int i = 0;i < AreaLeft.size(); i++)
        {
            CLine m_lineLeft = AreaLeft[i];
            bool bEqualLine = false;
            for (unsigned int j = 0;j < AreaRight.size();j++)
            {
                if (m_lineLeft.isEqual(AreaRight[j]))
                {
                    bEqualLine = true;
                }
            }
            if (bEqualLine  false)
            {
                return false; //只要有一条线段不相同,必然不重合
            }
        }
        return true;
    }[/code]

     

     

     

     

    去除重叠的闭合区域
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|

    GMT+8, 2024-7-1 05:14 , Processed in 0.058038 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表