Aller au contenu

Messages recommandés

Posté(e)

attention mystere???

je dessine un carre de 5.40 unites

je fais (setq pt1 (getpoint)) le premier point

(setq pt2 (getpoint)) le deuxieme

(setq dist1 (distance pt1 pt2)) j obtiens 5.40 ce qui est normal.

mais ou c'est bizarre :

(setq b (fix (/ dist1 0.60))) donne 8.0

alors que (fix (/ 5.4 0.60)) est egal a 9.0!!!!

 

Posté(e)

Salut,

 

Ça vient sûrement de la valeur de dist1 qui doit être très légèrement inférieure à 5.4

 

Essaye (rtos dist1 2 16), tu auras sûrement un résultat du genre : "5.399999999999998"

 

C'est normal, c'est probablement du à une très légère imprécision dans le calcul de la distance avec des points quelconques.

 

Essaye la séquence suivante :

on sélectionne un point quelconque à l'écran, depuis ce point on en calcule 2 autre en mode polaire avec des angles différents (0° et 60°) et la même longueur (5.4)

 

(setq p1 (getpoint "\Cliquer un point quelconque: "))

(setq p2 (polar p1 0.0 5.4))

(setq p3 (polar p1 (/ pi 3) 5.4))

 

On calcule la distance du premier point au second et du premier au troisième

 

(setq d1 (distance p1 p2)) -> 5.4

(setq d2 (distance p1 p3)) -> 5.4

 

Ces distances ne seront pas forcément strictement égales

 

(= d1 d2) -> nil

(equal d1 d2 1e-13) -> T

 

 

Tu peux utiliser la routine suivante pour arrondir un peu dist1.

 

;;; ROUND Arrondit à la valeur la plus proche en fonction de prec
;;; (round pi 0.01) -> 3.14
;;; (round pi 1e-5) -> 3.14159
;;; (round 5456.50 1.0) -> 5457.0
;;; (round 5456.50 100.0) -> 5500.0
(defun round (num prec)
 (if (zerop prec)
   num
   (if	(minusp num)
     (* prec (fix (- (/ num prec) 0.5)))
     (* prec (fix (+ (/ num prec) 0.5)))
   )
 )
) 

 

(rtos (round dist1 1e-13) 2 16) retourne "5.400000000000000"

 

et

 

(fix (/ (round dist1 1e-13) 0.60)) retourne 9

 

 

[Edité le 2/4/2008 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité