Fisicaで扱う物体には、剛体(FBody)、弾性体(FBlob)、これらをつなぐジョイント(FJoint)が用意されている。剛体には線分(FLine)、球(FCircle)、箱(FBox)、多角形(FPoly)がある。
FLine stick;のように線分の型をもつ変数stickを用意し、
stick = new FLine(x1, y1, x2, y2);のように作成し
world.add( stick );で追加する。 中心(x,y)にある直径rの球
FCircle ball; ball = new FCircle(r); ball.setPosition(x,y); world.add(ball);中心が(x,y)、2辺の長さがw, h、傾きがth度の箱。傾き0ならばsetRotationは省略できる。
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);で三角形が作成される。 いくつかの部品からなる物体 FCompound を設定することもできる。例えば、次のコードは振り子のような形の部品を作る。
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)