Progetto Eclipse: Cubi.zip
Mese: Novembre 2015
Quadrato
Quadrato
package geometria; public class Quadrato { private double lato; public Quadrato(double lato) { setLato(lato); } public double getLato() { return lato; } public void setLato(double lato) { if (lato >= 0.0) this.lato = lato; } public double perimetro() { return getLato() * 4.0; } public double area() { return getLato() * getLato(); } }
Parallelepipedo
package geometria; public class Parallelepipedo extends Quadrato { private double altezza; public Parallelepipedo(double lato, double altezza) { super(lato); setAltezza(altezza); } public double getAltezza() { return altezza; } public void setAltezza(double altezza) { if (altezza >= 0.0) this.altezza = altezza; } @Override public double area() { return super.area() * 2.0 + super.perimetro() * getAltezza(); } public double volume() { return super.area() * getAltezza(); } }
Cerchio e Cilindro per la 3E
Costruire la classe Cerchio avente come attributo privato il raggio e come metodi: circonferenza, area, toString, equals e clone; derivare da Cerchio la sottoclasse Cilindro avente in più l’attributo altezza e in più il metodo volume; eseguire l’override di area (in maniera che fornisca correttamente l’area totale del cilindro), toString, equals e clone.
Quadrilatero
Progetto Eclipse: Geometria.zip
Esperimento sul motore di Stirling
Paraboloide per la 5E
Modificare il progetto paraboloide (Paraboloide.zip) in modo da poter modificare dal JFrame del Main la posizione dell’osservatore e del punto osservato. A tal fine inserire 3 JTextField per X, Y, Z dell’osservatore e altrettanti per il punto osservato; inserire un bottone Imposta che legge le 6 coordinate suddette e le memorizza in altrettanti attributi di GLRenderer. Spostare in GLRenderer la trasformazione di visualizzazione da reshape a display in maniera tale da aggiornarla immediatamente durante l’animazione appena si preme il tasto Imposta.
In alternativa ai 6 JTextField provare ad utilizzare 6 JSpinner, che automaticamente memorizzano in GLRenderer i nuovi valori delle coordinate non appena si clicca o si modificano i valori in essi contenuti, eliminando così la necessità del tasto Imposta.
Rappresentare nell’intervallo -2<x<2 e -2<y<2 il paraboloide di equazione f(x,y) = x² + y².
Realizzare un ciclo for su y da -2 a 2 con incrementi dy=0,25 annidato all’interno di un ciclo for su x da -2 a 2 con incrementi dx=0,25 in maniera da realizzare un reticolato da 16×16 quadrilateri.
Ogni quadrilatero avrà come vertici i punti A(x,y,z1), B(x+dx,y,z2), C(x+dx,y+dy,z2), D(x,y+dy,z4) con z1=f(x,y), z2=f(x+dx,y), z3=f(x+dx,y+dy), z4=(x,y+dy).
Il colore del singolo vertice può essere calcolato mediante la formula: R=z/8.0; G=0; B=1.0-z/8.0 ottenendo un colore che sfuma dal rosso per z=0 nel centro del reticolato (x=0 e y=0) ad un blu per z=8 sui 4 vertici (x=±2 e y=±2).
Ruotare di 30° intorno a X e di a variabile intorno a Z.
Scuola per la 3E
Classe.java
public class Classe { private int anno; private char sezione; private int allievi; public Classe(int anno, char sezione, int allievi) { this.anno = anno; this.sezione = sezione; if (allievi >= 0) { this.allievi = allievi; } else { this.allievi = 0; } } public Classe(int anno, char sezione) { this.anno = anno; this.sezione = sezione; allievi = 0; } public String toString() { return "Classe: " + anno + sezione + " Numero allievi: " + allievi; } public int getAnno() { return anno; } public void setAnno(int anno) { this.anno = anno; } public char getSezione() { return sezione; } public void setSezione(char sezione) { this.sezione = sezione; } public int getAllievi() { return allievi; } public void setAllievi(int allievi) { if (allievi >= 0) { this.allievi = allievi; } } }
Main.java
public class Main { public static void main(String[] args) { Classe miaClasse = new Classe(3, 'E', 22); miaClasse.setAllievi(-100000); System.out.println(miaClasse.toString()); } }
Moto parabolico per la 3E
x = x0 + v0x t
t = (x – x0)/v0x
y = y0 + v0y t + 1/2 g t^2
y = y0 + v0y (x – x0)/v0x + 1/2 g (x – x0)^2 / v0x^2
y = y0 + v0y/v0x x – v0y/v0x x0 + 1/2 g x^2/v0x^2 – 1/2 g 2 x x0/v0x^2 + 1/2 g x0^2/v0x^2
y = (1/2 g/v0x^2) x^2 + (v0y/v0x – g x0/v0x^2) x + (y0 – v0y/v0x x0 + 1/2 g x0^2 / v0x^2)
y = a x^2 + b x + c
a = 13,92
b = -1,961
c = 0,169
g = 9,8
13,92 = 1/2 g/v0x^2
-1,961 = v0y/v0x – g x0/v0x^2
y0 = 0
0,169 = v0y/v0x x0 + 1/2 g x0^2 / v0x^2
Sistema da risolvere
13,92 = 1/2 g/v0x^2
-1,961 = v0y/v0x – g x0/v0x^2
0,169 = v0y/v0x x0 + 1/2 g x0^2 / v0x^2
Ricavare: v0x, v0y, x0
Frazione per la 3E
Inserire nei costruttori e nei vari metodi il controllo delle situazioni di errore ovvero quando il risultato è impossibile (denominatore 0). In tal caso non deve essere eseguito il calcolo sulla frazione e deve essere visualizzato un messaggio di avviso con i valori delle frazioni coinvolte nell’operazione.
Frazione.java
public class Frazione { public int num, den; public Frazione(int numVal, int denVal) { num = numVal; den = denVal; } public Frazione() { num = 0; den = 1; } public Frazione(int numero) { num = numero; den = 1; } public void add(Frazione f) { int denComune = den * f.den; num = num * f.den + f.num * den; den = denComune; int d = Int.mcd(num, den); num /= d; den /= d; } public void sot(Frazione f) { int denComune = den * f.den; num = num * f.den - f.num * den; den = denComune; int d = Int.mcd(num, den); num /= d; den /= d; } public void mol(Frazione f) { num *= f.num; den *= f.den; int d = Int.mcd(num, den); num /= d; den /= d; } public void div(Frazione f) { num *= f.den; den *= f.num; int d = Int.mcd(num, den); num /= d; den /= d; } @Override public String toString() { return num + "/" + den; } }
Int.java
public class Int { // Algoritmo di Euclide per la ricerca del MCD public static int mcd(int a, int b) { int t; while (b != 0) { t = b; b = a % b; a = t; } return a; } }
Veicoli
Veicolo
package veicoli; public class Veicolo { public int cilindrata; public String targa; public int serbatoio; // overloading dei costruttori // costruttore completo public Veicolo(int cilindrataVal, String targaVal, int serbatoioVal) { cilindrata = cilindrataVal; targa = targaVal; serbatoio = serbatoioVal; } // costruttore con serbatoio vuoto public Veicolo(int cilindrataVal, String targaVal) { cilindrata = cilindrataVal; targa = targaVal; serbatoio = 0; } // costruttore senza targa public Veicolo(int cilindrataVal, int serbatoioVal) { cilindrata = cilindrataVal; targa = ""; serbatoio = serbatoioVal; } @Override public String toString() { return "Veicolo (cilindrata = " + cilindrata + ", targa = " + targa + ", serbatoio = " + serbatoio + ")"; } public boolean inRiserva() { return serbatoio<5; } public void riempieSerbatoio(int benzina) { serbatoio += benzina; } }
Main
package veicoli; public class Main { public static void main(String[] args) { Veicolo auto1 = new Veicolo(1600, "AP 327 IL", 10); Veicolo auto2 = new Veicolo(1800, 5); Veicolo auto3 = new Veicolo(1400, "CN 234578"); System.out.println("Auto 1: " + auto1.toString()); System.out.println("Auto 2: " + auto2.toString()); System.out.println("Auto 3: " + auto3.toString()); System.out.println("Auto 1 in riserva? " + auto1.inRiserva()); System.out.println("Auto 2 in riserva? " + auto2.inRiserva()); System.out.println("Auto 3 in riserva? " + auto3.inRiserva()); auto1.riempieSerbatoio(35); auto2.riempieSerbatoio(10); auto3.riempieSerbatoio(30); System.out.println("Auto 1: " + auto1.toString()); System.out.println("Auto 2: " + auto2.toString()); System.out.println("Auto 3: " + auto3.toString()); } }