| Precedente | Altri Applet | Successivo |
Le figure di Lissajous si ottengono componendo fra loro due moti armonici con periodi distinti.
Questo applet si ottiene da simple 2 semplicemente modificando la
definizione della curva P(t).
|
|
Istruzioni: Facendo click&drag con il mouse sulla figura si possono modificare i periodi delle due oscillazioni. In particolare: Il movimento orizzontale modifica il periodo dell'oscillazione sull'asse X. Il movimento verticale modifica il periodo dell'oscillazione sull'asse Y. Il puntino blu serve per "invogliare" il "lettore" a intervenire con il mouse. |
| Codice sorgente: lissajous.java |
|---|
import java.applet.Applet;
import java.awt.*;
public class lissajous extends Applet {
int posx,posy;
public void drawCurve(Graphics g) {
double ang0=0, ang1=Math.PI*2*13; // estremi
int i, n=1000;
int w = size().width; // dimensioni dell'applet
int h = size().height;
double k1 = 0.5*(double)posx/(double)w;
double k2 = 0.5*(double)posy/(double)h;
int x0=0,y0=0,x1=0,y1=0;
for(i=0;i<n;i++)
{
double ang = ang0+(ang1-ang0)*i/(double)(n-1);
x1 = (int)(w * (Math.sin(ang*k1)+1.0)*0.5);
y1 = (int)(h * (Math.sin(ang*k2)+1.0)*0.5);
if(i>0) g.drawLine(x0,y0,x1,y1);
x0 = x1;
y0 = y1;
}
}
public void paint(Graphics g) {
g.setColor(Color.black);
drawCurve(g);
int lx=4,ly=4;
g.setColor(Color.blue);
g.fillOval(posx-lx/2,posy-ly/2,lx,ly);
g.setColor(Color.black);
g.drawOval(posx-lx/2,posy-ly/2,lx,ly);
}
public void init() { // lo sfondo e' bianco
setBackground(Color.white);
}
public boolean mouseDown(Event evt, int x, int y) {
posx=x;
posy=y;
repaint();
return true;
}
public boolean mouseDrag(Event evt, int x, int y) {
posx=x;
posy=y;
repaint();
return true;
}
}
|
| Precedente | Altri Applet | Successivo |