Quello che si vuole fare è disegnare un poligono regolare con n lati.
L'esercizio si risolve tenendo presente che ogni poligono regolare si può sempre inscrivere in un cerchio. Il problema si sposta quindi dal disegno del poligono alla individuazione di n punti sulla circonferenza. Il medodo che usiamo è questo: l'angolo giro vale 2*Math.PI, e questo va diviso esattamente in n parti. Quindi, possiamo fare un ciclo, in cui una variabile i va da 0 a n. L'angolo che consideriamo ogni volta vale 2*Math.PI*i/n.
Una volta noto l'angolo corrispondente ai punti della circonferenza che ci servono, occorre calcolare le loro coordinate. Se per esempio assumiamo che il centro del cerchio sia posizionato in (xcentro,ycentro), e che il suo raggio sia memorizzato nella variabile raggio, allora le coordinate di un punto si ottengono usando le note formule trigonometriche:
x=xcentro+raggio*Math.cos(2*Math.PI*i/n); y=ycentro+raggio*Math.sin(2*Math.PI*i/n);Una volta note le coordinate di un punto, è sufficiente aggiungere il punto al poligono che è stato inizialmente dichiarato vuoto. Il programma completo Regolari.java viene riportato qui sotto.
/* Disegna un poligono regolare con n lati */ import java.awt.*; public class Regolari extends java.applet.Applet { public void paint(Graphics g) { int n=8; Polygon reg=new Polygon(); int i; double x,y; double xcentro=100, ycentro=100, raggio=100; for(i=0; i<=n-1; i=i+1) { x=xcentro+raggio*Math.cos(2*Math.PI*i/n); y=ycentro+raggio*Math.sin(2*Math.PI*i/n); reg.addPoint( Math.round((float) x), Math.round((float) y) ); } g.drawPolygon(reg); } }L'esecuzione di questo programma, in cui il centro è stato posto in (100,100), il raggio è 100, ed n vale 8, produce il disegno seguente: