找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 444|回复: 3

[ARX程序]:如何判断一个图形是封闭的??

[复制链接]
发表于 2006-2-15 12:01:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如题!!!小弟是个菜鸟,望各位大哥不吝赐教!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-2-15 14:32:27 | 显示全部楼层
严格的算法没有,但可以通过程序分析与人工结合来做,在图形的轮廓上任意找一点(必须为线的端点,定义问图形的起点),然后根据此点按顺时针或逆时针方向分析出下一个点,在该点处做选择集,如果选择集的数量大于2(作为复杂情况处理),如果为2,则再以此点为依据分析下一点,依次类推,当下一点与起点重合就是封闭的了,如果循环了1000次也没有重合,那就退出循环。这是一个最简单的思路,但绝不能推而广之,只能在简单的场合使用,以此做参考
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-16 10:01:28 | 显示全部楼层
俺有一个进一步的想法,在RedCad的算法的基础上,嘿嘿;
先说明理由:一般情况下,判断一个图形是否封闭,是想判断外部轮廓,找到整个图形的一个小区域的封闭是没有意义的。所以不妨寻找一个图形中所有的最小封闭区域(互不重叠),然后组合成一个大的区域。
仍然采用楼上的算法,不过要判断找到的区域是最小的,不能拆分。
要找到所有的最小区域。然后组合。


这只是一个思路,细节还没考虑,不过我想也许可行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-16 12:50:16 | 显示全部楼层
我又有了一种思路:把要分析的区域做选择集,然后对选择集进行分析:(假如所有的实体均为直线)
第一步:排除明显不合理实体
        遍历所有实体,如果某条线的端点没有其它实体与其连接,那么这条线肯定不可能为
        封闭图形的轮廓,遍历结束后,将所有不合理实体从选择集中去除,然后再次按照以
       上方法对选择集进行第2次遍历,依次类推,在符合3个之一的条件下结束循环:
       1。当某次遍历的结果找不到不合理实体则退出;
       2。当选择集中实体的数量小于3时退出,组成一个封闭图形至少要3根线;
       3。当循环次数大于10000时,作为一种异常退出;
第2步:经过第一步的处理,剩余的实体必然能组成一个或多个封闭图形。
       到此一个图形是否封闭已判断出来,至于要找出这所有的封闭图形,那又是另外一个话
       题了,难度就更大了,当然还是可以分析出来。大家可以多发表自己的思路啊,我还有
       难题要分析,就想到这里了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 13:51 , Processed in 0.196563 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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