import java.awt.*;
import java.io.*;
import java.lang.*;
/**
* PhObject のサンプルアプレット
* 2物体の運動
*/
public class Test2 extends java.applet.Applet {
/** シミュレーション用の物理空間 **/
MyField2 workField = new MyField2();
public void init(){
setLayout(new BorderLayout());
add("Center",workField);
workField.set_sleepTime(5); // 描画の時間間隔を0.01sに設定。
workField.init(2); // 初期設定(物体は2個)
}
public void start(){
workField.start(); // アニメーション開始
}
}
class MyField2 extends PhField{
public void init(int k){
makeObject(k);
dt = 0.05;
obj[0].s.set( 220.0, 150.0);
obj[0].v.set( 10.0, 90.0 / 180.0 * Math.PI);
obj[0].set_m( 10.0);
obj[1].s.set( 80.0, 150.0);
obj[1].v.set( 10.0, -90.0 / 180.0 * Math.PI);
obj[1].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);
obj[1].a.set_acc( obj[1].get_f(), obj[1].get_m());
obj[1].v.add_vel( obj[1].get_a(), - dt / 2);
}
public void set_force() {
obj[0].f.set(1000000.0 /(obj[0].s.dist(obj[1].s) * obj[0].s.dist(obj[1].s))
, obj[0].s.direct(obj[1].s));
obj[1].f.set(1000000.0 /(obj[1].s.dist(obj[0].s) * obj[1].s.dist(obj[0].s))
, obj[1].s.direct(obj[0].s));
}
}
|