当前位置: 首页 > 知识库问答 >
问题:

如何以六边形网格的形状绘制(x,y,z)坐标?

赫连冠玉
2023-03-14
coord = [[0,0,0],[0,1,-1],[-1,1,0],[-1,0,1],[0,-1,1],[1,-1,0],[1,0,-1]]
colors = [["Green"],["Blue"],["Green"],["Green"],["Red"],["Green"],["Green"]]

共有1个答案

史懿轩
2023-03-14
y_cartesian = (2 / 3) * sin(60) * (y_hex - z_hex)
import matplotlib.pyplot as plt
from matplotlib.patches import RegularPolygon
import numpy as np

coord = [[0,0,0],[0,1,-1],[-1,1,0],[-1,0,1],[0,-1,1],[1,-1,0],[1,0,-1]]
colors = [["Green"],["Blue"],["Green"],["Green"],["Red"],["Green"],["Green"]]
labels = [['yes'],['no'],['yes'],['no'],['yes'],['no'],['no']]

# Horizontal cartesian coords
hcoord = [c[0] for c in coord]

# Vertical cartersian coords
vcoord = [2. * np.sin(np.radians(60)) * (c[1] - c[2]) /3. for c in coord]

fig, ax = plt.subplots(1)
ax.set_aspect('equal')

# Add some coloured hexagons
for x, y, c, l in zip(hcoord, vcoord, colors, labels):
    color = c[0].lower()  # matplotlib understands lower case words for colours
    hex = RegularPolygon((x, y), numVertices=6, radius=2. / 3., 
                         orientation=np.radians(30), 
                         facecolor=color, alpha=0.2, edgecolor='k')
    ax.add_patch(hex)
    # Also add a text label
    ax.text(x, y+0.2, l[0], ha='center', va='center', size=20)

# Also add scatter points in hexagon centres
ax.scatter(hcoord, vcoord, c=[c[0].lower() for c in colors], alpha=0.5)

plt.show()
 类似资料:
  • 我似乎在绘制正确的十六进制网格时遇到了一点麻烦: 正如您所看到的,六边形只是稍微不对齐,尽管我相信我的数学是正确的(其中一些可以通过http://www.redblobgames.com/grids/hexagons/进行验证)。 我的绘制方法是从左上六边形(第一行的第一个瓷砖)开始,绘制那一行瓷砖。然后对于下一行,有一个负X偏移量和正Y偏移量等,直到它到达中间行,在中间行X偏移量增加,直到0:

  • 我试图画一系列给定坐标的矩形,这只是一个x和y值的列表。 这是我的密码: 此代码应绘制类似以下内容的形状: 相反,它画的东西没有连贯的形状。

  • 我以前做了几个实验,以找到绘制大规模六边形网格的最佳方法。 我尝试使用、绘制hexes。它在小网格中工作得很好,但如果我在一个网格中有超过1000+的单元格,fps就开始很难下降。 所以我想出了这个想法,将纹理(包含六边形网格模式)应用到一个简单的平面上。我只需要设置纹理的函数来指定垂直和水平执行多少次重复。

  • 我被一个似乎很容易解决的问题所困扰,但我似乎找不出正确的公式。 我有一个立方体坐标系中六边形群的列表。我知道群的立方体坐标,但我需要计算给定群中一个小六边形的“全局”坐标。 例如,在下图中,我知道和的坐标。如果每个组都有相同的半径(在本例中半径为1),并且它们之间不重叠(让我们把它看作是从0、0、0开始的组的平铺,从而创建一个十六进制网格),那么我如何计算GroupB中心平铺的坐标呢? 任何帮助都

  • 问题内容: 我在本教程中使用了六边形代码,并创建了一个createHex类(我应该发布代码吗?)。链接的网页已使用以下代码通过createHex中的数学运算实际绘制六边形: 我遇到的问题是Android没有包含所有必需方法的Graphics类。我在android文档上做了大约一个半小时的钓鱼,而我发现最接近的东西是Path类,但是它没有我需要的方法。我想在顶部的链接文章中使用六边形代码,但找不到等

  • 我要做的是找出在一个六角网格上,两点之间有多少个六边形。我试着在网上搜索一个公式,但我无法找到一个匹配类型的十六进制网格我正在使用。