android - 使用六边形图像随机生成图案

标签 android algorithm random hexagonal-tiles

好的,我有这些图片:

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

基本上我想要做的是创建一个由大约 5 到 12 个六边形组成的“马赛克”,其中大部分大致集中在所有线的交汇处。

例如:

enter image description here enter image description here enter image description here

我知道我可能只是暴力破解它,但由于我正在为 Android 开发,我需要一种更快、更高效且处理器密集度更低的方法。

任何人都可以为我提供解决方案,甚至只是为我指明正确的方向吗?

最佳答案

我的一个随机想法是按照 Deepak 所说的定义一个类来跟踪它的六个边缘中的每一个的状态(比如,在 int[] neighbor 中,其中 neighbor[ 0] 说明顶边是否有邻居,neighbor[1] 说明右上边是否有邻居,依此类推顺时针)

然后对于屏幕上的每个六边形,通过二进制将其数组转换为整数。基于该整数,使用查找表来确定要使用的六边形图像 + 它应该如何定向/翻转,然后将该六边形对象分配给该图像。

例如,让我们在您的第一个屏幕截图中使用带有四个邻居的中央六边形。根据上述方案,它的数组将是 [1, 0, 1, 1, 0, 1]。将 neighbor[0] 设为最低有效位 (2^0),将 neighbor[5] 设为最高有效位 (2^5),我们有 [1, 0, 1, 1, 0, 1] --> 45。在查找表的某处,我们已经定义了 45 表示水平翻转的第 5 个六边形图像*,在您发布的七个基本六边形图标中。

是的,涉及到蛮力,但它是一种“更智能”的蛮力,因为您不会旋转以查看六边形是否适合。相反,它涉及一个更有效的查找表。

*如果您愿意,也可以顺时针旋转 120 度 ;)

关于android - 使用六边形图像随机生成图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17588780/

相关文章:

php - 通过android使用php更新mysql数据库

Java文本分割算法

algorithm - 除前 K 和后 K 个元素外的排序数组

android - 如何使用 Kotlin Flow 从异步回调中发出数据?

android - Butterknife View 注入(inject)

python - Python中随机数的长尾分布

javascript - 随机化数组以激活函数

c - 掷7位数以上的骰子

android - Android默认开启AccessibilityService的方法

用于计划从依赖项创建对象的算法