レールの上を移動するアルゴリズム

レールの上を移動するアルゴリズム 四角いレールがあり、その上にある物体がキー入力により移動します。 レールの角は丸くなっており、物体はレールに沿ってスムーズに移動します。 という処理をプログラムで実装したいのですが、 どういった処理にすればいいか分かりません。 たんなる四角であれば、物体の座標を見て移動する方向を制限すれば いいと思うのですが、角が丸くなっている場所をスムーズに移動させる方法が 分からない状態です。 何かよい処理方法をご存知の方がいらっしゃいましたら お教え頂けるとうれしいです。 宜しくお願いします。 ※簡単な図を添付しましたので参照して頂ければと思います。

画像

プログラミング647閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

面白そうなので作ってみた。プログラムは http://mediatips.co.jp/LineTrace-20110906.zip に置いておきます。 興味があれば見てください。 質問では四角形でしたが作成したのは図形を選びません。ビットマップ上の赤色の部分をレールと見なします。 矢印キーで上下左右の4方向に移動しようとして移動できないと斜め方向を試すという 単純なプログラムです。 LineTrace.h, LineTrace.cpp がエンジン部分です。他のソースは付けていません。 ちゃちゃっと作ったので大したことはありませんが気に入ったら改造して使ってみてください。 レールの太さはビットマップに依存するので進めなくなったら斜め方向を試すようにしてますが, レールの太さを限定してレールの延びる方向を重さで判断すればもっとスムーズに行くかも知れません。

画像

ThanksImg質問者からのお礼コメント

みなさんありがとうございます! どの方のご意見もすごく参考になりました。 今回実際にプログラムを組んで頂いて、しかもコードまで公開して下さったtadokiroさんをベストアンサーに選ばせて頂きます。 親切なreadmeまでつけて頂き感謝の極みです。 なんとかやりたかった処理が実装できそうです。 ありがとうごいました!

お礼日時:2011/9/8 0:56

その他の回答(2件)

0

「円上を移動する」のは出来ますか? それが出来るなら、適当(適切)な場所で、直線の移動と(1/4)円上の移動を切り換えてやればよいだけでは?

0

ライントレースロボットと同じアルゴリズムでどうでしょうか。