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