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.

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.


paraboloideRappresentare 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());
	}

}