C# 链接地图上的2个点,生成的线不得穿过土地
我必须为我的学校做一个管理船只的计划。 其中一部分涉及使用地图创建旅行:用户必须单击我在地图上固定的一些点(我想使用一个面板,地图为BGimage),这些点代表端口 当我点击第二个点时,我必须在屏幕上显示一条或多条连接这两个端口的线路,但这些线路不应该穿过陆地,而应该穿过海洋 以下是一些例子: 错误 正确 那么,你能给我一些建议吗 我不想要代码,只要一些想法,如果可能的话C# 链接地图上的2个点,生成的线不得穿过土地,c#,C#,我必须为我的学校做一个管理船只的计划。 其中一部分涉及使用地图创建旅行:用户必须单击我在地图上固定的一些点(我想使用一个面板,地图为BGimage),这些点代表端口 当我点击第二个点时,我必须在屏幕上显示一条或多条连接这两个端口的线路,但这些线路不应该穿过陆地,而应该穿过海洋 以下是一些例子: 错误 正确 那么,你能给我一些建议吗 我不想要代码,只要一些想法,如果可能的话 谢谢。看看维基百科上描述的Dijkstra算法:以及关于运动规划的描述: 这样做的目的是确定你的起点和终点。然后按照算法
谢谢。看看维基百科上描述的Dijkstra算法:以及关于运动规划的描述: 这样做的目的是确定你的起点和终点。然后按照算法图示中所示的运动规划示例进行操作: 遍历到使您更接近目标像素的每个有效像素。例如,使用像素的颜色检查像素是“海”像素还是“陆”像素,因此创建运动波前以到达目标像素。 通过“访问”这些像素,您可以创建一个图形(将遍历作为节点存储为一组顶点和端点)。 一旦你“击中”目标节点,使用Dijkstra算法来寻找最短路径
希望这有帮助。这太宽泛了。你必须首先找到什么是水,什么是陆地(通过像素颜色?)。然后,您必须使用路径查找算法,例如a*来查找最快的路径。然后你们必须弄清楚若用户点击水会发生什么,或者当有人点击一个无法到达的地方时,如何处理这种情况。您的地图分辨率有限,因此您可能希望找到更精确的矢量地图来勾勒国家轮廓。首先,我必须使用基于网格的搜索:我了解它是如何工作的,但我不知道如何将其应用到我的程序中。我从未做过如此困难的事。你能帮我什么忙吗?