chlh_jd
发表于 2010-9-20 00:23:00
hifly兄这个源码确实有更高的效率,没有仔细推敲,不知能否利用交叉引用递归来提高效率
暂时发现in2这个函数改为递归效率会更高些
;;判断点集是否在圆内----------------------
;;;改为递归写法
(defun in2 (ptl cen r)
(cond ((null (cadr ptl))
(in1 (car ptl) cen r)
)
((in1 (car ptl) cen r)
(in2 (cdr ptl) cen r)
)
(t nil)
)
)
chlh_jd
发表于 2010-9-20 00:26:00
另外在4pc函数里面,有个疑问foreach里面是否需要重新定义minr为r
;;定义四点的最小圆圆心半径,并返回三点坐标
(defun 4pc (p1 p2 p3 ptmax / pts mind minr r 4ps)
(setq pts (list (3pc p1 p2 ptmax)
(3pc p1 p3 ptmax)
(3pc p2 p3 ptmax)
)
)
(setq 4ps (list p1 p2 p3 ptmax))
(setq minr 1e308)
(foreach n pts
(setq r (cadr n))
(if (and (< r minr)
(in2 4ps (car n) r)
)
(setq mind n
minr r);_这里是否需要加上重定义minr为r
)
)
mind
)
highflybird
发表于 2010-9-21 14:24:00
chlh_jd发表于2010-9-20 0:26:00static/image/common/back.gif另外在4pc函数里面,有个疑问foreach里面是否需要重新定义minr为r
以下内容为程序代码:
;;定义四点的最小圆圆心半径,并返回三点坐标
(defun 4pc (p1 p2 p3 ptmax / pts m
</td></tr>
<tr style="DISPLAY: none">
<td id="copycode39167"></td></tr></tbody></table></p></div>
<p>谢谢哦,这几天忙着画图呢,没来得及看你的代码。呵呵,程序写了很多年了,还没仔细推敲。</p>
<p> </p>
<p>祝你中秋快乐!</p>
chlh_jd
发表于 2010-9-22 13:25:00
<p>也祝你中秋快乐!</p>
<p>顺祝大家中秋快乐!~</p>
仲文玉
发表于 2010-10-18 08:17:00
楼主,如果是最小正三角形有没有试过,或者正方形,正N边形
highflybird
发表于 2010-10-27 15:23:00
仲文玉发表于2010-10-18 8:17:00static/image/common/back.gif楼主,如果是最小正三角形有没有试过,或者正方形,正N边形
<p>没问题,就算是正多边形,算法也成立。</p>
highflybird
发表于 2010-10-27 15:26:00
chlh_jd发表于2010-9-20 0:26:00static/image/common/back.gif另外在4pc函数里面,有个疑问foreach里面是否需要重新定义minr为r
以下内容为程序代码:
;;定义四点的最小圆圆心半径,并返回三点坐标
(defun 4pc (p1 p2 p3 ptmax / pts m
</td></tr>
<tr style="DISPLAY: none">
<td id="copycode38689"></td></tr></tbody></table></p></div>
<p>你的这个意见也是对的。</p>
<p>但是让我感到奇怪的是,我没有这么做,居然也可以,只不过按照我的思路,应该是你修改那样。</p>
461045462
发表于 2010-10-28 23:56:00
<p> 来明经这么久,今天才闯到了这里。</p>
<p>似乎又找到了一个芝麻开门的地方</p>
<p>来的太迟了</p>
wwwcncomcn
发表于 2011-8-15 14:25:27
highflybir 发表于 2009-2-27 02:41 static/image/common/back.gif
原以为这样的文章可能没多少实际用途,被冷藏了这么久。想不到还有点用处啊。下面的程序可以给你解决这个烦 ...
楼主啊,我新来的,没币了,能不能施舍一下你的附件。。。。
monkeylzx
发表于 2011-9-6 13:18:54
多谢分享,来学习一下