找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: GTJ116600

[求助] 怎样判断多义线之间的关系,怎样求两条多义线围成区域的面积

[复制链接]
发表于 2013-4-19 12:32:55 | 显示全部楼层
    判断多边形的相互关系,个人认为,在CAD里,用面域法应该是最简便的方法了,如果非要用拓扑算法来判断,事情就变得非常麻烦!判断点、线、面之间的关系是拓扑学里的基本算法,若要用Lisp实现起来,效率无法恭维,况且CAD里的多段线,还有圆弧,圆弧情况的处理则更加麻烦!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 837个

财富等级: 财运亨通

发表于 2013-4-19 13:27:26 | 显示全部楼层
两条不封闭的多义线相交部分没面积吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-4-19 15:16:14 来自手机 | 显示全部楼层
用交点断开,再生成面域来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-4-28 20:54:06 | 显示全部楼层
对于数量小的情况用面域的方法是较好的了,大数据的LISP运行速度很慢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-4-29 08:29:58 | 显示全部楼层
不用面域应该也可以吧,
1,判断多义线A和B的位置关系,在内/在外/相交
2,相交的情况下,在交点打断重新生成4条多义线
   组合出三条封闭多义线再判断
3,如果有重合边相交要另外处理。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-4-29 08:45:30 来自手机 | 显示全部楼层
按这种规则多条线也可以围合区域来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-29 18:33:47 | 显示全部楼层
论文中心更新了篇论文,判断点和多边形位置关系的,大家可以参考参考。

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

使用道具 举报

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-30 22:28:42 | 显示全部楼层
本帖最后由 Lispboy 于 2013-4-30 22:33 编辑

借鉴下老大上面发的论文,给大家写个测试点是否在多边形内的代码,通过这个代码,测试如果一个多边形的所有顶点都在另外一个内,那就是多边形在另外一个内了,如果有部分点在,那么两个多边形的关系就是相交。

用的是射线法。

[pcode=lisp,true]
;;;-----------------------------------------------------------;;
;;; 向量乘标量(系数)                                              ;;
;;; Vector x Scalar - Lee Mac                                      ;;
;;; Args: v - vector in R^n, s - real scalar                      ;;
;;;-----------------------------------------------------------;;
(defun MAT:vxs ( v s )
  (mapcar (function (lambda ( n ) (* n s))) v)
)
(defun GEO:Centroid (Pts / )
  (MAT:vxs (apply 'mapcar (cons '+ pts)) (/ 1.0 (length pts)))
)
(defun Points:PntIsIn (pts testpoint / centroid i_cnt item p_1 p_2 tmp vp1 x)
  (setq i_cnt nil
        centroid (geo:centroid pts)
        vp1 3e10
        tmp (angle testpoint centroid)
        vp1 (polar testpoint tmp vp1)
        i_cnt nil
  )

  (while (cdr pts)
    (setq p_1 (car pts)
          p_2 (cadr pts)
    )
    (if (setq tmp (inters
                    testpoint
                    vp1
                    p_1
                    p_2
                    't
                  )
        )
      (setq i_cnt (cons tmp i_cnt))
    )
    (setq pts (cdr pts))
  )
  (if i_cnt
    (progn
      (setq tmp (list (car i_cnt)))
      (foreach item (cdr i_cnt)
        (if (apply
              'and
              (mapcar
                '(lambda (x)
                   (not (equal x item 0.001))
                 )
                tmp
              )
            )
          (setq tmp (cons item tmp))
        )
      )
      (setq i_cnt tmp)
    )
  )
  (if (zerop (rem (length i_cnt) 2))
    nil
    t
  )
)
[/pcode]

点评

[attachimg]5787[/attachimg] 像这种图能判断属于什么关系?  详情 回复 发表于 2013-10-14 14:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-10-14 14:10:30 | 显示全部楼层
Lispboy 发表于 2013-4-30 22:28
借鉴下老大上面发的论文,给大家写个测试点是否在多边形内的代码,通过这个代码,测试如果一个多边形的所有 ...

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

使用道具 举报

已领礼包: 43个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

发表于 2014-10-14 12:22:59 | 显示全部楼层
这种问题的解决是非常困难的;原因:1)图形的个数不定2)图形的位置不知3)图形位置关系i:相交 ii:包含 iii: 无关 iv:相切;因此位置关系的判断决定程序速度4)非闭合图元可过滤掉。目前国内能做此问题解决只有深圳志和诚科技有限公司(zhcdesign.com) 开发的软件ZHCLogicRelation,是目前性价比最高的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 18:16 , Processed in 0.261979 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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