好的,我有这些图片:
基本上我想要做的是创建一个由大约 5 到 12 个六边形组成的“马赛克”,其中大部分大致集中在所有线的交汇处。
例如:
我知道我可能只是暴力破解它,但由于我正在为 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/