june_24 发表于 2005-7-21 10:13:00

求助:如何找出封闭图形的最大水平距离??急

请教高手,如何找出封闭图形的最大水平距离??就是封闭图形与一水平线相交,相交的最大距离。急啊。

wyj7485 发表于 2005-7-21 11:32:00

Obj.GetBoundingBox MinP, MaxP<BR>

june_24 发表于 2005-7-21 13:15:00

<br>

是封闭图形与一水平线相交,相交的最大距离呀. 这两个点在这个封闭图形中,必须x坐标相等啊。<br>

et27 发表于 2005-7-22 13:39:00

<P>我的解题思路:</P>
<P>将封闭图形的边界画成多段线,取多段线顶点,在各顶点画水平直线与多段线求交点。取出交点并与顶点形成多个四边形,通过一个函数,输入四个顶点求其最大水平距离,考察这个四边形,如果左右两边均是直线,最大距离可以通过两直线的斜率直接用公式算,如果为二次曲线,可能要用插值法求,可以利用几何知识去掉很多区间,例如两曲线都是外凸的话,所求点必然在两曲线中点之间。等等。三次曲线也一样的。</P>
<P>求出所有四边形的最大水平距离后,进行比较,就可以得出结果。</P>
<P>仅是构思,没有动手,楼主看看有否帮助。</P>

june_24 发表于 2005-9-21 10:10:00

谢谢各位的解答。

MJTD_7777 发表于 2005-9-21 11:02:00

<P>也许这个程序能给你一点帮助,虽然他是LISP的</P>
<P><A href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=41455&extra=&page=3" target="_blank" >http://bbs.mjtd.com/forum.php?mod=viewthread&tid=41455&extra=&page=3</A></P>
<P>(DEFUN C:MJ ()<BR>&nbsp; (if (not (entlast))<BR>&nbsp;&nbsp;&nbsp; (progn<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (alert "老大图形里总得有点东西再用吧。")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (exit)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;(SETvar "CMDECHO" 0)<BR>&nbsp;(SETQ TXTH (CDR (ASSOC 40 (TBLSEARCH "STYLE" (GETvar "CMLSTYLE")))))<BR>&nbsp;(COMMAND ".UNDO" "BE")<BR>&nbsp;(SETvar "CECOLOR" "1") <BR>&nbsp;(WHILE (SETQ PT (GETPOINT "\nSelect a Point 选取点:"))<BR>&nbsp;&nbsp; (setq LastHand&nbsp; (cdr(assoc 5 (entget (entlast)))))<BR>&nbsp;&nbsp; (COMMAND "BPOLY" PT "")<BR>&nbsp;&nbsp; (SETQ EN (ENTLAST))<BR>&nbsp;&nbsp; (IF (/= LastHand (cdr(assoc 5 (entget en)))) ;不等于才能说明已经有实体生成&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; (PROGN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (COMMAND "AREA" "O" EN)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETQ AA (GETvar "AREA"))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (IF (&gt; TXTH 0)<BR>&nbsp; (COMMAND "TEXT" PT 0 (RTOS AA 2 3))<BR>&nbsp; (COMMAND "TEXT" PT 3 0 (RTOS AA 2 3))<BR>&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ENTDEL EN)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp; (alert "你应该选择内部点,不然我不干。")<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp; )<BR>&nbsp; (COMMAND ".UNDO" "E")<BR>&nbsp; (SETvar "CECOLOR" "BYLAYER")<BR>&nbsp; <BR>&nbsp; (PRIN1)<BR>&nbsp; )<BR>(princ "\n虽然这个 MJ 的命令名总能让你想起‘麻将’但是我真的是用来计算面积的。\n\n")</P>
页: [1]
查看完整版本: 求助:如何找出封闭图形的最大水平距离??急