2012年4月27日金曜日

SL4A Python: Android端末でパンチ力を測定する

Android端末上でプログラムが作成できるって知ってました?
「SL4A」というソフトウエアを端末にインストールすることで、それが可能になります。
プログラム言語は複数選べますが、ここでは「Python」を選択しました。
「SL4A」および「Python」のインストール方法は、このサイトのお世話になりました。

今回作成したのは、「パンチ力測定プログラム」です!
「ホーリーランド」というマンガを読んだ影響で w


ホーリーランド ( Wiki抜粋 ):

高校生の神代ユウは、家にも学校にも居場所を見つけられず夜の街にいた。華奢な外見であり、ひ弱ないじめられっ子であったユウだが、ある時、ボクシングのワン・ツーを覚え、人知れず自室で訓練を繰り返す。そして何ヶ月か経った頃、街で自分に絡んできた不良達をワン・ツーで倒していったユウは、次第にヤンキー狩りと呼ばれ恐れられる程になっていた...


ソースコード:

ソースコードの表示およびダウンロード
プログラムの保存場所は、/mnt/sdcard/sl4a/scriptになります。
このプログラムで一番のポイントは、起動時に「ストラップの着用を促す」部分です。
万一、端末が手からすっぽ抜けても、僕には責任が取れません。


操作方法:
端末を握りしめて、拳を突き出すだけです(ストラップの着用を忘れずに!)。
拳を突き出すと、その加速度をAndroid端末が英語でアナウンスしてくれます――「エイティーン ポイント ファイブ!(18.5m/s-2)」という感じで。
実際には「加速度=パンチ力」というわけじゃないだろうけど、お遊びということで。

実際のパンチ力とは?:

では、実際のパンチ力とは何だろう?
物体の衝突とは「 運動量 = 質量 × 速度 」の交換である――と中学校で習った。
ということは「 パンチ力 = 運動量 」なのだろうか?
しかしパンチがいくら強くても、相手が布団であれば威力は吸収されてしまう。エネルギ保存則からいえば、衝突にかかる時間が2倍になれば、パンチ力は2分の1になってしまう。
では、「 パンチ力 = 運動量 ÷ 衝突時間 = 質量 × 速度 ÷ 衝突時間 」ということだろうか?
速度÷衝突時間 」の部分を、「 速度÷時間=加速度 」と勘違いしそうだけど、あくまで「 衝突に要する時間 」であって「 パンチの加速 」は関係ない。
実際に物理の教科書では、衝突は以下の式で現される。
運動量: m×v  =  撃力(力積): F×⊿t
衝突: F  =  m×v÷⊿t
  • ⊿t(デルタティー):衝突に要する時間。⊿は微小変化を意味する。
  • ヒットした瞬間に素早く拳を引きぬき、「衝突時間」を短くすることでダメージを与える――という文句を耳にすることがある。しかし、「衝突時間」は、あくまで両者の弾性のみに依存するのではないか。衝突中に拳を引き抜けば、パンチの速度(∝運動量)も落ちるわけで。 もしかして生体構造に対しては、無機物とは異なる何らかの影響があるのだろうか。次の攻撃態勢に素早く移るためというなら理解できる。
  • ネットで検索したら、「破壊力 = 体重×速度×握力」というのが出てきた。これは理解できる。拳を強く握りこむことで「衝突時間」を短くするということだ。「体重」については、拳に乗せられる質量が増大するということだ。
  • それと「インパクトの瞬間に拳を強く握りこむことで破壊力が増す」というもの。これも理解できる。握ったままでは速度が出ないからだ。
一生懸命書いてるけど、本気でワン・ツーの特訓してるわけじゃありません。
何か間違ってたら教えてください^^;

0 件のコメント:

コメントを投稿