2次元平面上にある場合は、いいえです。可能性のあるすべての 2D 形状 (円、四角形、三角形、不規則な形状など) の障害物について、障害物を回避する最短経路を見つけるメカニズムをどのように実装しますか? そのような図を描画するための多くのグラフィカルクラスを提供するため、ビジュアル C++ を検討しています。
かなり遠くまで来ました
1) まず、A* search(A-star) を使用して、最小コストのパスを見つけます。
2) 直線パスからの変位が最も少ないパスがベスト パスと見なされます。(確かではありませんが)
3) 図形を回避するための最短経路 (たとえば、最初から) は、その点から までの直線です。
a) the farthest vertex in case of a polygon/quadrilateral
b) a point on the circumference such that the line drawn would be tangential to the circle, in case of a circle or arc
c) (not sure about irregular figures)
ここで 2) に戻ります。2 つ以上の経路間の最小変位は、これらの線からの垂線を、それぞれの側にあるオブジェクトの最も遠い点と比較することによって決定できます。(私が自分自身を理解したことを願っています)。
では、どのように直線経路に垂線を引くのでしょうか?
x1、x2、y1、y2、k、lは既知です。a,bを見つけるだけです。
直線パスの勾配 * 垂線の勾配 = -1
=> (y2-y1)/(x2-x1) * (b-l)/(1-k) = -1
hence, b = [(x1-x2)/(y2-y1) * (a-k)] + l
ピタゴラスの定理を使うことで、座標に関して他の方程式を見つけることができると想像しました。各線の長さは次の方法で求めることができます: dx = x1-x2 dy = y1-y2 dist = sqrt(dx dx + dy dy)
そして、これらの 2 つの式を解くことで、a,bの正しい値を見つけることができます。
これ以上何も考えられません。アイデアや提案はありますか?