bseb67 Posté(e) le 11 juin 2007 Posté(e) le 11 juin 2007 Salut! dans mon lisp, je cherches à calculer l'angle entre 3 points, j'utilise le produit scalaire, AB.AC = ||AB||*||AC||*cos(AB,AC).Il existe la focntion cos en LISP, mais son inverse acos non :( Quelqu'un connaitrait le nom de la fonction, ou mieux, une biblio mathématiques arx? Merci d'avance. Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
bonuscad Posté(e) le 11 juin 2007 Posté(e) le 11 juin 2007 regarde ce sujet . Il y a d'ailleurs dans ce sujet un autre renvoi fait par (gile) sur les vecteur il me semble. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
bseb67 Posté(e) le 11 juin 2007 Auteur Posté(e) le 11 juin 2007 Ok, merci. C'est justement ce que je cherchais: angle entre 3 points.C'est mieux et plus court que mon truc. Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
bseb67 Posté(e) le 11 juin 2007 Auteur Posté(e) le 11 juin 2007 Arrghhhhhh :mad: Ca marche pas si deux points ont juste le Z différent.il me dit points 2D confondus, et la cotation angulaire me renvoie ligne de longueur nulle: c toi la nulle!! Donc je vais quand même faire un truc à ma sauce. Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
(gile) Posté(e) le 11 juin 2007 Posté(e) le 11 juin 2007 Salut, Pour avoir l'angle défini par 3 points 3D, en utilisant le "théorème de Carnot" (defun angle_3pts (som p1 p2 / d1 d2 d3) (setq d1 (distance som p1) d2 (distance som p2) d3 (distance p1 p2) ) (if (and ((acos (/ (+ (* d1 d1) (* d2 d2) (- (* d3 d3))) (* 2 d1 d2) ) ) ) ) (defun acos (num) (cond ((equal num 1 1e-9) 0.0) ((equal num -1 1e-9) pi) (((atan (sqrt (- 1 (expt num 2))) num) ) ) ) Tu peux trouver d'autres petites routines de ce genre ici. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bseb67 Posté(e) le 12 juin 2007 Auteur Posté(e) le 12 juin 2007 Merci Gile ;) ! Ton code marche nickel. Le but du calcul d'angle et que je dois tester si l'angle formé entre deux lignes est bien règlementaire. En tout cas, en visitant un peu plus ce forum, j'ai pu constater que t'es l'équivalent du yoda du lisp :cool: . pour ma part, je suis encore qu'un jeune padawan (cela fait 4 mois que j'ai commencé) Merci encore. bseb Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant