2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Windowsゲームプログラミング 質問スレ

370 :名前は開発中のものです。:2009/08/22(土) 23:07:35 ID:p3yP0Up8.net
それじゃあ面倒だが>>359方式で…途中の式は省く
1 / cos(r)^2 = 1 + tan(r)^2
を使えばtan(r)の2次式に変形できる

a * tan(r)^2 + b * tan(r) + c = 0
とすると

b = x1 - x0;
a = -g * b * b / (2 * v * v);
c = y0 - y1 + a;

/* d は判別式。d < 0 なら解なし */
d = b * b - 4 * a * c;

/* 解の公式でtan(r)を求める */
tan_r = (-b + sqrt(d)) / (2 * a);
//tan_r = (-b - sqrt(d)) / (2 * a); どちらの解も目標位置を通る

r = atan(tan_r);

loop:

t += dt;
x = x0 + v * cos(r) * t;
y = y0 + v * sin(r) * t - g * t * t / 2;

goto loop;

一応動いたけど左向きに発射するときは初速度をマイナスにしないとダメっぽい


総レス数 973
284 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200