ここではAの側が先に次の頂点に着くという側の仮説について考える.
Aがその頂点(位置を Pa としよう)に到達した時刻において,B側は最低でもどこまで進んでいなければならないのか?という位置(こちらを Pb としよう)は簡単に求めることができる.
Pa を中心として半径が距離閾値である円とB側の折れ線との交点群のうち,もっともBのスタート地点に(道のり的な意味で)近い点だ.
※ただし,例外として,Bのスタート地点が円の内側にある場合はスタート地点だ.
これで,全体の問題を2つの小問題に分割できた.
「Aのスタート地点から Pa までの経路」 vs 「Bのスタート地点から Pb までの経路」
「Pa からAのゴールまでの経路」 vs 「Pb からBのゴールまでの経路」
の2つだ.
この話を図で示す.
青い折れ線がA側,赤いのがB側.スタート地点を丸印で示している.
そしたら,これら2つの問題をまた同じように扱っていけばいい.
もちろん,どこまで問題を分割すればいいのか? は,「小問題が解ける状態になるまで」である.
例えば「線分 vs 線分」な状態にまでなれば true か false か判断できるハズ.
path1(0-1) to path2(1): 10.071189382978861
path1(0-1) to path2(2): 22.005681084665387
path2(1-2) to path1(1): 9.391952027485976
path2(1-2) to path1(2): 103.92906234542868
path1(1-2) to path2(2): 6.855201648737006
path1(1-2) to path2(3): 13.600062035934494
path1(1-2) to path2(4): 20.22992832414391
path2(3-4) to path1(2): 8.990618659910627
path2(3-4) to path1(3): 119.21094748386156
path1(2-3) to path2(4): 12.394747436271063
path1(2-3) to path2(5): 9.154387740744644
path1(2-3) to path2(6): 124.67658160215976
path2(5-6) to path1(3): 9.394147114027968
path2(5-6) to path1(4): 17.414074767267998
path1(3-4) to path2(6): 14.900792007655637
path1(3-4) to path2(7): 59.20304046246274
path2(6-7) to path1(4): 5.444186169462745
path2(6-7) to path1(5): 60.18513105410671
path1(4-5) to path2(7): 9.41091006968288
path1(4-5) to path2(8): 8.878657156773821
same!!!