BiG_DeltaXYZ

Fonction Catégorie Version
BIG 03 BiG_DeltaXYZ Fonction Géométrique 1.0 - Janvier 2007

Description

But Modifie les valeurs en X , Y et Z des coordonnées d'un point 3D
Prototype (BiG_DeltaXY Coord_Point Delta_enX Delta_enY Delta_enZ)
Argument Coord_Point - Coordonnées actuelles du point en X, Y (et Z) - Liste -
Delta_enX - Distance à ajouter ou à retrancher en X - réel -
Delta_enY - Distance à ajouter ou à retrancher en Y - réel -
Delta_enZ - Distance à ajouter ou à retrancher en Z - réel -
Retours Les nouvelles coordonnées du point. - liste -
Var. globales Néant
Description Ajoute ou retranche une valeur aux 3 coordonnées d'un point 3D.
Notes Si la coordonnée en Z n'existe pas, elle est considérée égale à 0.0
Utiliser la fonction BiG_DeltaXY pour modifier des points uniquement en 2 dimensions.
Exemples

Command:(setq Pt1 (Getpoint))
;  Cliquer un 1er point à l'écran
    (170.0 110.0 0.0)              ; Coordonnées XYZ du  point.
    (BiG_DeltaXYZ Pt1 -50 15 10)    
    retourne	(120.0 125.5 10.0)
	
Autre exemple	

Command: (setq Pt2 '(200.0 100.0))
    (200.0 100.0)                  ; Coordonnées XY 
    Il n'y a pas de coordonnées en Z -
    (BiG_DeltaXYZ Pt2 20 -50 30)  
    retourne	(220.0 50.0 30.0)

En cas d'erreur : 	

(BiG_DeltaXYZ Pt3 20 -50 30)  retourne	nil
    Pt3 est nil
	
(BiG_DeltaXYZ 100 20 -50 30)  retourne	nil
    Le 1er argument doit être une liste.
	
(BiG_DeltaXYZ Pt2 aa -50 30)  retourne	nil.
    aa n'est pas défini

La fonction


   1-  (defun BiG_DeltaXYZ (*Pt1 *DeltaX *DeltaY *DeltaZ)

   2-     (if (and *Pt1 *DeltaX *DeltaY *DeltaZ 		 
   3-	            (listp *Pt1) 		
   4-         )	 	 
   5-         (if (caddr *Pt1)		
   6-              (list	 
   7-                	(+ (car *Pt1)   *DeltaX)	 
   8-                	(+ (cadr *Pt1)  *DeltaY)	
   9-                	(+ (caddr *Pt1) *DeltaZ)	
  10-              )		
  11-              (list 		 
  12-                   (+ (car *Pt1)  *DeltaX)			
  13-                	(+ (cadr *Pt1) *DeltaY)		
  14-                   (+ *DeltaZ)		
  15-             )
  16-        )		
  17-     )	
  18-  )
Ligne 2 :  Si les arguments  *Pt1, *DeltaX, *DeltaY et *DeltaZ ne sont pas nuls,
Ligne 3 :  et si *Pt1 est bien  une liste,
Ligne 5 :      Alors si la coordonnée en Z existe,
Ligne 6 :           Regroupe dans une liste,
Ligne 7 :               l'addition de *DeltaX avec le 1er élément de Pt1	
Ligne 8 :               l'addition de *DeltaY avec le 2ème élément de Pt1
Ligne 9 :               l'addition de *DeltaZ avec le 3ème élément de Pt1.
Ligne 10 :     sinon (s'il n'y a pas de coordonnée en  Z)
Ligne 11 :          Regroupe dans une liste,
Ligne 12 :              l'addition de *DeltaX avec le 1er élément de Pt1
Ligne 13 :              l'addition de *DeltaY avec le 2ème élément de Pt1;		
Ligne 14 :              *DeltaZ
Listp : Retourne T si *Pt1 est une liste, nil dans les autres cas.
List : Prend un nombre quelconque d'expressions et les regroupe dans une liste.
Car : Renvoie le premier élément d'une liste.
Cdr : Renvoie une liste contenant tous les éléments de cette liste sauf le premier.
Cadr : Equivaut à (car (cdr Pt1)) soit ici, la coordonnée en Y de Pt1.
Caddr : Equivaut à (car (cdr (cdrPt1))) soit ici, la coordonnée en Z de Pt1.