;************************************************************************
;* [CMFAO] AME 6602 ACQUISITION DES DONNÉES SPATIALES
*
;* [GRCAO] Claude Parisel
*
;* Mars 1999
*
;************************************************************************
;GET-REP
; fonction d'acquisition des repères source et cible (4 points)
; et calcul de la matrice de passage des coordonnées source en
; coordonnées cible
;------------------------------------------------------------------------
; R1 Contrôle de boucle
; O Origine du repère ou 1er point
; X Point OX ou 2ème point
; Y Point sur OY ou 3ème point
; Z Point sur OZ ou 4ème point
; MAT Liste de 4 points d'un repère
;------------------------------------------------------------------------
; retour:
; mattrans: matrice de passage
;------------------------------------------------------------------------
(defun get-rep ( / r1 o x y z mat matsource matcible)
(setq r1 1)
(while
(= r1 1)
(setq repere (getstring "\nDonnez le nom du
repère [Source/Cible/Fin]: "))
(setq repere (strcase repere))
(if
(or (= repere "S")(= repere
"C"))
(progn
(setq o (getpoint "\nDonnez
l'origine du repère ou le 1er point: "))
(setq x (getpoint "\nDonnez
le point X sur OX ou le 2ème point: "))
(setq y (getpoint "\nDonnez
le point Y sur OY ou le 3ème point: "))
(setq z (getpoint "\nDonnez
le point z sur OZ ou le 4ème point: "))
(setq mat (normal (list o
x y z)))
(if (= repere "S")(setq
matsource mat)(setq matcible mat))
)
(progn
(if
(and (/= matsource
nil)(/= matcible nil))
(progn
(setq
r1 0)
(setq
mattrans (mat-mul (mat-inv matsource) matcible))
)
(setq r1 0)
)
)
)
)
:retour
mattrans
)
;-------------------------------------------------------------------------
; Exemple:
; Command: (get-rep)
; Donnez le nom
du repère [Source/Cible/Fin]:
s
;
Donnez l'origine du repère ou le 1er point:
[point]
;
Donnez le point X sur OX ou le 2ème point:
[point]
;
Donnez le point Y sur OY ou le 3ème point:
[point]
;
Donnez le point z sur OZ ou le 4ème point:
[point]
;
Donnez le nom du repère [Source/Cible/Fin]: c
;
Donnez l'origine du repère ou le 1er point:
[point]
;
Donnez le point X sur OX ou le 2ème point:
[point]
;
Donnez le point Y sur OY ou le 3ème point:
[point]
;
Donnez le point z sur OZ ou le 4ème point:
[point]
;
Donnez le nom du repère [Source/Cible/Fin]:
f
;
((0.561652 0.813592 -0.150384 0.0) (-0.812268 0.576787 0.0868241 0.0)
; (0.157379 0.0733869
0.984808 0.0) (118.0 83.0 60.0 1.0))
;--------------------------------------------------------------------------
|