Didier-AD Posté(e) le 23 mai 2007 Posté(e) le 23 mai 2007 Pour ceux qui auraient besoin de calculer la surface d'une zone délimitée par une liste de points sans être obligé de dessiner une polyligne et calculer son aire, voici une fonction qui le fait très bien ; elle est issue d'une formule basée sur le calcul vectoriel http://xs215.xs.to/xs215/07214/calcsurf.jpg (defun SurfaceContour (lp / lx ly Total n soustotal) (defun soustotal (X Ya Yb) (* X (- Ya Yb))) (setq lx (mapcar 'car lp) ly (mapcar 'cadr lp) Total (soustotal (car lx) (cadr ly) (last ly)) n 1 ) (repeat (- (length lp) 2) (setq total (+ total (soustotal (nth n lx) (nth (1+ n) ly) (nth (1- n) ly))) n (1+ n) ) ) (setq total (+ total (soustotal (last lx) (car ly) (cadr (reverse ly))))) (abs (/ total 2.0)) ) (defun c:test (/ pt lp) (setq pt (getpoint "\npremier point") lp (list pt) ) (while (setq pt (getpoint "\n point suivant")) (setq lp (cons pt lp)) ) (alert (strcat "Surface du contour = " (rtos (SurfaceContour lp) 2 3) " Unité²")) ) [Edité le 23/5/2007 par Didier-AD]
(gile) Posté(e) le 23 mai 2007 Posté(e) le 23 mai 2007 Salut, dès que quelqu'un m'aura expliqué comment on peut placer une image dans un message Regarde ici, par exemple. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Didier-AD Posté(e) le 23 mai 2007 Auteur Posté(e) le 23 mai 2007 Regarde ici, par exemple. ben voilà, maintenant il y a l'image ,merci du tuyau
(gile) Posté(e) le 23 mai 2007 Posté(e) le 23 mai 2007 Ça me plait beaucoup, j'étudierai ça à tête reposée. Merci ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 23 mai 2007 Posté(e) le 23 mai 2007 Merci du partage, je le garde précieusement! ;) Très intéressant, une particularité que j'aime beaucoup (ça peux, peut être me servir...) [surligneur]CELA RETOURNE LA SURFACE PROJETEE SUR LE SCU COURANT. [/surligneur] :P Si tu en as d'autre comme ceci, ça m'intéresse beaucoup. Un GRAND Merci ! Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
ElpanovEvgeniy Posté(e) le 24 mai 2007 Posté(e) le 24 mai 2007 Bonjour! Ma variante de la fonction, le calcul de la place de la projection du polygone. (defun eea-area-polygon (lst) ;| By ElpanovEvgeniy Algorithm of function: (+ (* (+ x1 x2)(- y1 y2) 0.5)(* (+ x2 x3)(- y2 y3) 0.5) .... ) Example of use: (eea-area-polygon (mapcar (function cdr) (vl-remove-if-not (function (lambda (x) (= (car x) 10))) (entget (car (entsel))) ) ;_ vl-remove-if-not ) ;_ mapcar ) ;_ area-polygon |; (/ (abs (apply (function +) (mapcar (function (lambda (a b) (* (+ (car a) (car b)) (- (cadr a) (cadr b)))) ) ;_ function (cons (last lst) lst) lst ) ;_ mapcar ) ;_ apply ) ;_ abs 2. ) ;_ / ) ;_ defun Evgeniy
zebulon_ Posté(e) le 24 mai 2007 Posté(e) le 24 mai 2007 Bonjour, mon prof de topographie, à l'IUT, appelait ça, si je me souviens bien, le calcul de surface par la méthode des trapèzes. Sachant que la surface d'un trapèze est :(B+b)*h/2et qu'un polygone peut se décomposer en n trapèzes, on peut retrouver la formule magique.Par exemple, un polygone de 4 côtés dont on cherche la surface S, peut se décomposer en 4 trapèzes de surface S1, S2, S3 et S4 dont il suffit de faire la différence pour trouver S. S=S1+S2-S3-S4 etS1=(x2-x1)*(y2+y1)/2S2=(x3-x2)*(y3+y2)/2S3=(x3-x4)*(y3+y4)/2S4=(x4-x1)*(y4+y1)/2 d'où2*S=(x2-x1)*(y2+y1)+(x3-x2)*(y3+y2)-(x3-x4)*(y3+y4)-(x4-x1)*(y4+y1) on développe 2*S=x2y2+x2y1-x1y2-x1y1+x3y3+x3y2-x2y3-x2y2-x3y3-x3y4+x4y3+x4y4-x4y4-x4y1+x1y4+x1y1 on peut simplifier tous les termes en xn*yn2*S=x2y1-x1y2+x3y2-x2y3-x3y4+x4y3-x4y1+x1y4 et on met en facteur suivant les xn 2*S=x1(y4-y1)+x2(y1-y3)+x3(y2-y4)+x4(y3-y1) cqfd, si je ne me suis pas planté en cours de route... Comme quoi, c'est une bonne école l'IUT AmicalementZebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
Didier-AD Posté(e) le 24 mai 2007 Auteur Posté(e) le 24 mai 2007 Ce qui est super c'est de se souvenir de la démonstration ; bravo
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