另一种算法,三维旋转
 - (defun tt (ang1 ang2 ang3 / xty-g-3ptang a b c mat1 mat2 mat3 pt0 pt1 pt12 pt2 pt22 pt3 pt4)
- (defun xty-G-3ptang (pt1 pto pt2 / a b c)
- (setq a (MAT:v-v pto pt1)
- b (MAT:v-v pto pt2)
- ang (xty-acos (/ (MAT:dot a b)
- (* (MAT:norm a) (MAT:norm b))))))
- (setq ang1 (/ (* pi ang1) 180)
- ang2 (/ (* pi (- 90 ang2)) 180)
- ang3 (/ (* pi (- 90 ang3)) 180))
- (setq pt0 '(0 0 0)
- pt1 '(1. 0 0)
- pt2 '(0 0 1.)
- mat1 (MAT:Rotation3D pt0 pt2 ang1)
- pt3 (MAT:mxp mat1 pt1)
- mat2 (MAT:Rotation3D pt0 pt1 (- ang2))
- pt12 (MAT:mxp mat2 pt2)
- mat3 (MAT:Rotation3D pt0 pt3 ang3)
- pt22 (MAT:mxp mat3 pt2)
- a (xty-g-angf&f pt0 pt1 pt12 pt0 pt3 pt22)
- pt4 (caddr a)
- b (xty-G-3ptang pt1 pt0 pt4)
- c (xty-G-3ptang pt3 pt0 pt4))
- (list (atof (angtos b 0 5)) (atof (angtos c 0 5))))
- ;;;(tt 60 20 35)=>(42.1044 23.566)
|