papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Calcul de la surface d’un polygone défini par n points Dim 5 Avr 2020 - 5:39 | |
| - Code:
-
rem ============================================================================ rem Calcul de la surface interne d’un polygone défini par n points rem ============================================================================ rem Formule: rem _________________________________________________________________ rem | | rem | Pour i de 1 à n-1 | rem | s = s + (buff(i,1) + buff(i+1,1)) * (buff(i,2) - buff(i+1,2)) | rem | s = abs(s) / 2 | rem |_________________________________________________________________|
rem ============================================================================ dim nmax : nmax = 50 : ' nombre maxi de sommets dim buff(nmax,2) : ' tableau contenant les coordonnées de tous les sommets dim i,s,n,z
picture 10 : full_space 10 : 2d_target_is 10 : print_target_is 10 : font_bold 10
n = 13 : ' nombre des sommets du polygone z = 30 : ' agrandissement pour le tracé du polygone ' Initialisation for i = 1 to n : read buff(i,1) : read buff(i,2) : next i ' Tracer le polygone 2d_poly_from z*buff(1,1),z*buff(1,2) for i = 1 to n : 2d_poly_to z*buff(i,1),z*buff(i,2) : next i ' Afficher la surface print_locate 100,300 print " La surface de ce polygone est : " + str$(Surface_Polygone()) + " unités de surface" end rem ============================================================================ ' Calcul de la surface du polygone ' La formule est la suivante : ' * Multiplier l'abscisse d'un sommet par l'ordonnée du suivant ' * Additionner le tout ' * Multiplier ensuite l'ordonnée d'un sommet par l'abscisse du suivant ' * Additionner le tout ' * Soustraire la dernière somme de la première ' * Diviser le résultat par 2 ' REMARQUE : ' Si vous prenez les points dans le sens des aiguilles d'une montre, ' alors qu'il faut les prendre dans le sens contraire, vous allez obtenir ' la même valeur, mais négative. ' C'est ainsi que vous pourrez en déduire le sens dans lequel ces points sont ' organisés. ' Tout ce charabia se résume en une simple boucle de calcul ! FNC Surface_Polygone() for i = 1 to n-1 s = s + (buff(i,1) + buff(i+1,1)) * (buff(i,2) - buff(i+1,2)) next i result abs(s)/2 END_FNC rem ============================================================================ ' Les coordonnées des sommets du polygone data 3,3 data 12,3 data 12,6 data 11,6 data 11,7 data 15,7 data 15,9 data 8,9 data 8,6 data 4,6 data 4,9 data 3,9 data 3,3 rem ============================================================================
| |
|