• 締切済み

プログラムのしくみ??

FLASHやJavaアプレットで「びよよよ~~ん」と バネやゴムが伸縮するような動きをするグラフィックや じわじわとスピードを落としながら動きが止まるグラフィックがありますが、あーゆーものは物理の公式をプログラムにおきかえているのですか? もしそうだとしたらプログラムの為の物理公式集とかあるのでしょうか? おすすめの本、HP等あったら教えて下さい。 ちなみに物理関係のHPいろいろ見ましたが、どうプログラムに置き換えて よいやらさっぱりわかりませんでした。 以前「サンプルコードをコピペすればよい」とか言われたことがあるの ですが、理屈がわからないとどうしても気持ちが悪いので・・・ どなたかアドバイスお願いします。

  • bus15
  • お礼率100% (1/1)

みんなの回答

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

>あーゆーものは物理の公式をプログラムにおきかえているのですか? まぁその通りですが、そのまんま置き換えているわけではなく、プログラム用に簡略化して置き換えている場合も多いです。そのまんま書いたら、いかに高速なCPUであっても、処理が重くなったりしますからね。 物理法則をプログラムに置き換えることについては、案外簡単です。 あれこれ考えるよりも「習うより慣れろ」で身に付けたほうがいいでしょう。 等加速度運動などの簡単な動きについては、プログラムを勉強して「アルゴリズム」の作り方を身に付ければ、いちいち参考資料などを見ずともプログラムすることができます。 それ以上のバネや振り子の動きや重力、などについても、高校物理の教科書さえあれば、初級プログラマでも何とかプログラムできるでしょう。 要は「対象となる物理法則に関する知識」「プログラムの書き方」と「方程式をプログラムに置き換えるコツ」、そして肝心の「方程式」さえあれば、たいがいの物理現象は記述することができるのです。 コツさえ分かってしまえば、そして、速度を求めさえしなければ、プログラムの記述自体はさほど難しくはないでしょう。 >プログラムの為の物理公式集とかあるのでしょうか うーん、探せばありますが、ほとんどは上記のような事柄をマスターした人向けの情報です。 「このような動きを作るにはどのようにすればいいか」ではなく「この方程式を高速に計算するには」といった視点で書かれていますね。 「この動きを作るには・・・」については、殆どが「以下のコードをコピペして下さい。」といった内容ばっかりです。 ・・・・・・つまり、物理シムの作り方を言葉で人に理解させるのは、すっごく難しいんですよ。 それより、簡単なサンプルを渡して、それに応用を加えさせ、体で理解してもらうほうがずっと簡単。 ってことでまずは本当に単純な動きのサンプルを見つけてきてそれをコピペしてください(^^; そして、そのサンプルをよく読んで理解してください。 そして、そのサンプルに手を加えて、徐々に複雑にしていってください。 たとえば、まずは「X軸上を等速直線運動するボール」あたりから始めてみればいいんじゃないでしょうかねぇ。 次にそれをY軸方向にも運動させて斜めの動きを作ってみて・・・ それを等加速度運動に変えてみて・・・ とやっているうちにコツは身に付くと思いますよ。 少なくとも私のこれまでの経験においては、理屈+実践を身に付けるには、これ以外の方法はありませんです。

bus15
質問者

お礼

すばやいレスありがとうございます。 暗闇の4カ月間にようやく光が差し込んできたような思いです。 まわりにある程度以上詳しい人皆無の為、どこから手をつけていいかわからず、ご指摘のような ”上記のような事柄をマスターした人向け”の情報しか見つからず、正直あきらめかけていたところでした。 それにしてもARCさんの文章の段落ごとが僕にとっては福音です。 本当にありがとうございました。

関連するQ&A

  • javaのプログラムで間違い箇所が分からない。

    <<Javaサンプルプログラム集:共立出版(株)という 書籍でjavaの勉強をしています。 付属のCD-ROMのサンプルプログラムコンパイルはできるのですが、アプレット起動出来ません。 何故なんでしょう??

    • ベストアンサー
    • Java
  • サンプルプログラム探しています

    下記のようなサンプルを探しています。以前見かけた覚えがありますが、いろいろ検索かけても見つかりません。。。 - GUIのお勉強のためのサンプル - 10個くらいのボックスが画面に散らばっていて、いくつかのボックスはお互いにバネでつながっている - マウスを使ってボックスの一つをドラッグすると、バネでつながっているボックスたちが相互作用でそれぞれ動き出す - 数秒後にボックスたちの相互関係が安定し、動きが止まる 似たようなプログラムのサンプルをご存知でしたら、場所を教えていただければ幸いです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAアプレットが動かない

    JAVAの勉強がてら「JAVAアプレット入門」という本をかって勉強をはじめようとおもったのですが、サンプルCDについているJAVAアプレットのサンプルプログラムが全く動きません。 そのまま使っているので動かないはずないと思うのですがうごきません。 そこで、不意に思ったのですが、ひょっとして現在ではJAVAアプレットは過去の技術でドノブラウザもサポートしていないということはありますか? iOSやアンドロイドでは、つかえない(フラッシュと同じような扱いを受けている)という認識があるもので・・・ アプレットという技術は現在もいきているのでしょうか?おとなしくJAVAスクリプトにきりかえたほうがよいでしょうか?

    • ベストアンサー
    • Java
  • 物体の動きを再現するプログラム

    現在プログラムで物理で習った様々な物体の動きを再現しようと努力しています。 例えば、最初に一瞬だけ力を加えて、その後摩擦力によって停止する物体の動きなどです。 物理の教科書を元に式を組んでいますが、どうも上手く動いてくれません。 こういった物体の動きを再現するプログラム(出来ればJavaScriptかJava)のサンプルがあれば教えていただきたいと思います。 よろしくお願いします。

  • javaアプレットでプログラムを作りたいと思います。

    javaアプレットでプログラムを作りたいと思います。 丸と三角形をくっつけて添付データのようなキャラクタを作ります。 動きとしてはキャラクタごとゆっくり回転させながらマウスにリンクしたキャラクタを自由自在に動かしたいです。 そして、左クリックするとビシッと止まって座標を表示させたいです。 いろいろ調べてたら凄く似てる質問がありました。 http://okwave.jp/qa/q6167264.html 一応よく読んだのですが、いまいち理解できませんでした。 細かいことは上の参考ページと同じです・・・かね? たぶん伝えられていないと思いますので少しずつ補足したいと思います。 現在、三角形をマウスにリンクすら出来てません(´;ω;`)ブワッ

  • Javaプログラムの繋げ方について。

    Javaプログラムの繋げ方について。 今まで(1)のようなプログラムを書いていました。 作りたいものに向けて色々検索するとやりたいものに近い(2)のようなサンプルプログラムを見つけました。 しかし、Java初心者なもので混ぜ方(?)がわかりません。 現在の私の知識からいうと今までのはアプレットでフレーム使うのはアプリケーションなのかな?別物なのかな?そんな感じです。 もし、混ぜることができるなら何かアドバイスをお願いします。 (1)package test; import java.applet.* ; import java.awt.Label ; import java.awt.Font ; import static java.awt.Font.BOLD ; import java.util.*; import java.awt.Graphics; import java.awt.Image; import java.awt.*; public class test extends Applet{ public void paint(Graphics g){ g.setColor(Color.red); g.fillOval(320, 200, 100, 100); } public void init () { ~~~~~~~~~~~~~~~~ } public void start () { ------------ }}} (2)import java.awt.*; import java.awt.event.*; public class MouseEvent7 extends Frame { int posX = 50; int posY = 50; public static void main(String [] args){ new MouseEvent7(); } //コンストラクタ MouseEvent7(){ this.addWindowListener(new WinAdapter()); //ウィンドウリスナーの登録 this.setSize(200,200); this.setVisible(true); //MouseMotionListenerの登録 addMouseMotionListener( new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e){ posX = e.getX(); posY = e.getY(); repaint(); //paintメソッドを実行 } } ); } public void paint(Graphics g){ g.drawOval(posX,posY,50,50); } } (1)の内容に本当に(2)のプログラムで出来るマウスの動きに合わせて円も動く+クリックしたらそこで止まるだけいいのですが。 出来たら止まった点の座標も取りたいですが、そこまではいってません;;

  • 物理演算の仕組み

    現在材質を事前に設定してペンで書き込むと物理法則にしたがって動き出すという動くお絵かきのできる2次元物理シミュレーションのソフトの「OE-CAKE!」というソフトで遊んでいます。材質を水にしたら本当に水のような動きをするしゴムのようなものに設定したりモチのようなものに設定したりと面白いのでよく暇つぶしに使うのですがいったいどのようにしてこのようなリアルな動きを生み出しているのでしょうか?そのホームページには「粒子法」だのとまったくなじみのない言葉が多くでてきていたためよくわかりません。いったいどのような情報を元にどんな感じで計算しているのでしょうか?やはり重さややわらかさみたいなものが元から決まっていたりしてそれを基に計算をしたりしているのでしょうか?どんな情報からどのように動きが生み出されるのかとても気になるのでわかりやすい説明か参考になるHPなどの情報を教えてください。 あと、粒子法とあったのですがほかにもあるのでしょうか?それも気になるのでできたら情報をお願いします。 http://www.octaveengine.com/casual/oecake/ ↑がそのソフトのHPのURLです。 よろしくお願いします

  • JAVAアプレットで画像保存

    JAVAアプレットで写真画像を呼び出して、その写真上にdrawOvalなどで円を描いて その加工した写真をJPEGで保存したいのですが保存方法がわかりません。 JPEGImageEncoder等も参照しましたが、いまいちよく解りません。 出来ればサンプルプログラムなどあればうれしいのですがよろしくお願いします。

    • ベストアンサー
    • Java
  • アプレットのクイックソート分割について教えて下さい

    JAVA アプレットでクイックソートの基本的な仕組みである分割についてのアプレットを作成したく色々と調べているのですが,再帰呼び出しを使ってソートするクイックソートの情報は沢山あるですが, 中央値を用いて中央値より大きいグループAと中央値よりも小さいグループBというように二つのグループに分ける分割のアプレットのサンプルプログラムは探していますが見つかりません. 分割について詳しいかたがいましたら情報を下さい, 宜しくお願いします.

  • flush()とclose()について

    Javaを独習Javaで独習しています。現在、入出力の所まできたのですが、Writerクラスのclose()とflush()の違いがわかりません。それぞれのメソッドの意味はわかるのですがそれらを使う目的がわかりません。flush()は「バッファ付けデータをそのストリームで表されている物理デバイスに書き込む」とあるのですが、サンプルには(バッファ付け文字ストリームの単元にも)flush()は一度も出てこずclose()のみで書き込みが行われています。探したのですが独習Javaのサンプルの中には結局flush()は一度も出てきませんでした。この二つの違いはなんなのでしょうか?初心者のためわかりにくい質問かとは思いますがよろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう