曲がった迷路その24 - 出入り口の位置の指定 [曲がった壁を持つ迷路の生成]
アルゴリズム上の問題はあらかた片付いた。実装に入る前に残った問題と言うか、決めておいた方がいいことを決めてしまおう。
入り口と出口の位置の指定
出入り口の位置はユーザが指定できるようにしたい。こまかく指定できてもあまり意味がないので、ポイントされた位置に一番近い外壁の一部を開けることにしよう。口の幅を指定できるようにしてもしょうがないので決めうちにしてしまおう。とするとこの場合、FeatureSizeか、あるいは衝突回避ポテンシャルの半径rに比例させればいいだろう。こういうのはどういうやり方でやってもいいんだけど、とにかく何かに決めておいた方がいい。
GUIからはスペックルポテンシャルの大きさを基準にしてそれに対する相対位置で指定してもらう。
指定された位置に一番近い外壁を、rの幅だけ開ける。縦方向(y方向)の壁への距離と横方向(x方向)への距離が等しいときは縦方向の壁を優先することにする。
また、かどっこが一番近かったり、口を開けたときかどっこまでの距離よりも口の大きさが大きいときは縦方向の壁のかどを開けることにする。
つまり、図-29のようにする。 珍しく妙にカラフルな図になったけど、図中赤い点線がポテンシャルの大きさを表す。この外枠が外壁になって、このなかに壁を生成する。 色分けされた領域の中を指定されると、その領域が含む外壁に幅rの口を開ける。例えば図中Pの位置を指定されたらそこから一番近い外壁である下側の横壁のPの真下のGに口を開けることにする。
図中Cの領域を指定されたら縦壁のかどに口を開けることにする。境界線の上ではどちらかを優先することにする。
プログラミング上は例外を作らないようにした方がいいので、どんな位置が指定されてもどこかに口を開けるようにするべきだけど、ユーザインターフェイスとしては、中心付近の微妙な位置を指定すると勝手な場所に開くように見えてしまうので、このままではよくない。
GUI側で、曖昧な指定をしたときは無視するようにフィルタリングしたデータを渡すようにすべきだろう。
2009-07-29 21:43
nice!(0)
コメント(0)
トラックバック(0)
コメント 0