import java.applet.Applet; import java.awt.*; import java.awt.Graphics; import java.awt.event.*; public class siinus extends Applet implements Runnable { // määrab, mis nurgast siinust joonistama hakatakse vasakust äärest private int algusnurk; private Image malupilt = null; private Graphics malugraaf = null; private Thread jooksja = null; public void init() { algusnurk = 0; start(); } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { int vanax; int vanay; int uusx; int uusy; // kui satume siia esimest korda st. malupilt == null if (malupilt == null) { // teeme uue pildi... malupilt = createImage(getSize().width, getSize().height); // küsime pildile Graphics klassi tüüpi viida malugraaf = malupilt.getGraphics(); } uusx = 0; vanax = 0; vanay = (int)(50 * Math.sin((double)(uusx+algusnurk)*Math.PI/90) + getSize().height / 2); malugraaf.setColor(Color.white); malugraaf.fillRect(0,0,getSize().width, getSize().height); malugraaf.setColor(Color.black); while(uusx < getSize().width) { // arvutame vastava y koordinaadi väärtuse kasutades siinusfunktsiooni // PI/90 on, et graafik poleks väga lame, st igale X koordinaadile // vastab kahekraadine muutus Ykis uusy = (int)(50 * Math.sin((double)(uusx+algusnurk)*Math.PI/90) + getSize().height / 2); malugraaf.drawLine(vanax, vanay, uusx, uusy); vanay=uusy; vanax=uusx; uusx++; } g.drawImage(malupilt, 0,0,this); } public void run() { while (Thread.currentThread() == jooksja) { algusnurk = algusnurk + 5; if (algusnurk >= 360) algusnurk = 0; repaint(); try { Thread.sleep(20); } catch (InterruptedException e) {} } } public void start() { jooksja = new Thread(this); jooksja.start(); } public void stop() { jooksja = null; } }