Il seguente codice:
delta = 0.01
x =1
y = 1
z = 1
a = 10
b = 28
c = 8./3.
do n = 1, 10000
dx = a*(y-x)
dy = x * (b-z) - y
dz = x*y - c*z
x = x + delta*dx
y = y +delta*dy
z = z + delta *dz
END DO
genera 10000 punti di una figura geometrica nello spazio chiamata
attrattore di Lorentz che assomiglia vagamente a una farfalla.
Scrivete un applet che disegna questa figura rappresentandola in
prospettiva. Una rappresentazione prospettica si basa su 2 costanti
theta e phi e consiste nel convertire i punti nello spazio a 3 coordinate in punti nel piano a 2 coordinate.Il codice che segue puo' essere usato direttamente in un programma Java per convertire un vettore di n punti .
void tr3d(double x[],double y[], double z[],int xp[],int yp[],int n){
double theta = 80,phi=130;
int nxc=300,nyc=300;
double rad = Math.PI/180.;
double scale=1.;
double t =theta*rad;
double p=phi*rad;
double ct =Math.cos(t);
double st =Math.sin(t);
double cp =Math.cos(p);
double sp =Math.sin(p);
double a,b,c;
for (int i=0;i < n;i++){
a=x[i]*scale;
b=y[i]*scale;
c=z[i]*scale;
xp[i] =(int)(a*sp-b*cp)+nxc;
yp[i]=nyc -(int)(ct*(a*cp+b*sp)+c*st);
}
}
Una volta ottenuta la rappresentazione prospettica, aggiungete un'interfaccia grafica che permette di variare theta e phi con una barra di scorrimento e quindi di vedere
la farfalla da diversi punti di vista.