Eser_7_InfGraf - Dipartimento di Informatica e Sistemistica

annuncio pubblicitario
SESTA ESERCITAZIONE DI LABORATORIO
Informatica Grafica – Ingegneria Edile Architettura
25/3/2002 – a.a. 2001/2002
Riferimento: Horstmann, “Concetti di Informatica e fondamenti di Java 2”, ed. Apogeo, cifr. §6.
Cicli e Grafica in Java
Per realizzare semplici programmi grafici è possibile ridefinire il metodo
public void paint (Graphics g)
invocato automaticamente in fase di costruzione di una applet. E’ opportuno eseguire un casting esplicito del parametro g di tipo
Graphics ed assegnarlo ad un nuovo oggetto di tipo Graphics2D in modo tale da poter lavorare su un oggetto Graphics2D.
L’implementazione del metodo paint per realizzare programmi grafici con le applet è oggetto dei prossimi esercizi.
ESERCIZIO 1: Scrivere un’applet per tracciare la traiettoria di un rettangolo che si muove sul piano XY
seguendo la curva individuata dalle seguenti equazioni parametriche
x(t) = 60 + t^2-5*t
y(t) = 20 + t^2+5*t
per t che varia in un intervallo a piacere.
Si ricorda che per disegnare un rettangolo sono disponibili le seguenti classi
public static class Rectangle2D.Double
public static class Rectangle2D.Float
interne alla classe Rectangle2D contenuta nel pacchetto java.awt.geom. Quest’ultimo dovrà quindi essere importato nel sorgente
della applet. Per disegnare un rettangolo è anche disponibile la classe:
public class Rectangle
direttamente nel pacchetto java.awt.
Inoltre per disegnare una figura geometrica specificata da un oggetto Graphics2D si può usare il metodo
abstract void draw(Shape s)
della classe Graphics2D dove il tipo Shape indica una forma generica, per esempio un oggetto Graphics2D.
ESERCIZIO 2: Scrivere un’applet per disegnare il grafico delle due funzioni:
y(x) = 1+ x^2/sen(x)
y2(x)= x^2
per un intervallo delle x a piacere.
Si fa notare che per tracciare correttamente le funzioni sul dispositivo di output (monitor), è necessario
- definire la finestra di visualizzazione del grafico nel “dominio d’utente” specificando l’intervallo delle x e delle y di
interesse [xmin,xmax]X[ymin,ymax]
- trasformare ogni punto (xi, yi) del dominio d’utente in “Coordinate di Mondo” xy nel pixel equivalente sullo schermo in
“Coordinate di dispositivo” XY
La trasformazione di coordinate è necessaria in quanto i pixel dello schermo sono numerati per righe dall’alto verso il basso e per
colonne da sinistra verso destra (origine degli assi in alto a sinistra), mentre in generale la posizione dell’origine del grafico da
visualizzare dipenderà dalla scelta della finestra di visualizzazione [x min,xmax]X[ymin,ymax] potendo anche non essere presente nella
finestra di visualizzazione (vedi figura pagina seguente).
(0,0)
y
(x2,y2)
(X,Y)=T(x,y)
(x1,y1)
x
(maxx,maxy)
(0,maxy) = T(x1,y1)
(maxx,0) = T(x2,y2)
X= maxx·(x-x1)/(x2-x1)
Y= maxy·(y2-y)/(y2-y1)
Scarica