venerdì 23 gennaio 2009

Ho trovato l'errore dell'esercizio fatto in classe: retta parallela ad una data passante per il punto cliccato

public void tracciaParallela(){


double m=((double)y2-(double)y1)/((double)x2-(double)x1);

yy1=(int) (m*( xx1- cPoint.x)+ cPoint.y);

yy2=(int) (m*( xx2- cPoint.x)+ cPoint.y);

}
Questa è la soluzione corretta. In cosa differisce da quanto scritto in classe ? Addirittura c'erano due errori ! 1)il coefficiente angolare m veniva uguale a zero! Perchè ? m=(y2-y1)/(x2-x1), essendo le variabili tutte definite di tipo intero, il rapporto tra due grandezze intere viene arrotondato a numero intero e siccome il risultato è un numero decimale inferiore a zero, lo approssima a zero! Questo prima problema si risolve facendo il casting di y1,y2,x1,x2 con (double). Ma non finisce qui. C'è un secondo errore. 2) nel calcolo di yy1 e yy2 l'istruzione scritta in classe era
yy1= (int) m*(xx1-cPoint.x)+cPoint.y;
Il casting (int) agisce solo sul primo fattore m*(xx1-cPoint.c), che diabolicamente è ancora m! per cui me lo azzera nuovamente. Pertanto la soluzione sta nel racchiudere tutta l'espressione al secondo membro tra le parentesi tonde. E ora funziona.

mercoledì 21 gennaio 2009

Esercizi per la classe IVAL liceo tecnico

1) Scrivere un programma java che disegna nel pannello della finestra un segmento di retta passante tra due punti dati. Poi quando cliccate il mouse su di un punto del pannello dovete disegnare la retta passante per quel punto e parallela alla retta data.
2) Scrivere un programma java che disegna nel pannello della finestra un segmento di retta passante tra due punti dati. Poi quando cliccate il mouse su di un punto del pannello dovete disegnare la retta passante per quel punto e perpendicolare alla retta data.

martedì 20 gennaio 2009