You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中创建中心含指定边长正八边形的二维网格

实现方法

直接利用中心在原点的轴对齐正八边形的几何边界做掩码判断即可,不需要额外依赖绘图库生成形状。

判断逻辑

你生成的网格中心在(0,0)坐标点,对于边长为a、边沿水平/垂直/45度方向对齐的正八边形,所有落在内部的点需要同时满足3个边界条件:

  • x方向不超出左右垂直边范围:|X| ≤ a*(1+√2)/2
  • y方向不超出上下水平边范围:|Y| ≤ a*(1+√2)/2
  • 不超出四个斜向边范围:|X| + |Y| ≤ a*(2+√2)/2
    三个条件同时成立的点属于正八边形区域,赋值1,其余点赋值0即可。

可直接运行的代码

import numpy as np

# 原有网格初始化代码
x = np.linspace(-5, 5, 1000)
y = np.linspace(-5, 5, 1000)
X, Y = np.meshgrid(x, y)

# 自定义正八边形边长,注意a最大不超过约4.14,否则形状会超出[-5,5]的网格边界
a = 2

# 计算边界阈值
s = a * (1 + np.sqrt(2)) / 2
d = a * (2 + np.sqrt(2)) / 2

# 生成0-1掩码
mask = ((np.abs(X) <= s) & 
        (np.abs(Y) <= s) & 
        (np.abs(X) + np.abs(Y) <= d)).astype(int)

补充说明

  • 最终得到的mask数组就是你需要的二维网格,正八边形填充区域值为1,其余区域值为0
  • 如果需要旋转正八边形的角度,只需要先对X、Y坐标做对应角度的旋转变换,再代入上述三个约束条件判断即可
  • 如果需要调整正八边形的位置,只需要在计算绝对值前给X、Y加上对应方向的偏移量即可

内容的提问来源于stack exchange,提问作者Mustafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:01:19