gpt4 book ai didi

html - 如何在 SVG 文件中查找相邻路径?

转载 作者:可可西里 更新时间:2023-11-01 13:07:06 24 4
gpt4 key购买 nike

我正在尝试制作一个可点击的 map 游戏(如 Risk),其中我有许多与此类似的 svg 路径:
Example SVG Map

所以当玩家1点击玩家2的领土来攻击它时,点击的领土应该与玩家1的领土有边界,否则攻击无效。

我想将所有路径及其相邻路径存储在一个多维数组中,如下所示:

path[0] -> path[0][0] path[0][1] path[0][2]
path[1] -> path[1][0] path[1][1]

但是由于我的 map 很大,我这样做效率真的很低。关于如何解决这个问题有什么建议吗?

最佳答案

创建国家表

包含邻接信息,每个国家通常最多有 7 个邻国,除非你有梵蒂冈、卢森堡等小国......所以对于统一的 map 分割,你可以使用静态数量的邻国。像这样:

  • int map[countries_max][neighbors_max];

统一 map 划分

获取邻接信息的方式有很多。对于均匀划分的 map ,您可以计算通常靠近国家中心的边界路径的平均点。取每个国家点并找到离它最近的国家(点)。如果距离更小,则阈值存储邻居列表中的国家/地区索引。阈值可以围绕国家大小(对于矩形划分,每个轴需要 2 个阈值)。

通用 map 划分

您需要检查国家边界路径的任何部分是否靠近/平行于其他国家边界路径的任何部分。如果是,则将国家索引存储在邻居列表中。这只有在您有边界路径时才可行。

通用 map 划分(无边界路径)

如果您的 map 是栅格或矢量 map ,但不是每个国家/地区的闭合多边形/路径形式(例如,您可以改为使用分割路径),则上述方法不可用。当你攻击时,你知道攻击的开始和结束位置,所以从开始到结束投线(DDA 或 Bresenham)并计算你越过多少条边界线(计算颜色边缘)。如果计数为 1,则移动有效。如果您多次跨越同一边界进行攻击,这将产生误报。

关于html - 如何在 SVG 文件中查找相邻路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31385297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com