只需一步,快速开始
使用道具 举报
我的解题思路:
将封闭图形的边界画成多段线,取多段线顶点,在各顶点画水平直线与多段线求交点。取出交点并与顶点形成多个四边形,通过一个函数,输入四个顶点求其最大水平距离,考察这个四边形,如果左右两边均是直线,最大距离可以通过两直线的斜率直接用公式算,如果为二次曲线,可能要用插值法求,可以利用几何知识去掉很多区间,例如两曲线都是外凸的话,所求点必然在两曲线中点之间。等等。三次曲线也一样的。
求出所有四边形的最大水平距离后,进行比较,就可以得出结果。
仅是构思,没有动手,楼主看看有否帮助。
也许这个程序能给你一点帮助,虽然他是LISP的
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=41455&extra=&page=3
(DEFUN C:MJ () (if (not (entlast)) (progn (alert "老大图形里总得有点东西再用吧。") (exit) ) ) (SETvar "CMDECHO" 0) (SETQ TXTH (CDR (ASSOC 40 (TBLSEARCH "STYLE" (GETvar "CMLSTYLE"))))) (COMMAND ".UNDO" "BE") (SETvar "CECOLOR" "1") (WHILE (SETQ PT (GETPOINT "\nSelect a Point 选取点:")) (setq LastHand (cdr(assoc 5 (entget (entlast))))) (COMMAND "BPOLY" PT "") (SETQ EN (ENTLAST)) (IF (/= LastHand (cdr(assoc 5 (entget en)))) ;不等于才能说明已经有实体生成 (PROGN (COMMAND "AREA" "O" EN) (SETQ AA (GETvar "AREA")) (IF (> TXTH 0) (COMMAND "TEXT" PT 0 (RTOS AA 2 3)) (COMMAND "TEXT" PT 3 0 (RTOS AA 2 3)) ) (ENTDEL EN) ) (alert "你应该选择内部点,不然我不干。") ) ) (COMMAND ".UNDO" "E") (SETvar "CECOLOR" "BYLAYER") (PRIN1) )(princ "\n虽然这个 MJ 的命令名总能让你想起‘麻将’但是我真的是用来计算面积的。\n\n")
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2024-11-27 10:39 , Processed in 0.197165 second(s), 23 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.