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: