 - ;;code by qjchen
- (defun q:geo:2line:ang2(p1 p2 p3 p4)
- ((lambda(x) (atan (sqrt (abs (- 1.0 (* x x)))) x))
- (/ (apply '+ (mapcar '* (mapcar '- p2 p1) (mapcar '- p4 p3))) (distance p1 p2) (distance p3 p4))
- )
- )
- (defun c:tt(/ ng0 ang1 ang3 ang4 cen ds1 ds2 ipt mpt p0 p1 p1a p2 p3 p4 p5 p5a r)
- (setq p1 '(-16.25 0)
- p0 '(0 0)
- p5 '(0 7)
- ang0 (* 5.71059314 (/ pi 180.0) );角度值转弧度值
- r 3.5
- )
- (setq p5a(polar p5 ang0 1.0) ;求p5->p4斜线上一点p5a
- p1a(polar p1 (* pi 0.5) 1.0) ;求p1->p2直线上一点p1a
- ipt(inters p1 p1a p5 p5a nil);求p5->p5a p1->p1a直线交点ipt
- ang1 (* (q:geo:2line:ang2 ipt p1 ipt p5) 0.5);求p5->p5a p1->p1a直线夹角值ang1
- ds1 (/ (* r (cos ang1)) (sin ang1));求ipt->p4长度(圆弧与斜线是垂直的,已知角度\对边,求邻边长)
- ds2 (/ r (sin ang1));求ipt->cen长度(圆弧与斜线是垂直的,已知角度\对边,求斜边边长)
- )
- (setq p2(polar ipt (angle ipt p1) ds1) ;求得p2点
- p4(polar ipt (angle ipt p5) ds1) ;求得p4点
- )
- (setq mpt(mapcar '(lambda(x y)(* 0.5 (+ x y))) p2 p4) ;求得p2->p4的中点
- ang3(angle ipt mpt);求ipt->mpt角度
- ang4(angle mpt ipt);求mpt->ipt角度
- cen(polar ipt ang3 ds2);求圆心cen点
- p3(polar cen ang4 r);求p3点
- )
- ;(command "line" "non" p2 "non" p1 "non" p0 "non" p5 "non" p4 "")
- ;(command "arc" "non" p2 "non" p3 "non" p4 "")
- (command "pline" "non" p0 "non" p1 "non" p2 "a" "non" p4 "l" "non" p5 "c")
- )
|