Aller au contenu

angle minimum


polo77

Messages recommandés

bonjour a tous

je cherche une routine lisp qui me permette a partir de 3 points de definir l'angle inferieur

mais elle ne fonctionne pas systematiquement parce que si l'angle de a b < pi et b c > pi*1.5

l'angle est mal defini (le resultat de ma fonction doit etre le meme que qu'avec la fonction cot angulaire mais sans definir d'entite temporaire)

pourriez vous m'aidez a corriger cette fonction. ou evidement m'en proposer une meilleur.

 

pour l'instant j'ai fais cela :

 

(defun ctrl-ang (a b c / ADIR2 ABASE2 ANG2 ANG3 AU2 ang4 ang5)

(setq ADIR2 (getvar "ANGDIR")

ABASE2 (getvar "ANGBASE")

)

(setq ANG2 (angle a b)

ANG3 (angle c b))

(if (< Pi (abs (- ANG2 ANG3)))

(setq ANG4 (abs (- ANG2 ANG3 Pi)))

(setq ANG4 (abs (- ANG2 ANG3)))

)

(setq ANG5 (- Pi ANG4)

AU2 (getvar "AUNITS")

)

(setq ang4 (angtos (abs ang4))

ang5 (angtos (abs ang5)))

(itoa (min (atoi ang4) (atoi ang5)))

)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tu trouveras un LISP ici (angle_3pts) qui retourne l'angle relatif décrit par 3 points dans le plan défini par ces 3 points, quelque soit ce plan par rapport au SCU courant (le premier point est le sommet).

 

(angle_3pts '(0 0 0) '(1 0 0) '(1 1 0)) retourne 0.785398 radians (soit 45°)

 

(angle_3pts '(0 0 0) '(1 1 0) '(1 0 0)) retourne aussi 0.785398 radians (soit 45°)

 

(angle_3pts '(0 0 0) '(1 0 0) '(1 0 1)) retourne aussi 0.785398 radians (soit 45°)

 

angle_3pts utilise les routines vec1 et asin définies dans le même sujet.

 

 

Plus proche de ta méthode (ne fonctionne qu'en 2D):

 

(setq ang (- (angle sommet point1) (angle sommet point2)))

;; si l'angle est négatif :
(if (minusp ang)
(setq ang (+ (* 2 pi) ang))
)

;; si l'angle est plus grand que pi radians :
(if ((setq ang (- (* 2 pi) ang))
) 

 

Çà devrait marcher quelques soient les valeurs de ANGDIR et ANGBASE.

 

PS : Le setq et le premier if c'est un peu la méthode de Serge (le lien de Tramber), c'est peut-être plus facile à comprendre, mais tellement moins élégant, sacré Serge !

Le second if, c'est pour que soit retourné 45° au lieu de 315°

 

[Edité le 16/3/2006 par (gile)]

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

Lien vers le commentaire
Partager sur d’autres sites

je pense avoir quelques affinites avec rem peux tu developper ta reponses stp ?

 

C'était juste un lien rapide pour t'aider à faire ta sauce. Les problèmes d'angles m'ont toujours embrouillé !!!

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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é