Les fonctions: NORMAL.LSP

;************************************************************************
;* [CMFAO] AME 6602 ACQUISITION DES DONNÉES SPATIALES                   *
;* [GRCAO] Claude Parisel                                               *
;* Mars 1999                                                            *
;************************************************************************
; NORMAL
; normalisation d'une liste de points ou un point seul
; Mettre la dernière coordonnée à 1
;------------------------------------------------------------------------
; V      Indicateur de la nature de LPT -> 0 pour liste, 1 pour point
; LPT    Point ou liste de point
;------------------------------------------------------------------------
(defun normal (lpt / v)

  (if
    (= (type (car lpt)) 'LIST)
    (setq v 0)
    (setq v 1)
  )
  ;cas d'un point: on le met seul dans une liste
  ;-----------------------
  (if (= v 1)(setq lpt (list lpt)))
  ; traitement de la liste
  ;-----------------------
  (setq lpt
    (mapcar
      '(lambda (x)
        (if
          (= (length x) 3)
          (reverse (cons 1.0 (reverse x)))
          (if
            (/= (last x) 0)
            (list
              (/ (car x) (last x))
              (/ (cadr x) (last x))
              (/ (caddr x) (last x))
              1.0
            )
            x
          )
        )
      )
      lpt
    )
  )
  ;Retour selon le cas
  (if
    (= v 0)
    lpt
    (car lpt)
  )
)
;----------------------------------------------------------