;************************************************************************
;* [CMFAO] AME 6602 ACQUISITION DES DONNÉES SPATIALES
*
;* [GRCAO] Claude Parisel
*
;* Mars 1999
*
;************************************************************************
; MAKE-ROT
; Calcul d'un ensemble de rotations dans l'ordre choisi
; et retour de la matrice dans cet ordre
;------------------------------------------------------------------------
; retour liste des paramètres des rotations successives :liste de liste
; op paramètres de chaque rotation:liste
; mattrans matrice de rotation
; long nombre de rotations
; c compteur
;------------------------------------------------------------------------
; RETOUR:
; MATTRANS matrice de rotation globale
;---------------------------------------------------------------------
(defun make-rot (retour / c op long)
;initialisation de la matrice
;---------------------
(setq mattrans (mat-i 4))
;traitement de la boucle
;--------------------------
(setq long (length retour))
(setq c 0)
(while
(< c long)
(setq op (nth c retour))
(if
(= (car op) "X")
(setq mattrans (mat-mul mattrans (mat-rotx
(last op))))
)
(if
(= (car op) "Y")
(setq mattrans (mat-mul mattrans (mat-roty
(last op))))
)
(if
(= (car op) "Z")
(setq mattrans (mat-mul mattrans (mat-rotz
(last op))))
)
(if
(= (car op) "Q")
(setq mattrans (mat-mul mattrans (mat-rotq
(cdr op))))
)
(setq c (+ c 1))
)
;Retour
;------
mattrans
)
;---------------------------------------------------------------------------
;
Exemple:
; Command: (make-rot "X" 30)
; ((1.0
0.0 0.0 0.0) (0.0 0.866025 0.5 0.0) (0.0 -0.5 0.866025 0.0)
; (0.0 0.0
0.0 1.0))
;----------------------------------------------------------------------------
|