Ellipse2D.Double
. Per usarla deve essere però importata la classe "astratta"
java.awt.geom.Ellipse2D
. Si può scegliere di generare un cerchio inscritto nel quadrato di lato unitario con estremi nei punti (0, 0) e (1, 1)
static
già visto Math.random
, chiamando poi l'opportuno costruttore della classe Point2D.Double
. Anche in questo caso bisognerà importare la classe astratta import java.awt.geom.Point2D
.
contains(...)
, che però non è definito nella classe
Ellipse2D.Double
ma è ereditato dalla superclasse java.awt.geom.RectangularShape
. Il riferimento al metodo si trova nella pagina che descrive Ellipse2D.Double
, dopo i metodi, nella sezione intitolata
"Methods inherited from class java.awt.geom.RectangularShape"
Osservare il funzionamento del programma FormeGeometriche.java.
Sono utilizzati alcuni metodi static
definiti in InputForme.java, che
permettono di creare oggeti geometrici inserendone le coordinate da tastiera.
Aggiungere a FormeGeometriche.java
del codice che verifica quali delle figure
geometriche inserite contengono il punto p
. La classe Rectangle2D.Double
possiede sia un metodo public boolean contains(double x, double y)
, sia un metodo
public boolean contains(Point2D p)
, ereditati dalle sue superclassi
(si vedano nella documentazione Java i metodi che vengono
inherited from class ...). Lo stesso vale per la classe
Ellipse2D.Double
, che eredita metodi analoghi dalle proprie superclassi.
Invece di utilizzare variabili distinte per memorizzare i riferimenti ai
Rectangle2D.Double
, definire ed allocare un array di due elementi, e sostituire
tutte le ripetizioni di codice analogo con dei cicli.
Suggerimento
Una volta risolta l'estensione precedente, aumentare a 4 il numero di rettangoli da inserire, e
trovare tutte le coppie di rettangoli che hanno tra loro intersezione non vuota.
Utilizzare il metodo intersects
(attenzione alla 's' finale) ereditato dalla classe
RectangularShape
. Ogni volta che si trova una coppia di rettangoli che presenta
intersezione non vuota bisogna visualizzare un messaggio del tipo (assumendo che
i rettangoli di posto 1 e 3 si intersechino) "Il rettangolo 1 interseca il
rettangolo 3", seguito se si vuole dalle coordinate dei due rettangoli.
Per risolvere questo punto è opportuno scrivere un metodo static
,
e poi richiamarlo, che riceve come
parametro l'array di rettangoli, e provvede a stampare i messaggi che segnalano tutte le
intersezioni.
Il metodo deve confrontare: