找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 841|回复: 10

[求助]:如何判断图形的闭合性

[复制链接]
发表于 2005-5-8 19:22:31 | 显示全部楼层 |阅读模式

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

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

×
请问下,怎么判断多条线段组成的图形是否闭合??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-5-9 09:16:05 | 显示全部楼层
把每条线段转换成矢量(AcGeVector3d)看矢量和是否是零,为零则是闭合,不为零则不闭合。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-10 07:23:46 | 显示全部楼层
能具体说明下如何把线段转换成矢量吗??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-10 08:57:36 | 显示全部楼层
AcDbLine  line;//这是你的线段
AcGeVector3d vector(line.startPoint(),line.endPoint());//就是所得到的矢量
当然我这里没有考虑,矢量的方向,因为你给的数据太少,无法给你提供更合适的算法。
假如说单纯的线段,每条线段都是任意的,没有任何关系,那么就需要循环判断了,因为
每个线段都有两种方式,你只能把所有组合判断一边,n个线段就有2的n次方个判断,当然
这只是一般情况,你可以根据上下文能做出笔者更好的算法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-11 17:38:12 | 显示全部楼层
我给一个方法。利用autocad的功能了(不过对很多情况有漏洞的)
用AcDbRegion .的方法
static Acad::ErrorStatus

createFromCurves(

const AcDbVoidPtrArray& curveSegments,

AcDbVoidPtrArray& regions);

把想判断的实体,放入curveSegments数组总,
呵呵,然后就看regions的结果了。
如果是一个,就说明是 封闭的。
没有,肯定不是封闭的。
多个 ,呵呵,就说明能形成多个封闭的面。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-13 17:37:55 | 显示全部楼层
我是在做毕业设计,老师的要求是要我从三视图计算所表示物体的体积,每个试图的面积,同时要自动判断是否所有试图都是闭合,其中难度要求是能对较简单的物体进行计算,比如餐桌并且有能力对不规则图形进行处理。

我的想法是

对于闭合的判断因为不是光求线段围成的图形还要包括圆弧,自由曲线等等,我想遍历所有顶点计算经过顶点的不同类型或不同方向的直线数量,如果少于2条则肯定是断点

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

使用道具 举报

发表于 2005-5-14 17:39:13 | 显示全部楼层
你的东西不知道做到那种程度,如果做到所有不规则任意的形状3维对象求体积,这就有一定难度。你给出的点是否有序?图形闭合,有可能还是在3维状态闭合,可是闭合并不一定在一个面呀!你还要对这个视图进行分析,到底有几个面?!面积呢?算在那个视图上?至于自由曲线
和圆弧,你可以分解成小直线。你自己说的不明白,我无法给你想出解决方案。
   我做过和你问题类似的东西(任意的),做了很长时间,用积分做的,体积和面积和实际的误差可以调的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-14 19:35:36 | 显示全部楼层
体积只要做到1个面上有不规则图形的三维对象的体积, 3视图的区分我想用手动框取 ,图形的闭合我只要判断每个面上的闭合, 分析的图形只有4个面,更多面体不需要考虑,面积用框出来的3个试图的面积分别相加,
体积现在我都不知道怎么做.
能把你做的东西发给我吗??现在很急,下个月要答辩了,我前段时间一直在住院,前不久才出院,能帮下我吗,麻烦了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-15 01:15:18 | 显示全部楼层
你的问题不是很难,估计你有看懂我代码的时间,也写出来达到要求的东西了。
体积就用积分,找到一个基准面(这个面过其中一个顶点),然后求与这个面最远的距离,把这个体积分成n份(n是你指定的数量),然后按基准面的单位矢量移动这个面,其中每个面与这个体相交,分别求这些面的面积,再与1/n距离相乘,这样求得单位体积,所有体积相加,就是你要的体积
当然这个体积和实际有误差,你可以再一次执行上述操作,但n要变大(变大多少,你自己选择),前一次误差比后一次小多少,这就是你指定误差范围。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-15 19:11:06 | 显示全部楼层
temp_go  大哥能把你的代码发给我不??

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

使用道具 举报

发表于 2005-5-16 10:29:12 | 显示全部楼层
temp_go很 热心,也很强啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 14:46 , Processed in 0.407861 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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