public class Test3 { public static class Position2D { public double x = 0.0; public double y = 0.0; }; public static class Polygone2D { public int n = 0; public Position2D [] tp = null; }; public static void affichage(Position2D p) { Ecran.afficher(p.x," ",p.y); } public static void affichage(Polygone2D p) { Ecran.afficherln("Nombre de sommets : ",p.n); Ecran.afficherln("Liste des sommets : "); for ( int i = 0 ; i < p.n ; i++ ) { affichage(p.tp[i]); Ecran.sautDeLigne(); } } public static Position2D [] creationTableauPosition2D(int n) { Position2D [] t = new Position2D[n]; for ( int i = 0 ; i < n ; i++ ) { t[i] = new Position2D(); } return t; } public static Polygone2D creationPolygone(int n) { Polygone2D p = new Polygone2D(); p.n = n; p.tp = creationTableauPosition2D(n); return p; } public static Polygone2D creationPolygoneRegulier(int n,double r) { Polygone2D p = creationPolygone(n); for ( int i = 0 ; i < n ; i++ ) { double angle = i*Math.PI*2.0/n; p.tp[i].x = r*Math.cos(angle); p.tp[i].y = r*Math.sin(angle); } return p; } public static double distance(Position2D p1,Position2D p2) { double dx = p2.x - p1.x; double dy = p2.y - p1.y; return Math.sqrt(dx*dx+dy*dy); } public static double perimetre(Polygone2D p) { double per = 0.0; if ( p.n >= 2 ) { per = distance(p.tp[p.n-1],p.tp[0]); for ( int i = 0 ; i < p.n-1 ; i++ ) { per += distance(p.tp[i],p.tp[i+1]); } } return per; } /** * Fonction principale * @param args Les arguments. * */ public static void main(String [] args) { Polygone2D p = creationPolygoneRegulier(7,2.0); affichage(p); Ecran.afficherln("Perimetre : ",perimetre(p)); } }