cxjzxh 发表于 2014-5-12 22:18:26

xyp1964 发表于 2014-5-12 17:53 static/image/common/back.gif
这样的图会出现啥效果?

以所选图元的凸包来选择,这样可以避免直接用矩形框选择的不精确。

cxjzxh 发表于 2014-5-12 22:29:18

cxjzxh 发表于 2014-5-12 22:18 static/image/common/back.gif
以所选图元的凸包来选择,这样可以避免直接用矩形框选择的不精确。

院长有什么好思路,说说嘛。

z1234567890 发表于 2014-5-17 22:12:17

我能解决。E:\gif\cxjk.gif和这个是一个道理

Jack_PC 发表于 2014-5-17 23:29:01

Gu_xl 发表于 2014-5-12 20:05 static/image/common/back.gif
程序:



希望G版顺便说说程序的原理

illcyt 发表于 2014-7-25 11:42:36

Gu_xl 发表于 2014-5-12 20:05 static/image/common/back.gif
程序:



当框选一个图的时候,会出现上面图是一个盒子,下面图名是若干个盒子,怎么解决呢

邹锋 发表于 2014-8-19 22:02:28

G版的还点小BUG,上传个图,测试下,很简单的图
G版可以下载测试下

如下图

邹锋 发表于 2014-8-19 22:03:25

Gu_xl 发表于 2014-5-12 20:05 static/image/common/back.gif
程序:



G版主,你的程序还有点不对,应该是点计算出错了吧,见36楼我上传的图

Jack_PC 发表于 2014-8-19 22:39:56

都这么久的贴了,希望知道的出来说说程序的原理

邹锋 发表于 2014-8-20 00:48:21

本帖最后由 邹锋 于 2014-8-25 22:01 编辑

Jack_PC 发表于 2014-8-19 22:39 static/image/common/back.gif
都这么久的贴了,希望知道的出来说说程序的原理

求出每 一个实体的最小包围框的角点,然后每个点与点表循环判断是不是在别的对角点表内,


BOX是求一个实体的最小包围框函数,对SPLINE很有用
intersect 函数是判断每两个包围框的角点,判断第一个A的两个角点是在那个包围框内还是外,如果在外,则不返回,如果要交就返回这两个中的最小点与最大点



rectang 函数是生成一个最小框,

它如果是这样的图形,会出现错误的话,我再加一组判断就行了




(defun intersect (a b)
    (if
      (or
        (and
          (<= (caar a) (caar b) (caadr a))
          (<= (cadar a) (cadar b) (cadadr a))
        ) ;_ 结束and
        (and
          (<= (caar a) (caar b) (caadr a))
          (<= (cadar a) (cadadr b) (cadadr a))
        ) ;_ 结束and
        (and
          (<= (caar a) (caadr b) (caadr a))
          (<= (cadar a) (cadadr b) (cadadr a))
        ) ;_ 结束and
        (and
          (<= (caar a) (caadr b) (caadr a))
          (<= (cadar a) (cadar b) (cadadr a))
        ) ;_ 结束and
       
        (and
          (<= (caar a) (caar b))
          (>= (caadr a) (caar b))
          (<= (caadr a) (cadadr b))
          (>= (cadar a) (cadar b))
          (<= (cadadr a) (cadadr b))          
        ) ;_ 结束and

      ) ;_ 结束or
       (list
       (apply 'mapcar (cons 'min (append a b)))
       (apply 'mapcar (cons 'max (append a b)))
       ) ;_ 结束list
    ) ;_ 结束if
) ;_ 结束defun

邹锋 发表于 2014-8-25 22:03:59

Jack_PC 发表于 2014-8-19 22:39 static/image/common/back.gif
都这么久的贴了,希望知道的出来说说程序的原理

见39楼

增加一组判断

      (and
         (<= (caar a) (caar b))
         (>= (caadr a) (caar b))
         (<= (caadr a) (cadadr b))
         (>= (cadar a) (cadar b))
         (<= (cadadr a) (cadadr b))         
         ) ;_ 结束and
页: 1 2 3 [4] 5 6
查看完整版本: 研究过最大包围框的,请进