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