Grafico della parabola



Documenti analoghi
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

Corso sul linguaggio Java

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Capitolo Grafico dinamico

Applicazioni grafiche

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Prova di Laboratorio di Programmazione

L interfaccia grafica in Java

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Introduzione al MATLAB c Parte 2

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Gestire le sessioni con le Servlet

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Guida all uso di Java Diagrammi ER

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Eventi di azione. // con interfaccia per eventi di azione

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Esercizi della lezione 5 di Java

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Programmazione Java: Interfacce grafiche (GUI)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Gestione dell interattività: gli eventi

La struttura dati ad albero binario

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

L analisi dei dati. Capitolo Il foglio elettronico

Prof. Silvio Reato Valcavasia Ricerche. Il piano cartesiano

Classi astratte. Master in Web Technology e Security luglio - settembre Interfacce

1. Le macro in Access 2000/2003

LE FUNZIONI A DUE VARIABILI

Realizzazione di una classe con un associazione

Corso Eclipse. Prerequisiti. 3 Window Builder

Uso di base delle funzioni in Microsoft Excel

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Introduzione al package grafico Swing

GEOMETRIA DELLE MASSE

EasyPrint v4.15. Gadget e calendari. Manuale Utente

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

UML Diagrammi delle classi. UML Diagramma classi 1

Funzioni in C. Violetta Lonati

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Algoritmi di Ricerca. Esempi di programmi Java

2 - Modifica Annulla ANNULLA TOPOGRAFICO ANNULLA TOPOGRAFICO MULTIPLO FIGURA 2.1

Introduzione a Classi e Oggetti

Inizializzazione, Assegnamento e Distruzione di Classi

2 - Modifica Annulla Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1

Esempi di funzione. Scheda Tre

Utilizzo delle formule in Excel

Esercitazione n 6. Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java:

UD6 - MATLAB. Gestione della grafica

4 3 4 = 4 x x x 10 0 aaa

Programmazione Orientata agli Oggetti in Linguaggio Java

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Plate Locator Riconoscimento Automatico di Targhe

Integrazione numerica

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Il menu File contiene tutti i comandi relativi alle seguenti operazioni:

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Modulo 4: Ereditarietà, interfacce e clonazione

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Concetto di Funzione e Procedura METODI in Java

Excel avanzato. I nomi. Gli indirizzi e le formule possono essere sostituiti da nomi. Si creano tramite Inserisci Nome Definisci

10 - CURVE DI LIVELLO

Matematica in laboratorio

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

Gestione degli eventi in Java

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Soluzione dell esercizio del 2 Febbraio 2004

COGNOME.NOME. Matricola

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

Come costruire una distribuzione di frequenze per caratteri quantitativi continui

Spiegazione Open Interest Storico:

Tutorial SWING-AWT: Il Layout Manager GridBagLayout Di Michele de Nittis

.y 6. .y 4. .y 5. .y 2.y 3 B C C B. B f A B f -1

costruttori e distruttori

STAMPA UNIONE DI WORD

Introduzione a ROOT. 1. Informazioni generali

BEM: Conferma BEM (Buono Entrata Materiale) a Magazzino

Matematica generale CTF

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Sistema operativo: Gestione della memoria

Transcript:

Grafico della parabola Il grafico matematico è un disegno che mostra l andamento di una funzione f(x) al variare della variabile x. Per tracciare un grafico sul video del computer, si deve scegliere un intervallo di valori entro cui far variare la x. Per ogni valore di x si calcola il valore di f(x) e si disegna il punto corrispondente. Per evitare che il disegno sia composto da punti, invece di calcolare un solo punto, se ne calcolano due adiacenti e si collegano tracciando un piccolo segmento che li unisce. La funzione risultante è data dall unione di questi segmenti. La difficoltà principale nella rappresentazione dei grafici è la presenza di due diversi sistemi di riferimento: il sistema di riferimento cartesiano della funzione il sistema di riferimento dello schermo. La funzione è solitamente pensata in un sistema di riferimento cartesiano, mentre deve essere disegnata sullo schermo usando il sistema di riferimento dello schermo. Il sistema di riferimento cartesiano è illimitato e possiede una sua unità di misura. Il sistema di riferimento dello schermo è limitato nelle dimensioni e utilizza come unità di misura il pixel. Per visualizzare un grafico matematico sullo schermo, si deve fare una conversione tra i due sistemi di riferimento. Poiché non è possibile rappresentare l intero piano cartesiano, bisogna definire una finestra all interno del piano e mostrare sullo schermo solo il contenuto di questa finestra. La finestra nel sistema di riferimento cartesiano, chiamata anche window, può essere identificata con quattro valori: XMAX, YMAX, XMIN, YMIN. Questi valori definiscono un rettangolo di tutti i punti x e y tali che XMIN<x<XMAX e YMIN<y<YMAX. La finestra nel sistema di riferimento dello schermo, chiamata anche viewport, è caratterizzata da una larghezza e un altezza misurate in pixel. Con la lettera w si indica la larghezza, mentre con la lettera h si indica l altezza. La trasformazione tra i due sistemi di riferimento viene chiamata trasformazione di window-viewport. Trasformazione Ymax window - viewport Xmin Xmax h Ymin Piano Cartesiano w Piano dello schermo Il primo passo della trasformazione consiste nel calcolare a quanti pixel corrisponde l unità di misura del piano cartesiano. UNITA = w / (XMAX - XMIN) In UNITA sono indicati i pixel corrispondenti ad un unità nel sistema di riferimento cartesiano. Si può ipotizzare che anche per l asse y venga usata la stessa unità di misura, in caso contrario occorre calcolare due diverse unità di misura. 1

