下面是我的代码,调试起来很不容易,终于通过了。不知有没有高手能用更简单的办法解答该题,谢谢!期待共同提高。 ;未完待续!!!还需要补充构不成三角形时的退出语句 (defun c:5test3q() (setq pa (getpoint "\n 请输入三角形左下角点:")) (setq da (getreal "\n 请输入三角形底边:")) (setq db (getreal "\n 请输入三角形第二边:")) ;请输入三角形第二边:与"之间不能有空格,否则输入错误。 (setq dc (getreal "\n 请输入三角形第三边:")) (setq s (/ (+ da db dc) 2)) ;求S=(da+db+dc)/2
(setq earea (sqrt (* s (- s da) (- s db) (- s dc)))) ;求面积area=s*(s-da)*(s-db)*(s-dc)^0.5 (setq h (/ (* 2 earea) da)) ;求三角形高 h=2*area/da (setq pab (sqrt (-(* dc dc) (* h h)))) ;求高将底边分成的两部分的长度
(setq pba (sqrt (-(* db db) (* h h)))) ;判断三角形时钝角或锐角三角形,并求出dc与da的夹角 (cond ((and (< pab pba) (> pba da)) (setq angb (atan (/ h pab))) (setq angfinal (- pi angb))) ((and (> pab da) (> pab pba)) (setq angb (atan (/ h pab))) (setq angfinal angb)) ((and (< pab da) (< pba da)) (setq angb (atan (/ h pab))) (setq angfinal angb)) )
(setq pb (polar pa 0 da)) ;求pb点
(setq pc (polar pa angfinal dc)) ;求pc点 (command "line" pa pb "") (command "line" pb pc "") (command "line" pc pa "") (princ "\n 三角形的高度h=") (princ h)
(prin1) ) (prompt "\n 自动绘制三角形程序") (prin1)
|