问题标签 [hexagonal-tiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
130 浏览

hexagonal-tiles - 六角板数据表示

我现在说实话,承认这是一个学校项目。我们应该为一个游戏设计一个求解器(我不会详细介绍,这不是我的帖子的目的),它涉及一个六角板,比如这个。我的问题是:我不知道如何将此板表示为数据。我们为此使用了一种函数式语言(这里不会详细介绍),而且我在函数式编程方面不太擅长。如果有人对我如何将六边形游戏板表示为函数式编程范式中的数据有任何提示,那就太好了!

我知道这篇文章可能非常模糊......我只是停留在数据表示上,我相信一旦我对如何表示有了某种想法,我就能在这个求解器中取得一些进展此板作为数据。

0 投票
2 回答
851 浏览

algorithm - 生成卡坦数的定居者?

我正在尝试生成一个 Settlers of Catan 游戏板,并试图创建一个有效的十六进制数字实现。

目标是从 2-12 随机生成一组数字(只有一个 2 和 12 的实例,以及介于两者之间的所有数字的两个实例),确保值 6 和 8 它们不是六边形 (?) 相邻另一个。6 和 8 很特别,因为它们是您最有可能掷出的数字,因此游戏不希望它们彼此相邻,因为玩家获得的此类资源不成比例地更高。7 表示您必须丢弃资源。

预期结果:http: //imgur.com/Ng7Siy8

现在我有一个非常缓慢的蛮力实现,我希望对其进行优化,但我不确定如何。实现是在 VBA 中,它限制了我可以使用的数据结构。

在伪代码中,我正在做这样的事情:

它非常手动并且受随机生成器功能的影响,这意味着它可以是从非常短到非常长的任何地方(超过 19 个十六进制数)。

注意:如何放置我的号码似乎很重要。我从游戏板的外部开始(请参阅此处http://imgur.com/Ng7Siy8),位于带有数字 6 的灰色六角形上,然后逆时针围绕板向内移动。这意味着我的下一个六角形是 2 个浅绿色,4 个浅橙色......继续到 9 个深绿色,然后向内变成 4 个浅橙色。

这种模式限制了我需要进行的比较次数。

0 投票
2 回答
6374 浏览

python - 使用 Python 在六边形网格中显示数据

我正在寻找的是允许我在网格中显示六边形列表的方法或类。理想情况下,我将能够使用某种形式的设置方法来更改各个六边形的颜色/阴影/边框。

使用@amitp指南中概述的轴向坐标系存储六边形。但我可以轻松地将它们的中心输出为 xy 坐标。

我觉得可能在hexbinRegularPolyCollection的某个地方隐藏了一个解决方案。但前者是一种直方图方法,而后者由于 DPI 缩放而显得过于复杂。

那么有人知道提供六边形网格的库吗?它不必在 matplotlib 中。我也很高兴使用 ASCII 艺术或切换到 R。

0 投票
2 回答
3618 浏览

python - 计算六边形网格坐标的更快方法

我正在使用以下过程为给定范围(左下->右上)的方形网格计算给定半径的六边形多边形坐标:

这对于数百万的多边形效果很好,但对于大型网格来说很快就会减慢(并占用大量内存)。我想知道是否有一种方法可以优化这一点,可能是通过将根据范围计算的顶点的 numpy 数组压缩在一起,并完全删除循环——然而,我的几何结构还不够好,所以有什么建议欢迎改进。

0 投票
0 回答
258 浏览

matplotlib - matplotlib hexbin 间隙去除

我有三个长度为 35 的数据列表:X、Y 和 Z。我愿意

产生以下情节。如何摆脱白人?

在此处输入图像描述

0 投票
1 回答
9165 浏览

python - 在 Python 中生成、填充和绘制六边形晶格

我想修改我在方格上运行的 Python 脚本(它是基于代理的生物学模型),以在六边形宇宙中工作。

这就是我在方形模型中创建和初始化二维矩阵的方式:基本上,N 是晶格的大小,R 给出了我需要在算法开始时更改值的矩阵部分的半径:

然后我让矩阵根据某些规则演变,最后通过创建一个 pickle 文件进行打印:

现在,我想做完全相同的事情,但在六边形格子上。我读了这个有趣的 StackOverflow 问题,它阐明了如何用三个坐标表示六边形晶格上的位置,但是据我所知,有一些事情仍然模糊不清,即

(a)我应该如何处理Python中的三个轴,考虑到我想要的不等于3D矩阵,由于坐标的限制,以及

(b) 如何绘制它?

至于(a),这就是我想要做的:

在我看来,像这样初始化一个 NxNxN 矩阵,然后根据坐标上的约束找到一种方法来打印它的子集,这似乎很令人费解。我正在寻找一种更简单的方法,更重要的是,了解如何绘制由算法产生的六边形晶格(对此没有任何线索,我暂时没有尝试过任何东西)。

0 投票
1 回答
611 浏览

algorithm - 用最小距离 (3) 为重复出现的颜色着色六边形图块的算法

我需要创建一个十六进制图,最多使用 19 种颜色,其中每种颜色必须保持至少 3 个图块的距离。但是,我不需要使用所有 19 种颜色。如果存在用少于 19 种颜色解决此距离约束的算法,那就完全没问题了。

Beckman-Quarles 定理 [1] 看起来相关,并且显示了一个 7 色瓷砖图,其中相同颜色的瓷砖彼此保持 2 的距离。

但是我很难找到一个可以理解的描述,甚至是构建距离为 3 的六角平铺地图的实现。

[1] http://de.wikipedia.org/wiki/Satz_von_Beckman_und_Quarles

0 投票
1 回答
1135 浏览

android - 适用于 Android 的六角板 - 怎么做?

我又一次开始尝试 Android 的东西。我正在尝试创建一个使用六角板的小型简单游戏。我知道六边形计算背后的数学,但问题是如何在 Android 中实际实现这样的板?

起初我想使用网格视图,其中每隔一行移动半步,然后将这些方形网格用作我的板,并在方形框上绘制一个六边形。但是,常规的网格视图似乎不允许我这样做。

位移的方格

所以我想也许我需要创建一个带有六边形网格的自定义视图或一个带有方形位移网格的自定义视图。

我不熟悉 Android 自定义视图。我从Vogella 的教程中阅读了有关自定义视图的教程,但我仍然非常不确定,是否可以创建六边形网格作为自定义视图。

那么关于如何在 android 上创建和实现六边形游戏板的任何想法和帮助?

0 投票
0 回答
567 浏览

algorithm - 有没有更快的方法来确定视线内的六角形?

所以,我有一个 2d 十六进制网格,其中每个十六进制是墙或路径,我想实现视线(在“如果你可以画一个十六进制从另一个十六进制可见的意义上说从开始六边形的任何部分到结束六边形的任何部分的直线,不接触任何墙壁六边形(六边形的边缘和顶点被视为接触该六边形)“)。

从起始十六进制中的单个点进行射线投射是缓慢且不准确的。我考虑过从起始十六进制的每个顶点进行光线投射,但这更慢,而且在某些情况下它仍然不起作用(主要是在较大的网格上)

应该有一个更好的算法来做到这一点。我的意思是,它本质上“只是”有限制的洪水填充。有什么建议么?

0 投票
1 回答
6485 浏览

matlab - 表示移动通信系统中使用的蜂窝网络的六边形网格

我对 Matlab 比较陌生,我想生成一个六边形网格,它代表一个蜂窝网络,其中每个六边形都有特定的行为。

我的问题是如何从方形网格变为六角网格(传输矩阵)?这就是我到目前为止所拥有的。