明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1744|回复: 3

出道经典题目:已知三角形三边长度,画出该三角形!(附本人代码),共同提高。

[复制链接]
发表于 2009-6-8 22:20 | 显示全部楼层 |阅读模式

下面是我的代码,调试起来很不容易,终于通过了。不知有没有高手能用更简单的办法解答该题,谢谢!期待共同提高。

;未完待续!!!还需要补充构不成三角形时的退出语句

(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)

发表于 2009-6-9 01:41 | 显示全部楼层

提供一个思路,有兴趣的可以编程实现:

先画第一条边,然后在该边的两个端点分别以第二第三条边长为半径画圆,在两圆交点和两端点之间连线,最后删除两辅助圆。

发表于 2013-12-1 20:37 | 显示全部楼层
(and (> (+ a b) c) (> (+ b c) a) (> (+ c a) b))
发表于 2015-10-15 15:16 | 显示全部楼层
谢谢楼主,找了好久这个题的答案
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-2 23:31 , Processed in 0.144486 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表