BiG_DeltaXY

Fonction Catégorie Version
BIG 02 BiG_DeltaXY Fonction Géométrique 1.0 - Janvier 2007

Description

But Modifie les valeurs en X et Y des coordonnées d'un point 2D ou 3D
Prototype (BiG_DeltaXY Coord_Point Delta_enX Delta_enY )
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 -
Retours Les nouvelles coordonnées du point. - liste -
Var. globales Néant
Description Ajoute ou retranche une valeur aux coordonnées X et Y d'un point.
Notes Si la coordonnée en Z existe, elle est retournée sans changement.
Utiliser la fonction BiG_DeltaXYZ pour modifier également la coordonnée en Z d'un point en 3D.
Exemples

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

Command: (setq Pt2 '(200.0 100.0))
    (200.0 100.0)                  ; Coordonnées XY 
    (BiG_DeltaXY Pt2 20 -50)  
    retourne	(220.0 50.0).

En cas d'erreur : 	

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

La fonction


   1-  (defun BiG_DeltaXY (*Pt1 *DeltaX *DeltaY)

   2-     (if (and *Pt1 *DeltaX *DeltaY 		 
   3-	            (listp *Pt1) 		
   4-         )	 	 
   5-         (if (caddr *Pt1)		
   6-             (list	 
   7-                	(+ (car *Pt1)   *DeltaX)	 
   8-                	(+ (cadr *Pt1)  *DeltaY)	
   9-                	(caddr *Pt1) 
  10-             )		
  11-             (list 		 
  12-                   (+ (car *Pt1)  *DeltaX)			
  13-                	(+ (cadr *Pt1) *DeltaY)				
  14-             )
  15-        )		
  16-     )	
  17-  )
Ligne 2 :   Si les arguments  *Pt1, *DeltaX,  et *DeltaY  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 :               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;		

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 : équivaut à (car (cdr (cdrPt1))) soit ici, la coordonnée en Z de Pt1.