現在車両の信号地点での右左折挙動の検討中なのですが、信号到達時に三分の一で直進、右折、左折という挙動をとるようになっています。ですが、例えば南方向から発進している緑の車両が信号到達時に直進、北方向から南に向かって直進している黄色の車両が信号到達時に「右折」となったときに同じタイミングで直進、右折してしまう為、ぶつかってしまいます。車両が直進、左折を選択した時は対向車線の車両と交わることはないのでぶつかることを考慮しなくていいのですが、車両が「右折」を選択した時に、対向車線の車両がある距離まで通過するまで停止し、ぶつからない距離になったら右折するというプログラミング方法はありますでしょうか。よろしくお願いします。
top of page
bottom of page
もし、交差点の位置が決まっていて、入って来る角度なのが決まってるのであれば、美しくないですが、
右折is = False for each agt_ in agtset_ if agt_.direction == 180 + my.direction and agt_.X < 任意の定数_1 and agt_.X < 任意の定数_2 and agt_.Y < 任意の定数_3 and agt_.Y < 任意の定数_4 then //どちらかでも動くことは動く 右折is = True break end if next agt_ if 右折is then stop() else go() end if
といった風に書けるかもしれません。
勿論、交差点の位置や自分の位置関係などを参照しながら動かすことも可能でしょうが、それは頑張ってください
どの程度リアルに描くのかによって変わっていきますが、交差点付近のエージェントの座標と方向を見て右手前方からこちらを向かっていくエージェントを特定し、どちらへ曲がろうとしているのかを見て右折以外がいるかどうかを見る必要があるかと思います。(右折がいても待っていると固まってしまう)
その際、自分の曲がろうとする方向を変数に持っておく必要があります。