Bon, alez, hop, ça pourra servir : voici une fonction prête à l'emploi :
A partir de là, le calcul de la surface est direct, il s'agit de transmettre le polygone sous la forme du tableau de points correspondant aux coordonnées de son sommet (coordonnées réelles autorisées), le résultat donne la surface en unités² de ce polygone.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 type TRealPoint=record X,Y:double; end; function SurfacePolygone(Points:array of TRealPoint):double; var i,ip,im,Count:integer; a,s:double; begin s:=0; Count:=high(points)+1; i:=0; while i<Count do begin ip:=(i+1) mod Count; //i+1 im:=(i-1) mod Count; //i-1 a:=Points[i].X*Points[ip].Y-Points[ip].X*Points[i].Y; s:=s+a; inc(i); end; result:=Abs(s/2); end;
Partager