About Cosense
Help
Log in
physjs
S
p
r
i
n
g
バ
ネ
を
表
現
す
る
ク
ラ
ス
←
N
o
n
D
y
n
a
m
i
c
a
l
O
b
j
e
c
t
m
1
,
m
2
と
い
う
P
h
y
s
O
b
j
e
c
t
を
つ
な
ぐ
バ
ネ
を
表
す
ク
ラ
ス
k
×
(
(
m
1
と
m
2
の
距
離
)
-
l
)
と
い
う
大
き
さ
の
力
を
m
1
と
m
2
に
及
ぼ
す
。
サ
ン
プ
ル
バ
ネ
振
り
子
c
o
n
s
t
r
u
c
t
o
r
(
p
s
,
m
1
,
m
2
,
k
,
l
,
c
)
p
s
は
属
す
る
系
P
h
y
s
t
e
m
m
1
,
m
2
は
結
ん
で
い
る
二
つ
の
物
体
P
h
y
s
O
b
j
e
c
t
k
は
ば
ね
定
数
、
l
は
自
然
長
、
c
は
色
s
e
t
K
(
k
k
)
バ
ネ
定
数
を
k
k
に
設
定
Related
Sort by
Related
Modified
Created
Last visited
Most linked
Page rank
Title
Links
PhysObject
[**** 物理オブジェクト]物理的な「物体」を表現するクラスです。2次元的な位置を変数として持ち、[Phystem]のループの中で位置変数を(運動方程式に従って)変えていきます。運動方程式を出すためには「力」が要りますが、各オブジェクトが他の物体にどのような力を及ぼしているかを決めるのが関数interactionForce(to)です。これを定義することで物体の間にどんな力が働くかをプログラムできます。
Phystem
物理的な「系」を表現するクラス。このクラスにいろんな物体を所属させる。系を表示するための「画面」である[RescaleCanvas]を親クラスにする。含まれている[PhysObject]がマウスなどでドラッグされたときは、そういう運動を起こすような外力が加わったものとして運動を行う。Phystem←[RescaleCanvas]
NonDynamicalObject
非力学的なオブジェクト。つまり運動方程式に従わないオブジェクトたとえば固定点、あるいはバネやコネクタなど、質量を持たずにつながれた物体と連動して動く物体に使う。[[class NonDynamicalObject]](← [PhysObject] )[* constructor](ps,x,y,c,rr)親クラス(PhysObject)を呼んだ後、自分自身をpsの「非力学的オブジェクトリスト」に登録する。
classのリスト
classを使っているので、使用しているclassのリストを以下に上げます。演算のためのクラス[Vector] : 2次元ベクトル表現のためのクラス[ArrowMark] : 矢印
Connector
class Connector←[Spring]物体と物体を結びつける「棒」を表すクラス。実態は非常にばね定数が強いバネである。ただし、単なるバネだと振動し始めると止まらないので、バネの伸び縮み方向にたいして相対速さに比例する減衰力が働くようになっている。Connectorを使っているサンプル [http://irobutsu.a.la9.jp/physjs/arei.html 亜鈴] [http://irobutsu.a.la9.jp/physjs/furiko.html 振り子]
バネでつながれた二つの物体のサンプル
二つの物体をバネでつなぐと、[http://irobutsu.a.la9.jp/physjs/sample2C.html]となります。[http://irobutsu.a.la9.jp/physjs/sample2.html]と比べて変えたところは、を加えたところと、重力を消した(`makeGravity(1);`をやめた)ことです。この新しく作られた[Spring]というオブジェクトにより、二つの物体が繋がれます。
NonDynamicalObject
Ball
class Ball ←[DynamicalObject]互いに衝突する丸い物体を表すクラスconstructor(ps, x, y, vx, vy, m, c, r)親クラスである[DynamicalObject]のコンストラクタを呼んだ後、自分を識別するために、this.isBallというプロパティをtrueに設定する。interactionForce(to)
Wall
class Wall←[NonDynamicalObject]壁を表現するクラス(NonDymamicalなので動きません)現状では壁が力を及ぼすのは「Ball」に対してだけです。constructor(ps,x1,x2,c,r)x1,x2は二つの場所で、その二つの場所をつなぐ壁を作る。
PhysObject
Trace
物体の軌跡を保持して、表示するクラスこのクラスは[PhysObject]が使っているもので、ユーザーは(独自拡張をしないのならば)このクラスの中身を知らなくても大丈夫。少しひねったサンプルは、[http://irobutsu.a.la9.jp/physjs/com.html]にある(重心の軌跡を表現している)。メンバー関数constructor(c,i)
DynamicalObject
物理的物体のうち運動方程式に従って「動く」もの。どんな力が働いたかを覚えておいて、「系([Phystem])がその力にしたがってこの物体の位置を決める。そのためにこのクラスのオブジェクトはfListという「力のリスト」を持っている。[Phystem]はこの力のリストを元にして運動方程式を作る。class DynamicalObject(←[PhysObject])
Created
7 years ago
by
前野[いろもの物理学者]昌弘
Updated
7 years ago
by
前野[いろもの物理学者]昌弘
Views: 92
Page rank: 3.2
Copy link
Copy readable link
Start presentation
Hide dots
Spring
バネを表現するクラス←
NonDynamicalObject
m1,m2という
PhysObject
をつなぐバネを表すクラス
k×((m1とm2の距離)-l)という大きさの力をm1とm2に及ぼす。
サンプル
バネ振り子
constructor
(ps,m1,m2,k,l,c)
psは属する系
Phystem
m1,m2は結んでいる二つの物体
PhysObject
kはばね定数、lは自然長、cは色
setK
(kk)
バネ定数をkkに設定