sinの描画


 g.fillOval( )
 sinを描いてみる。右端まで行くと折り返す。
 再描画時にupdateで消去していない。

※↑ブラウザのJavaを有効にしないと表示されません。

enundou.java

import java.applet.*;
import java.awt.*;

public class enundou extends Applet implements Runnable{
	Thread th;
	double x,y;
	int d=5;
	double t;
	
	public void init(){
	}
	public void start(){
		if(th==null){
			th=new Thread(this);
		}
	th.start();
	}
	public void run(){
		double omega,a,tt,aa;
		int dt;
		t=0;
		dt=50;
		a = 50.0;
		tt=2.0;
		
		while(th!=null){
			omega=2*Math.PI/tt;
			aa=a*t/2;
			double b=(aa>=getWidth())?0:1;
/*			x=getWidth()*(1-b)+b*a*t/2+(b-1)*(a*t/2-getWidth());*/
			x=(1-b)*(2*getWidth()-aa)+(b*aa);
			y=-a*Math.sin(omega*t)+getHeight()/2.0;
			repaint();
			t=t+dt/1000.0;
			try{
				Thread.sleep(dt);
			}
			catch(InterruptedException ex){
			}
		}
	}
	
	public void paint(Graphics g) {
		// TODO 自動生成されたメソッド・スタブ
		g.drawRect(0, 0, getWidth()-1, getHeight()-1);
		g.setColor(Color.red);
		g.fillOval((int)x, (int)y, d, d);
		g.setColor(Color.black);
		g.drawString("Hello Java!!!", getWidth()/2-20, 10);
	}
	public void update(Graphics g) {
		  paint(g);
		}


	public void stop(){
		th=null;
	}
}

[もどる]

[TOP]