• ベストアンサー

倍の時間で同じ等加速度運動をするには?

速度を求める公式は「V = V0 + at」ですが、 で同じ運動をする場合、速度を求める場合はどのようになりますでしょうか? 具体的な話をしますと、 30FPSで動作しているゲームを60FPSに変更したいのですが、 その中で加速度運動が行われており、2フレームで同じ動作になるようにしなければならないのです。 毎フレーム以下のような処理が入ります。 速度' *= 減速補正値 速度' += 加速度 X座標' += 速度’

  • actyq
  • お礼率3% (3/97)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

減速補正値なんてものが存在するようで、等加速度運動じゃないでしょう。 となるとまともな補間は面倒なので処理ルーチンを2フレームごとに回してください。 端数処理とかなんとかいろいろと元に合わせやすいですし。 ゲーム進行の補間ができる能力があれば、偶数フレームの初期値の設定など 軽いものでしょう。 (偶数フレーム速度初期値は「奇数フレーム初期値*SQRT(減速補正値)+0.5*加速度」、 偶数フレームX座標初期値は「奇数フレーム初期値+偶数フレーム速度初期値」くらいで よかろうかと) 処理ルーチンは適当に作ってくださいませ。計算用に速度変数とX座標変数を 追加してください。思いつかないようなら、あきらめた方が無難です。 ではでは、がんばって!

その他の回答 (2)

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.3

>速度' *= 減速補正値 >速度' += 加速度 >X座標' += 速度’ この式は、いくつかの項が省略されています。 最初の「減速補正値」は、何の意味か分からないのでとばしますが、 フレーム間の時間をΔt、1フレームの間では等加速度で運動するものとすれば、  速度' = 速度 + 加速度 * Δt  X座標' = X座標 + 速度 * Δt + 1/2*加速度 * Δt^2 が正しい式です。 30FPS のときは Δt=1/30秒 で、質問に書かれた式では、これを1として処理していることになります。 したがって、60FPSでは Δt=1/60秒 になるように式を直せばよいです。 30FPSでも、X座標の計算に加速度の項を入れれば、ずっと動きが自然になるはずです。

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.1

「2フレームで同じ動作になる」のは、本当は、毎秒30フレームのままでないと再現になりません。つまり、毎秒60フレームにしても、2フレームは同じものを表示して、次の2フレームに移らないと、等しくないのです。 それを、あえて2フレームかけて中間の位置に存在させる・中間の速度で移動するフレームを作成するとなると、「元は存在しなかった衝突判定」が生じることで、必ずしも再現されたとはいえず、「別ゲーム」となる覚悟が必要です。 その前提で、毎秒30フレームのときの加速度aを半分にして、毎秒60フレームのときに1フレームごとにa/2、次の1フレームで残りa/2、と速度に加算していけば疑似的には実現できます。しかし、これは、「等加速度運動である」という大前提での補間処理である点は忘れないようになさってください。

