Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 链接地图上的2个点,生成的线不得穿过土地_C# - Fatal编程技术网

C# 链接地图上的2个点,生成的线不得穿过土地

C# 链接地图上的2个点,生成的线不得穿过土地,c#,C#,我必须为我的学校做一个管理船只的计划。 其中一部分涉及使用地图创建旅行:用户必须单击我在地图上固定的一些点(我想使用一个面板,地图为BGimage),这些点代表端口 当我点击第二个点时,我必须在屏幕上显示一条或多条连接这两个端口的线路,但这些线路不应该穿过陆地,而应该穿过海洋 以下是一些例子: 错误 正确 那么,你能给我一些建议吗 我不想要代码,只要一些想法,如果可能的话 谢谢。看看维基百科上描述的Dijkstra算法:以及关于运动规划的描述: 这样做的目的是确定你的起点和终点。然后按照算法

我必须为我的学校做一个管理船只的计划。 其中一部分涉及使用地图创建旅行:用户必须单击我在地图上固定的一些点(我想使用一个面板,地图为BGimage),这些点代表端口

当我点击第二个点时,我必须在屏幕上显示一条或多条连接这两个端口的线路,但这些线路不应该穿过陆地,而应该穿过海洋

以下是一些例子:

错误

正确

那么,你能给我一些建议吗

我不想要代码,只要一些想法,如果可能的话


谢谢。

看看维基百科上描述的Dijkstra算法:以及关于运动规划的描述:

这样做的目的是确定你的起点和终点。然后按照算法图示中所示的运动规划示例进行操作: 遍历到使您更接近目标像素的每个有效像素。例如,使用像素的颜色检查像素是“海”像素还是“陆”像素,因此创建运动波前以到达目标像素。 通过“访问”这些像素,您可以创建一个图形(将遍历作为节点存储为一组顶点和端点)。 一旦你“击中”目标节点,使用Dijkstra算法来寻找最短路径


希望这有帮助。

这太宽泛了。你必须首先找到什么是水,什么是陆地(通过像素颜色?)。然后,您必须使用路径查找算法,例如a*来查找最快的路径。然后你们必须弄清楚若用户点击水会发生什么,或者当有人点击一个无法到达的地方时,如何处理这种情况。您的地图分辨率有限,因此您可能希望找到更精确的矢量地图来勾勒国家轮廓。首先,我必须使用基于网格的搜索:我了解它是如何工作的,但我不知道如何将其应用到我的程序中。我从未做过如此困难的事。你能帮我什么忙吗?