Progetto Eclipse: Cubi.zip
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());
}
}

