Cerchi e ovali

In Java, non esiste una istruzione specifica per disegnare un cerchio. Esiste però una istruzione per disegnare un ovale, e questa può venire usata anche per disegnare cerchi.

La istruzione per gli ovali si chiama drawOval(x,y,w,h), e ha quattro argomenti, che rappresentano posizione e dimensione del rettangolo circoscritto all'ovale. Il modo più facile per capire come funziona il disegno di ovali è di pensare che x,y,w,h rappresentano un rettangolo, e che l'ovale che viene disegnato è quello circoscritto nel rettangolo.

Per esempio, dal punto di vista concettuale, possiamo pensare prima al rettangolo che verrebbe disegnato usando gli stessi quattro numeri:

L'ovale che viene realmente disegnato è quello inscritto in questo rettangolo (in altre parole, il rettangolo non viene disegnato):

Il programma Ovali.java disegna due ovali e un cerchio. In particolare, il secondo ovale viene disegnato con la istruzione g.drawOval(100,50,50,120), e per confronto si fa vedere cosa succede se si disegna un rettangolo usando gli stessi parametri, ossia si fa anche g.drawRect(100,50,50,120).

/*
  Disegna due ovali e un cerchio
*/

import java.awt.Graphics;

public class Ovali extends java.applet.Applet {
  public void paint(Graphics g) {
    /* disegna un ovale */
    g.drawOval(0,0,100,50);

    /* un altro ovale, e il rettangolo con le stesse dimensioni */
    g.drawOval(100,50,50,120);
    g.drawRect(100,50,50,120);

    /* un cerchio: e' un ovale con larghezza=altezza */
    g.drawOval(0,100,50,50);
  }
}

Il programma produce il seguente disegno:

La coppia ovale-rettangolo fa capire in che modo viene disegnato l'ovale: quando si esegue la istruzione g.drawOval(x,y,w,h), è come se venisse localizzato il rettangolo prodotto da g.drawRect(x,y,w,h), ma quello che si disegna in effetti è l'ovale inscritto. Nel nostro caso, abbiamo poi disegnato anche il rettangolo.

L'ultima istruzione dell'applet disegna un cerchio: questo si ottiene semplicemente usando lo stesso numero come altezza e larghezza del rettangolo circoscritto: in questo modo il rettangolo diventa un quadrato, e quindi l'ovale all'interno è un cerchio.