• ベストアンサー

放物線を描くゲームプログラムを作ろうとしてるんですが、

放物線を描くゲームプログラムを作ろうとしてるんですが、 2次関数の知識が学生以来なので苦戦しています。 とりあえず放物線を描く式で y=-x^2 にたどり着いたレベルです(汗) それに加えてsin,cosも勉強し直しました。 (なんとなく理解できたレベル・・・) たとえば火山の噴火のようなエフェクトで、 ランダムでマグマが吹き飛ぶさまを作りたいとします。 マグマが吹き飛ぶ角度とマグマの飛ぶ力、 この二つの値はこちらで用意するとして、 式はどういう風にしたら良いでしょうか? 幼稚な質問で不備があるかもしれませんが よろしくお願いします。

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

  • ベストアンサー
  • debukuro
  • ベストアンサー率19% (3634/18947)
回答No.1

V:初速 h:物体の高さ t:飛行時間 g:重力加速度 θ:角度 先ずtを求めて下さい tは高さの式を微分して高さがゼロの時の微係数を求めてます 図を見て下さいtはゼロとも一つ見つかります

その他の回答 (2)

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.3

いや、普通に初等力学で… マグマ弾の質量を m、発射位置を ↑p0、初速を ↑v0、 重力加速度を ↑γ と置きます。 m, ↑p0, ↑v0 は、データを取るなり、ランダムに生成するなり。 ↑γ は、鉛直下向きで、大きさ 9.80[m/s^2] のベクトルです。 時刻を t、マグマ弾の位置を ↑p で表すと、 運動方程式は、(d/dt)^2 ↑p = ↑γ。これを、初期条件 t = 0 のとき ↑p = ↑p0, (d/dt)↑p = ↑v0 の下に解けばよい ことになります。 運動方程式を、0~t の積分区間で2回積分して、 ↑p = ↑p0 + ↑v0・t + ↑γ・(t^2/2) です。 各ベクトルを成分に分解して、 ↑p = (x,y)、↑p0 = (x0,y0)、↑v0 = (Vx,Vy)、↑γ = (0,-g) と書けば、積分した式は、 x = x0 + Vx・t, y = y0 + Vy・t - (g/2)t^2 となりますね。 この式から、t を代入消去すれば、 y = y0 + Vy・(x - x0)/Vx - (g/2){(x - x0)/Vx}^2 が得られます。 これが、求める放物線の方程式です。 平方完成して y = {y0 + Vy^2/(2g)} - (g/Vx^2){x - (x0 + Vx・Vy/g)}^2 と書くのもよいし、 初速を ↑v0 = (V cosθ,V sinθ) の形で与えて、 y = C - A(x - B)^2, C = y0 + (V sinθ)^2/(2g), A = g/(V cosθ)^2, B = x0 + (V^2)(sinθ)(cosθ)/g のように整理してもよいかと。

  • LTCM1998
  • ベストアンサー率31% (238/746)
回答No.2

マグマは固体とします。空気抵抗もない。 とすると,これはボールを投げるのと同じですよね。 横方向に強く投げるのか? それとも真上に上げるのか? これが「吹き飛ぶ角度」で,力あるいは速さを,鉛直方向と水平方向に分解できます。 投げ上げ・吹き飛ぶの際,横方向の速度は,初期速度のみの等速運動です。 ということで,マグマの高さy,マグマの水平方向の距離xとして, 1)マグマが吹き飛ぶ角度と力から,横方向の初期速度を求める。 2)同じく,縦方向の初期速度を求める。 3)2)で求めた縦方向の初期速度と重力加速度を使って,マグマが行ける一番高いところの高さYを求める。 v^2 - v0^2 =2axより,v^2 - v0^2 =2gY vは現在の速度,v0は初期速度,gは重力加速度 4)3)で出した高さYから,一番高いところまで行く時間Tを求め,もとの高さに戻るまでの時間2Tを出す。 y=1/2 gt^2 よりt^2=2y/g 5)1)で求めた横方向の初期速度を用いて,3)で求めた時間2Tの間に動ける距離Xを求める。 6)5)の半分が頂点の横位置なので,1/2すると頂点のX座標が分かる。

関連するQ&A