VC++で簡単なボールバウンスプログラムを作成しました。
このプログラムの目標は、ボールがひし形で跳ね返らなければならないことです。ひし形から出ることはできません。
正常に動作しているようですが、左右の角で動かなくなってしまいました。
この問題を解決するにはどうすればよいですか?ボールが左右の角に行くとき、方程式の条件が重複していると思います...
この問題を解決するための他のアルゴリズムを提案できますか?
この問題を次のようにしようとしました
while(!isInside(getNextPos(circle))) { updateDirectionVector(circle); }
が、毎回ランダムな値が変化するため、このようにすることはできません。(繰り返しタイマーを使用)
これは、コーナー以外で動作するこのプログラムのアルゴリズムです。
up:
while(1) goDownSideCircle;
if(StuckOnDownSide) goto down;
down:
while(1) goUpSideCircle;
if(StuckOnUpSide) goto up;