Con un secondo passo si stabilisce come mappare il punto del piano cartesiano (px, py) nelle coordinate dello schermo. Il punto dello schermo (sx, sy) si ottiene con le seguenti formule: sx = (px - XMIN) * UNITA; sy = (YMAX - py) * UNITA; 10 (0, 0) P (3, 8) S (160, 40) -5 10 (100, 200) 300-5 300 Per esempio, supponiamo di aver definito XMAX=10, YMAX=10, XMIN=-5, YMIN=-5 e che le dimensioni dell area sullo schermo siano w=300 e h=300. Il valore di UNITA è uguale a 300 / (10 - (-5)) = 20. Il punto P sul piano cartesiano che ha coordinate (3, 8) viene trasformato nel punto S nel seguente modo: sx = (3 - (-5))*20 = 160 sy = (10-8)*20 = 40 L origine nel sistema di riferimento cartesiano ha coordinate (0,0): sullo schermo si trova in posizione (100, 200). Dopo aver definito la trasformazione, il disegno di un grafico procede con questi passi: calcolare un punto P trasformare il punto P nel punto S disegnare il punto S. Il calcolo del punto P cambia a seconda della funzione considerata. La variabile x varia tra i valori XMIN e XMAX, incrementandosi ad ogni passo di un valore abbastanza piccolo; per ogni x, si calcola il valore di y = f(x), ottenendo così il punto P(x,y) che deve essere rappresentato. Il procedimento può essere schematizzato con il seguente algoritmo: inizio incremento = 0.01 x = XMIN esegui mentre x < XMAX y = f(x) S = trasforma(x, y) disegna(s) x += incremento ripeti fine La funzione trasforma riceve come parametri i valori di x e di y e calcola il corrispondente punto S sullo schermo. In Java per trattare i punti si usa la classe Point che fa parte del package java.awt. Essa contiene due attributi pubblici x e y che conservano valori interi: essendo pubblici, possono essere letti e modificati direttamente. 2

Per esempio le seguenti istruzioni creano un punto P di coordinate (2,2) con successiva modifica del valore di x. Point P = new Point(2,2); P.x = 4*P.y; Se si usa il costruttore della classe Point senza parametri, il punto viene inizializzato al valore (0,0). Sulla base delle considerazioni precedenti, vediamo ora l applet per tracciare il grafico di una parabola definita dalla funzione y = ax 2 +bx+c. I coefficienti a, b, c vengono inseriti dall utente. La parabola può essere descritta come una classe con il seguente diagramma: Parabola a b c valuta La classe Parabola memorizza il valore dei tre coefficienti e tramite il metodo valuta consente di calcolare il valore della funzione in un punto x passato come parametro. IMPLEMENTAZIONE DELLA CLASSE (Parabola.java) class Parabola private double a, b, c; public Parabola(double a, double b, double c) this.a = a; this.b = b; this.c = c; public double valuta(double x) double y; y = a*x*x + b*x + c; return y; La classe Grafico si occupa della gestione dell interfaccia grafica e dell inserimento dei coefficienti. L interfaccia grafica per questo problema deve consentire l inserimento del valore dei tre coefficienti della parabola oltre alla visualizzazione del grafico matematico. Nella parte bassa dell applet vengono posizionate le tre caselle di testo riservate all inserimento dei coefficienti e un pulsante per confermare il disegno di una nuova parabola. La parte centrale viene interamente occupata dall area di disegno. 3

