-
-
- (defun c:4j()
- (setq pa (getpoint "\n 请输入三角形左下角点:"))
- (setq da (getreal "\n 请输入三角形底边:"))
- (setq db (getreal "\n 请输入三角形第二边:")) ;请输入三角形第二边:与"之间不能有空格,否则输入错误。
- (setq dc (getreal "\n 请输入三角形第三边:"))
- (setq de (getreal "\n 请输入三角形第四边:"))
- (setq dd (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))))
- (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 s1 (/ (+ de db dd) 2)) ;求S=(da+db+dc)/2
- (setq earea1 (sqrt (* s1 (- s1 db) (- s1 de) (- s1 dd)))) ;求面积area=s*(s-da)*(s-db)*(s-dc)^0.5
- (setq h1 (/ (* 2 earea1) db)) ;求三角形高 h=2*area/da
- (setq pac (sqrt (-(* dd dd) (* h1 h1)))) ;求高将底边分成的两部分的长度
- (setq pca (sqrt (-(* de de) (* h1 h1))))
- (cond ((and (< pab pba) (> pba da)) (setq angb1 (atan (/ h pba))) (setq angfinal2 angb1))
- ((and (> pab da) (> pab pba)) (setq angb1 (atan (/ h pba))) (setq angfinal2 (- pi angb1)))
- ((and (< pab da) (< pba da)) (setq angb1 (atan (/ h pba))) (setq angfinal2 angb1))
- )
- (cond ((and (< pac pca) (> pca db)) (setq angc (atan (/ h1 pca))) (setq angfinal1 angc))
- ((and (> pac db) (> pac pca)) (setq angc (atan (/ h1 pca))) (setq angfinal1 (- pi angc)))
- ((and (< pac db) (< pca db)) (setq angc (atan (/ h1 pca))) (setq angfinal1 angc))
- )
- (setq ang1 (+ angfinal2 angfinal1))
- (setq ang2 (- pi ang1))
- (setq pb (polar pa 0 da)) ;求pb点
- (setq pc (polar pa angfinal dc))
- (setq pg (polar pb ang2 de))
- (command "line" pa pb "")
- (command "line" pb pc "")
- (command "line" pc pa "")
- (command "line" pc pg "")
- (command "line" pb pg "")
- (princ ang1)
- )
-
通过网上的代码修改成四边形的
如何简化?
有人提出说可以用圆,不过不会取 交点
|