import java.awt.*;
import java.io.*;
import java.lang.*;
/**
* PhObject のサンプルアプレット
* 単振動
*/
public class Test3 extends java.applet.Applet {
MyField3 workField = new MyField3();
public void init(){
setLayout(new BorderLayout());
add("Center",workField);
workField.set_sleepTime(10); // 描画の時間間隔を0.01sに設定。
workField.init(1); // 初期設定(物体は1個)
}
public void start(){
workField.start(); // アニメーション開始
}
}
/** PhFieldを継承したMyField3 Class **/
class MyField3 extends PhField{
Position p0 = new Position();
/** 位置や速度の初期設定 **/
public void init(int k){
makeObject(k);
dt = 0.05; // 時間間隔を設定
/** 力の中心となる点 **/
p0.set( 150.0, 150.0); // 力の中心位置設定
obj[0].s.set( 150.0, 240.0); // 物体の初期位置設定
obj[0].v.set( 0.0, 0.0 / 180.0 * Math.PI); // 初速度設定
obj[0].set_m( 10.0); // 物体の質量設定
set_force(); // 力を計算
obj[0].a.set_acc( obj[0].get_f(), obj[0].get_m());// 加速度を計算
obj[0].v.add_vel( obj[0].get_a(), - dt / 2); // 初速度をdt/2ずらす
}
/** 物体にはたらく力を計算 **/
public void set_force() {
obj[0].f.set(10.0 * obj[0].s.dist(p0), obj[0].s.direct(p0));
}
/** 物体を描画 **/
public void drawCanvas(ExGraphics gr){
gr.setColor(Color.red); // 中心位置を赤で描画
gr.fillCircle( (int)(p0.getx()), (int)(p0.gety()), 5);
super.drawCanvas(gr); // 親クラスを呼び出し
}
}
|