APPLET JAVA (Grafico.java) import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Grafico extends JApplet implements ActionListener private JPanel p = new JPanel(); private JPanel comandi = new JPanel(); private JTextField a = new JTextField(5); private JTextField b = new JTextField(5); private JTextField c = new JTextField(5); private JButton disegna = new JButton("Disegna"); private Piano g = new Piano(); public void init() p.setlayout(new BorderLayout()); disegna.addactionlistener(this); comandi.add(new Label("A= ", Label.RIGHT)); comandi.add(a); comandi.add(new Label("B= ", Label.RIGHT)); comandi.add(b); comandi.add(new Label("C= ", Label.RIGHT)); comandi.add(c); comandi.add(disegna); comandi.setbackground(color.white); p.setbackground(color.lightgray); p.add(comandi, "South"); p.add(g, "Center"); setcontentpane(p); // gestore di eventi per il bottone public void actionperformed(actionevent e) String bottone = e.getactioncommand(); String numero; double vala,valb,valc; Parabola parab; if (bottone.equals("disegna")) try numero = a.gettext(); vala = Double.valueOf(numero).doubleValue(); 4

numero = b.gettext(); valb = Double.valueOf(numero).doubleValue(); numero = c.gettext(); valc = Double.valueOf(numero).doubleValue(); parab = new Parabola(valA, valb, valc); g.setparabola(parab); catch(exception exc) parab = null; g.setparabola(parab); return; La classe Piano gestisce l area di disegno, cioè il piano cartesiano, conosce la parabola e ne traccia il grafico quando viene richiesto. Si osservi, nel metodo paintcomponent, la chiamata per ereditare le operazioni grafiche standard: super.paintcomponent(g); Il metodo setparabola forza il ridisegno del piano cartesiano con il metodo repaint(). IMPLEMENTAZIONE DELLA CLASSE (Piano.java) import java.awt.*; import javax.swing.*; 5

class Piano extends JPanel private Parabola parab = null; private final double XMAX = 20.0; private final double XMIN = -20.0; private final double YMAX = 18.0; private double YMIN; private double UNITA; private int w, h; public void paintcomponent(graphics g) super.paintcomponent(g); // calcola le dimensioni dell'area di disegno w = getsize().width; h = getsize().height; // calcola YMIN e l'unita' di misura UNITA = (double) w / (XMAX - XMIN); YMIN = YMAX - ((double) h / UNITA); // disegna gli assi disegnaassi(g); // disegna la parabola if (parab!= null) disegnaparabola(g); // riceve come parametro le coordinate di un "punto reale" e // lo trasforma in un "punto schermo" public Point trasforma(double x, double y) Point schermo = new Point(); schermo.x = (int) Math.round((x - XMIN)*UNITA); schermo.y = (int) Math.round((YMAX - y)*unita); return schermo; // traccia gli assi cartesiani public void disegnaassi(graphics g) Point p1,p2; g.setcolor(color.black); g.drawrect(0,0,w-1,h-1); p1 = trasforma(xmin, 0); p2 = trasforma(xmax, 0); g.drawline(p1.x, p1.y, p2.x, p2.y); p1 = trasforma(0, YMIN); p2 = trasforma(0, YMAX); g.drawline(p1.x, p1.y, p2.x, p2.y); 6

// traccia la parabola public void disegnaparabola(graphics g) double incremento=0.01; double x; Point p1, p2; g.setcolor(color.blue); p1 = trasforma(xmin, parab.valuta(xmin)); for(x=xmin+incremento; x<=xmax; x+=incremento) p2 = trasforma(x, parab.valuta(x)); // disegna solo se i punti sono compresi nell'area grafica if ((p1.y>0) && (p1.y<h) && (p2.y>0) && (p2.y<h)) g.drawline(p1.x, p1.y, p2.x, p2.y); p1.x = p2.x; p1.y = p2.y; // imposta la nuova parabola e ridisegna il grafico public void setparabola(parabola parab) this.parab = parab; repaint(); L applet Grafico.class viene richiamata da una pagina Web e posizionata al centro della finestra del browser. PAGINA WEB (Parabola.htm) <HTML> <HEAD> <TITLE>Parabola</TITLE> </HEAD> <BODY> <APPLET CODE="Grafico.class" WIDTH="600" HEIGHT="500"> Applet non eseguibile. </APPLET> </BODY> </HTML> Utilizzando il precedente esempio come traccia, si possono disegnare i grafici di altre funzioni matematiche. 7