如果在二维平面上没有。所有可能的 2d 形状(圆形、四边形、三角形、不规则形状......)的障碍物,那么你如何实现一种机制来找到障碍物周围的最短路径?我正在考虑使用 Visual C++,因为它提供了许多图形类来绘制这些图形。
我已经走了很远
1)首先我将使用 A* 搜索(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) 两条或多条路径之间的点最小位移,可以通过比较从这些线到物体各自侧面最远点的垂线来确定。(希望我已经让自己明白了)。
那么 - 我们如何绘制垂直路径?
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)
然后通过求解这两个方程,我们可以找到a,b的正确值。
我想不出任何进一步的想法或建议?