関連するQ&A

  • 物理の等加速度運動公式についてです

    来年度から物理が始まるので予習をしている高校1年生です。 等加速度運動の公式で ①v=v0+atはt秒後の速度v ②x=x0+v0t+½—at^2はt秒後の座標x を表してるのは分かったのですが ③v^2−v0^2=2a(x−x0)が何をしているのかが分かりません。 ③が何を表しているのかを教えていただきたいです。

  • 等加速度運動

    変位を求める公式の x=v0t+at2 で、加速していく場合の理屈は、v-tのグラフの台形の面積を求めるから上の公式になると理解できました。しかし、減速の場合なぜ上の公式で変位が求められるかがわかりません。 証明してくれませんか。

  • 等加速度運動

    V-Tグラフで、加速度a<0のときの等加速度運動はUターン型になる、らしいですが、これがイメージできません。折り返し地点でとまるか、減速してしまうような気がします。 亦、同じ場所での速さ(速度ではなく)は同じらしいですが、これもイメージできません。 上の二つのイメージの方法を教えてください。

  • 等加速運動などの公式

    高校の物理の公式で何を求めているかわからないのです。。。 (1)v=v。+atは何をもとめているのですか?? (2)x=x。t+1/2at^2はなにをもとめているのですか?? (3)v^2-v。=2axはなにをもとめているのですか? 速度や加速度などの意味もわからないのでおねがいします。

  • 「等加速度運動」と「等加速度直線運動」の違いは?

    「等加速度運動」と「等加速度直線運動」の違いは?   「速度」はベクトル量、「速さ」はスカラー量だから、 「等速直線運動」=「等速度運動」であり、 「等速度直線運動」という表現は不適切(トートロジーだから)と高校物理で習いました。 ですが、「速度」同様にベクトル量である「加速度」について、 「一定の加速度で直線運動すること」=「等加速度直線運動」と書かれているサイトを多数目にしました。 私が思うに、これもやはり不適切で、「等加速度運動」という表現の方が適切だと思うのですが、どうでしょう? 「等加速度直線運動」と「等加速度運動」のどちらが適切なのでしょうか? また、速度での「速さ」みたいな、加速度の大きさを示すスカラー量の名称ってないんでしょうか?

  • 等加速度運動 の 反対 減速を再現するには?

    キャラクターのジャンプを再現しようと思い考えてた結果、 物理学の「等加速度運動」が関係することがわかり、公式を元に下のようなのを考えました。 これは止まった状態から段々加速します。 void Speed( float MoveSpeed; //加速を掛ける前の速度 float SpeedPower; //加速を加える速度(定数) float NewSeed; //加速を掛けた後の速度 int accel; //加速を掛けた回数 ){ ++accel; //加速回数を更新する //ジャンプの等加速度運動を発生させる(加速度 += 移動速度 + 加速値 * 加速回数) NewSeed += MoveSpeed + SpeedPower * accel; } では反対に徐々に止まる「等加速度運動」の反対を表現しよとプラスをマイナスにしてみました。 NewSeed += MoveSpeed - SpeedPower * accel; そうすると前に進むのではなく、逆方向に加速するようになってしまいました。 結構考えましたがいいアルゴリズムが見つかりません。 減速させるにはどうすればよいでしょうか?

  • 直線運動の加速度についての質問です

       加速度の公式(下の2つ)の使い分けができません。 どのような問題のときに使うのか教えていただければ助かります。          (1)V=Vo+at     (2)V=Vot+1/2at²        この二つの公式はたとえば時間を求めるときは(1)を  距離を求めるには(2)をといった感じで使い分けをするんでしょうか?    説明が上手くできなくてすみません。 よければ回答お願いします<m(__)m>  

  • 加速度が速度の一次関数で表される物体の運動

    質量mの物体の運動方程式が、その物体の速度をvとして ma=Kv (Kは定数) と表されるとき、 a=dv/dt, v=dx/dtを代入すると、 dv=(K/m)dxー(1) という関係式がえられます。 この運動が等加速度運動だと仮定し、ある時刻における物体の速度をv1, 微小時間dt後の物体の速度をv2, 微小時間dt内に物体が動く距離をdxとおきます。 等加速度運動の公式より (v1)^2-(v2)^2=2adx 運動方程式にv=(v1+v2)/2を代入して v1+v2=2ma/K また、dv=v2-v1より (v2)^2-(v1)^2 =(v2-v1)(v2+v1) =2madv/K=2adx ∴ dv=(K/m)dx この結果が意味するのは「運動方程式が ma=Kvで表される物体の運動は等加速度運動である」ということなのでしょうか?

  • 角加速度?

    現在回転運動を学んでいるのですが教科書に出てくる角速度、向心加速度、接線加速度などがこんがらがっています。教科書にある公式に aT=rα という式があるのですがこのαが角加速度なんでしょうか?英語で表記されていて読んでいるもののなかなか理解できずにいます。接線方向に加速度を持っている時の√aT~2+ac~2 からもとまるトータル加速度と角加速度とはまた別物なのでしょうか?それぞれの要素がこんがらがって正直混乱しています。漠然とした質問で申し訳ございませんがどうかよろしくお願いいたします。

  • 等加速度直線運動の時間消去のしかた

    等加速度運動の2式からの時間消去の仕方がわかりません よろしくおねがいいたします v=v₀+at x=v₀t+1/2at^2 より tの消去のしかたをおしえてほしいです よろしくおねがいいたします。