import java.awt.*; import java.io.*; import java.lang.*; /** * PhObject のサンプルアプレット * 放物運動 */ public class Test4 extends java.applet.Applet { /** シミュレーション用の物理空間 **/ MyField4 workField = new MyField4(); public void init(){ setLayout(new BorderLayout()); add("Center",workField); workField.set_sleepTime(50); // 描画の時間間隔を50/1000sに設定。 workField.init(1); // 初期設定(物体の個数は1個) } public void start(){ workField.start(); // アニメーション開始 } } /** PhFieldを継承したMyField4 Class **/ class MyField4 extends PhField{ /** 位置や速度の初期設定 **/ public void init(int k){ makeObject(k); dt = 0.1; // 時間間隔を設定 obj[0].s.set( 0.0, 0.0); // 物体の初期位置設定 obj[0].v.set( 20.0, 60.0 / 180.0 * Math.PI); // 初速度設定 obj[0].set_m( 10); // 物体の質量設定 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( obj[0].get_m() * 9.8, -90.0 / 180.0 * Math.PI); // 物体の個数分だけ記述 } } |