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

3D离散采样xy平面中层从节点254出发的螺旋遍历迭代规则求解

3D网格中间层螺旋遍历实现方案

前提参数说明

  • Y轴方向节点数:Y_SIZE = 13
  • Z轴方向节点数:Z_SIZE = 3
  • 中间层中心节点全局索引:CENTER_IDX = 254

核心实现思路

避开直接计算全局索引的复杂偏移,先将节点映射为以中心为原点的二维相对坐标(x_offset, y_offset),完成相对坐标的螺旋遍历后再统一转换为全局索引,逻辑通用可适配任意尺寸网格。

1. 相对坐标与全局索引转换公式

全局索引 = CENTER_IDX + x_offset * Z_SIZE + y_offset * Z_SIZE * Y_SIZE

可直接验证你给出的第一圈节点:

  • 相对坐标(0,-1):代入得254 + 0*3 + (-1)*3*13 = 215,对应第一圈第1个节点
  • 相对坐标(-1,-1):代入得254 + (-1)*3 + (-1)*3*13 = 212,对应第一圈第2个节点
    所有第一圈节点完全匹配公式。

2. 螺旋遍历迭代规则

你要求第k圈节点间隔k-1个(即偏移量为k的整数倍),对应相对坐标生成规则为:

  1. 圈数k从1开始递增,直到触发边界条件停止
  2. 每圈固定生成8个符合max(|x_offset|, |y_offset|) = k的坐标点,按顺时针(可按需调整为逆时针)顺序生成:
    (0, -k) → (-k, -k) → (-k, 0) → (-k, k) → (0, k) → (k, k) → (k, 0) → (k, -k)
    
  3. 每生成一个坐标就代入转换公式得到全局索引,校验索引是否在网格合法范围内,合法则加入遍历结果,全圈无合法节点则终止遍历。

可直接复用的伪代码

# 基础参数配置
Y_SIZE = 13
Z_SIZE = 3
CENTER_IDX = 254
X_SIZE = 13 # 替换为你实际的X轴节点数
MAX_LEGAL_IDX = X_SIZE * Y_SIZE * Z_SIZE - 1

traversal_list = [CENTER_IDX] # 先加入中心起点
k = 1
while True:
    # 生成当前圈的8个相对坐标点
    current_circle_points = [
        (0, -k), (-k, -k), (-k, 0), (-k, k),
        (0, k), (k, k), (k, 0), (k, -k)
    ]
    valid_num = 0
    for (x, y) in current_circle_points:
        current_idx = CENTER_IDX + x * Z_SIZE + y * Z_SIZE * Y_SIZE
        # 校验索引合法性
        if 0 <= current_idx <= MAX_LEGAL_IDX:
            traversal_list.append(current_idx)
            valid_num += 1
    # 无合法节点则终止遍历
    if valid_num == 0:
        break
    k += 1

规则适配说明

  • 若需要调整螺旋方向,只需修改current_circle_points的坐标顺序即可
  • 若需要调整圈间间隔,只需修改k的递增步长,比如步长为2就写k += 2,完全可自定义
  • 不需要手动计算每圈的偏移系数,逻辑统一可维护性高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:09:00