電子書籍の厳選無料作品が豊富!

放物線を描くゲームプログラムを作ろうとしてるんですが、
2次関数の知識が学生以来なので苦戦しています。

とりあえず放物線を描く式で
y=-x^2
にたどり着いたレベルです(汗)

それに加えてsin,cosも勉強し直しました。
(なんとなく理解できたレベル・・・)


たとえば火山の噴火のようなエフェクトで、
ランダムでマグマが吹き飛ぶさまを作りたいとします。

マグマが吹き飛ぶ角度とマグマの飛ぶ力、
この二つの値はこちらで用意するとして、
式はどういう風にしたら良いでしょうか?


幼稚な質問で不備があるかもしれませんが
よろしくお願いします。

A 回答 (3件)

V:初速


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

図を見て下さいtはゼロとも一つ見つかります
「放物線を描くゲームプログラムを作ろうとし」の回答画像1
    • good
    • 0

いや、普通に初等力学で…



マグマ弾の質量を 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
のように整理してもよいかと。
    • good
    • 0

マグマは固体とします。

空気抵抗もない。
とすると,これはボールを投げるのと同じですよね。
横方向に強く投げるのか? それとも真上に上げるのか?
これが「吹き飛ぶ角度」で,力あるいは速さを,鉛直方向と水平方向に分解できます。
投げ上げ・吹き飛ぶの際,横方向の速度は,初期速度のみの等速運動です。

ということで,マグマの高さ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座標が分かる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!