Les fonctions: PHOTO-G.LSP

*************************************************************************
;* [CMFAO] AME 6602 ACQUISITION DES DONNÉES SPATIALES                   *
;* [GRCAO] Claude Parisel                                               *
;* Mars 1999                                                            *
;************************************************************************
; PHOTO-G
; Reconstitution photogrammétrique à partir de 6 points homologues objet
; image1 et image2.
; On reconstitue les 2 matrices de transformation et on calcule 1 point
; à partir de ses 2 images
;------------------------------------------------------------------------
; MOBJListe des 6 points objets
; MPER1Liste des 6 points dans l'image 1
; MPER2 Liste des 6 points dans l'image 2
; MATPERS1 Matrice de perspective 1
; MATPERS2Matrice de perspective 2
; SUITEindice de boucle
; REPRéponse usager
; P1Point image 1
; P2Point image 2
; PPoint de saisie d'un des 6 points
;------------------------------------------------------------------------
; RETOUR: points objets
;------------------------------------------------------------------------
(defun photo-g ( / );mobj mper1 mper2 matpers1 matpers2  suite p1 p2 cont
                   ;rep p)

  ;saisie du système objet
  ;-----------------------
  (print "Système Objet: Choisissez 6 points connus: ")
  (setq mobj (list))
  (setq cont 1)
  (while
    (<= cont 6)
    (setq p (getpoint (strcat "\nPoint OBJ-" (itoa cont) ": ")))
    (setq mobj (cons p mobj))
    (setq cont (+ cont 1))
  )
  ;Saisie du système photo1
  ;------------------------
  (print "Système photo1: Choisissez 6 points, Dans le même ordre: ")
  (setq mper1 (list))
  (setq cont 1)
  (while
    (<= cont 6)
    (setq p (getpoint (strcat "\nPoint PER-" (itoa cont) ": ")))
    (setq mper1 (cons p mper1))
    (setq cont (+ cont 1))
  )
  ;calcul de la matrice de la photo1
  (setq matpers1 (3dr2 mobj mper1))

  ;Saisie du système photo2
  ;-------------------------
  (print "Système photo2: Choisissez 6 points, Dans le même ordre: ")
  (setq mper2 (list))
  (setq cont 1)
  (while
    (<= cont 6)
    (setq p (getpoint (strcat "\nPoint PER-" (itoa cont) ": ")))
    (setq mper2 (cons p mper2))
    (setq cont (+ cont 1))
  )
  ;calcul de la matrice de la photo2
  (setq matpers2 (3dr2 mobj mper2))

  ;saisie et calcul des points des 2 photos
  ;----------------------------------------
  (setq suite 1)
  (print "donnez un point homologue dans chaque photo: ")
  (while
    (= suite 1)
    (setq p1 (getpoint "\nPoint dans la 1ère photo: "))
    (setq p2 (getpoint "\nPoint dans la 2ème photo: "))
    (if
      (and (/= p1 nil)(/= p2 nil))
      (progn
        (command "point" "NONE" (3dr1 matpers1 matpers2 p1 p2))
        (setq rep (getstring "Conserver, Reprendre [C/R] ? "))
        (if
          (= (strcase rep) "R")
          (command "U")
        )
      )
      (setq suite 0)
    )
  )
)
;---------------------------------------------------------------------