Fisicaで扱う物体には、剛体(FBody)、弾性体(FBlob)、これらをつなぐジョイント(FJoint)が用意されている。剛体には線分(FLine)、球(FCircle)、箱(FBox)、多角形(FPoly)がある。
FLine stick;のように線分の型をもつ変数stickを用意し、
stick = new FLine(x1, y1, x2, y2);のように作成し
world.add( stick );で追加する。
FCircle ball; ball = new FCircle(r); ball.setPosition(x,y); world.add(ball);
FBox brick; brick = new FBox(w, h) brick.setPosition(x, y); brick.setRotation( radians(th) ); world.add(brick);
new FPoly()で作成し、vertex(x,y)で頂点を追加していく。例えば、
b = new FPoly(); b.vertex(10,20); b.vertex(40,20); b.vertex(10,60); b.vertex(10,20); world.add(b);で三角形が作成される。
pend = new FCompound(); ball = new FCircle(20); ball.setPosition( 100, 100 ); thread = new FLine( 100, 0, 100, 100 ); pend.addBody( ball ); pend.addBody( thread );上記の部品に共通の設定を挙げておく。bodyはいずれかの物体を表す。
body.setVelocity( vx, vy ); | 速度を指定する。 |
body.setPosition( x, y ); | 重心の位置を指定する。 |
body.setDensity( d ); | 密度を指定する。(指定がなければ1) |
body.setDamping( b ); | 抵抗力の係数(1/60秒で速度が(1-b)倍になる)を指定する。(指定がなければ0.5) |
body.setFriction( f ); | 摩擦係数(動摩擦係数、静止摩擦係数で共通)を指定する。摩擦力は垂直抗力のf倍となる。(指定がなければ0.5) |
body.setRestitution( e ); | 跳ね返り係数を指定する。(指定がなければ0.1) |
body.setRotation( th ); | 回転角度を指定する(単位はラジアン) |
body.setAngularVelocity( th ); | 重心の周りの回転角速度を指定する。 |
body.setAngularDamping( b ); | 回転抵抗力の係数(1/60秒で角速度が(1-b)倍になる)を指定する。(指定がなければ0.5) |
body.setStatic( trueまたはfalse ); | trueにすると物体は静止して動かない。(指定がなければfalse) |
body.setRotatable( trueまたはfalse ); | trueにすると物体は回転できる。(指定がなければtrue) |
body.setGrabbable( trueまたはfalse ); | trueにすると物体をマウスで動かせる。(指定がなければtrue) |