画面上に20×20ピクセルの四角形の画像を描画し、玉(四角ですが)が2個の「エアーホッケー」のようなゲームを作りたいと思っております。
玉が1つの場合は問題ないのですが、2つにすると、玉同士の衝突の計算を、どのようにしたらいいのか分からなくなってしまいました。
玉1の左上の頂点を(ball_1_x,ball_1_y)
玉2の左上の頂点を(ball_2_x,ball_2_y)
変数として
玉1の角度をkakudo1 (double)
玉2の角度をkakudo2 (double)
玉1の速度をspeed_1 (double)
玉2の速度をspeed_2 (double)
としました。
plus1_x=speed_1*cos(kakudo1) ; //座標の増減数決定 (plus_1_xは一時的に使っている変数(double))
plus1_y=speed_1*sin(kakudo1) ; //↓
ball_1_x=ball_1_x+plus1_x+0.5; //座標変更(四捨五入処理付き)
ball_1_y=ball_1_y+plus1_y+0.5; //↓
今回の問題は、速度は無視して良いので、角度だけの問題なのです。
単純な反射の計算をしたいです。
例えば、玉1の左の辺と、玉2の右の辺が当たった場合、kakudo1 = 9.4245-kakudo1;kakudo2 = 3.1415-kakudo2;
玉1の下の辺と、玉2の上の辺が当たった場合、kakudo1 = 6.2830-kakudo1;kakudo2 = -kakudo2;
などと、しようとのですが…
どの辺と、どの辺が衝突したかを判定するコードが分かりません(汗
それさえ出来ればうまく行くと思うのですが…
または、全く別な方法でも良いので、どなたかこの問題を解決するコードを考えていただけないでしょうか…
高校数学は一通り理解できると思います。