Les fonctions: GET-REP.LSP

;************************************************************************
;* [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))
;
--------------------------------------------------------------------------