;************************************************************************
;* [CMFAO] AME 6602 ACQUISITION DES DONNÉES SPATIALES
*
;* [GRCAO] Claude Parisel
*
;* Mars 1999
*
;************************************************************************
; GET-ROT
; Saisie d'un ensemble de rotations dans l'ordre choisi
; et calcul de la matrice dans cet ordre
;------------------------------------------------------------------------
; P1 1er point d'un axe quelconque de rotation
; P2 2ème point d'un axe quelconque de
rotation
; ANG Angle de rotation autour d'un axe en degrés
; REP Réponse de l'usager
; CHOIX Choix de l'usager
; C Compteur
; LONG Longueur des choix successifs
; R1 indice de boucle
;------------------------------------------------------------------------
; RETOUR:
; MATTRANS matrice de rotation globale
;---------------------------------------------------------------------
(defun get-rot ( / p1 p2 ang rep retour choix c long r1)
;Acquisition des choix
;---------------------
(setq r1 1)
(print "Donnez, en séquence, les diverses rotations:
")
(setq retour (list))
(while
(= r1 1)
(setq choix "Z")
(setq rep (strcase (getstring "\n X/Y/Z/Quelconque/F
<Z>: ")))
(if (/= rep nil)(setq choix rep))
(cond
(
(= choix "Q")
(setq p1 (getpoint "
Donnez le 1er point de l'axe de rotation: "))
(setq p2 (getpoint "
Donnez le 2ème point de l'axe de rotation: "))
(setq ang (getreal "
Donnez l'angle de rotation: "))
(setq retour (cons (list
choix ang p1 p2) retour))
)
(
(or (= choix "X")(=
choix "Y")(= choix "Z"))
(setq ang (getreal "
Donnez l'angle de rotation: "))
(setq retour (cons (list
choix ang) retour))
)
(
(= choix "F")
(setq r1 0)
(setq retour (reverse retour))
)
)
)
;Execution de la matrice
;--------------------------
(setq matrot (make-rot retour))
)
;---------------------------------------------------------------------------
;
Exemple:
; Command: (get-rot)
; "Donnez,
en séquence, les diverses rotations: "
; X/Y/Z/Quelconque/F
<Z>: x
;
Donnez l'angle de rotation: 30
;
X/Y/Z/Quelconque/F <Z>: f
;
((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))
;----------------------------------------------------------------------------
|