ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

円筒の中を円運動するボールの数値解析5

2010年06月25日 21時05分42秒 | ソフト開発日記
なんとか一段落。

とりあえず画像のようにそれっぽく(?)動きました。
画像は左から

①ドパーっと粒子を放り込んだ図
②その後大きい丸を左に引っ張った図
③その後しばらく放置した図

となってます。
粒子数は1000で、微妙にスローモーションのような動きに。
ここからいよいよ本格的な粒子法の話に、なっていくはず。
とりあえず粒子間の相互作用とか粒子法っぽい計算の近似とか入れたりして、
従来のやり方に従ってそれっぽくした後に
新規性やら差別性やらオリジナリティ的なものを付与していきたい。

円筒の中を円運動するボールの数値解析4

2010年06月24日 21時37分48秒 | ソフト開発日記
昨日の続き

v'_x = E(v_x * cosθ + v_y * sinθ) * cosθ + (v_x * sinθ + v_y * cosθ) * sinθ
v'_y = E(v_x * cosθ + v_y * sinθ) * sinθ + (v_x * sinθ + v_y * cosθ) * cosθ

では全然うまくいかなかった。
とりあえず全体にマイナスつけ忘れてたのでマイナスつけることに。

v'_x = -E(v_x * cosθ + v_y * sinθ) * cosθ - (v_x * sinθ + v_y * cosθ) * sinθ
v'_y = -E(v_x * cosθ + v_y * sinθ) * sinθ - (v_x * sinθ + v_y * cosθ) * cosθ

これで若干それっぽくなったけど、
壁に接触したあと明らかに速度が上がってしまう。
ここからは不本意ではあるけどしらみつぶし作戦で。

結果、次のように符号を調整するとかなりそれっぽくなった。

v'_x = -E(v_x * cosθ + v_y * sinθ) * cosθ - (-v_x * sinθ + v_y * cosθ) * sinθ
v'_y = -E(v_x * cosθ + v_y * sinθ) * sinθ - (v_x * sinθ - v_y * cosθ) * cosθ

めでたしめでたし。

円筒の中を円運動するボールの数値解析3

2010年06月23日 21時12分34秒 | ソフト開発日記
前回の続き

今度は円運動ではなく自由な運動を考える。
円筒の中をぽんぽん跳ねたりするボールの解析を行ってみる。

ボールが円筒の内側から円筒に接触したとき、
前回のとおりボールの中心と円筒のなす角θは

θ = tan^(-1){(y-Y)/(x-X)}

であり、接触の際の速度ベクトルをv(v_x, v_y)とする。
速度ベクトルvの、接触部の法線方向成分は

v_x * cosθ + v_y * sinθ

である。
同様に、接触部の水平方向成分は

v_x * sinθ + v_y * cosθ

符号が怪しいけど、多分こんな感じ。
例のごとく、円筒の跳ね返り係数をEとすると、
跳ね返り後の法線方向の速度は

E(v_x * cosθ + v_y * sinθ)

であり、その速度ベクトルは

(E(v_x * cosθ + v_y * sinθ) * cosθ, E(v_x * cosθ + v_y * sinθ) * sinθ)

である。また、接触部の水平方向成分をベクトル表示すると

((v_x * sinθ + v_y * cosθ) * sinθ, (v_x * sinθ + v_y * cosθ) * cosθ)

である。さて、以上から接触後の最終的な速度v'(v'_x, v'_y)を求めると

v'_x = E(v_x * cosθ + v_y * sinθ) * cosθ + (v_x * sinθ + v_y * cosθ) * sinθ
v'_y = E(v_x * cosθ + v_y * sinθ) * sinθ + (v_x * sinθ + v_y * cosθ) * cosθ

となる。多分。・・長い。あってるのかなこれ。
ちょっとこれどおりソース書いて調べてみよう。


何故か匂う部屋を匂わなくする方法

2010年06月22日 23時58分07秒 | 独り言
自分の部屋に入ると、何故かよくわかんないけどなんか独特の匂いがする。
スーパーとかで売ってる消臭剤とかしばらく置いても、さほど変化無し。
ってことを言ったら、友人がすごく怪しい匂いをなくす方法教えてくれました。

火山灰を部屋の高いとこに置くといいらしいです。
火山灰って手に入るもんなんでしょうか。
調べてみると、火山灰を利用した石鹸や化粧品や色々出てきたんですが
なかなか消臭剤、および火山灰そのものを購入できるサイトは見つかりませんでした。

怪しい情報源なので、火山灰による部屋の消臭は保留。


粒子法による流体シミュレータを3Dにしたい

2010年06月21日 21時56分16秒 | ソフト開発日記
2Dのがちゃんとできてないのに3Dにしたくなったので、
Javaで作ったソースをC++に書き換えて、OpenGLで3D描画してみました。

なんとなくそれっぽい動きになってくれました。
ただ、リアルタイムシミュレーションが重いのは仕方ないとして
Javaで2Dでやってたときと比べて何か不自然な動きがチラホラ。

とりあえず2Dのも3Dのも、マーチングキューブ法とやらで境界探して
水っぽくレンダリングしてみたい。

画像だけじゃ記録としてわかりにくいから、そのうち動画を。