Bonjour à tous, J'aurais voulu savoir s'il y avais une possibilité de mettre une condition sur des erreurs de calcul (ex erreur: division par zéro). Pour vous donnez un des exemples, dans mon lisp je fait calculer les coordonnées des points d'intersection entre deux cercle, sauf que dans la formule on prend comme hypothèse que les deux cercle se croisent, ceux qui est vrai pour une bonne partie de mes cercles, mais certain peuvent être inscrit l'un dans l'autre. En gros j'aimerais pouvoir lui dire que si il y a une erreur dans le calcul, qu'il fasse autre chose, mais je ne sais pas comment lui dire :(. Je sais pas si ça peut aider a la comprehension mais voici le code pour l'intersection entre deux cercle
;; Calcul coordonnée des point d'intersection entre deux cercle
;; Pt1 (x1;y1) coordonnée du centre du cercle 1 r1 rayon du cercle 1
;; Pt2 (x2;y2) coordonnée du centre du cercle 2 r2 rayon du cercle 2
;;
;; Result: *Pta* (xa;ya) coordonnée du premier point d'intersection
;; Result: *Ptb* (xb;yb) coordonnée du second point d'intersection
(defun intersection_cercle (pt0 r0 pt1 r1 / x0 y0 x1
y1 SoustX SoustY Val N A
B C D xa ya xb ya
)
(setq x0 (car pt0)
y0 (cadr pt0)
x1 (car pt1)
y1 (cadr pt1)
SoustX (- x0 x1)
SoustY (- y0 y1)
Val (/ SoustX SoustY)
N (/
(+ (- (+ (- (- (puissance r1 2)
(puissance r0 2)
)
(puissance x1 2)
)
(puissance x0 2)
)
(puissance y1 2)
)
(puissance y0 2)
)
(* 2 SoustY)
)
A (+ (puissance Val 2) 1)
B (- (* 2 y0 Val) (* 2 N Val) (* 2 x0))
C (-
(- (+ (+ (puissance x0 2) (puissance y0 2)) (puissance N 2))
(puissance r0 2)
)
(* 2 y0 N)
)
D (sqrt (- (puissance B 2) (* 4 A C)))
xa (/ (+ (- B) D) (* 2 A))
ya (- N (* xa Val))
*pta* (list xa ya 0.0)
xb (/ (- (- B) D) (* 2 A))
yb (- N (* xb Val))
*ptb* (list xb yb 0.0)
)
)