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

如何按中心相交120°平面的区域拆分3D矩阵?

3D矩阵按120°相交平面拆分方案

核心思路

以矩阵中心为原点建立局部坐标系,计算每个元素索引对应的空间向量与基准轴的方位角,根据方位角所在的120°区间,将元素分配到对应的子矩阵中。

具体实现步骤

1. 确定矩阵中心坐标

假设3D矩阵形状为 (dim_x, dim_y, dim_z),可选取整数索引中心(取中心附近的整数点):

# 示例:获取矩阵中心的整数索引
dim_x, dim_y, dim_z = matrix.shape
center = (dim_x//2, dim_y//2, dim_z//2)

若要使用几何中心(非整数),可替换为 (dim_x/2 - 0.5, dim_y/2 - 0.5, dim_z/2 - 0.5),对应矩阵元素索引的中点位置。

2. 计算元素相对坐标与方位角

遍历每个元素的索引 (x, y, z),先计算相对于中心的偏移向量 (dx, dy, dz) = (x - center_x, y - center_y, z - center_z),再计算该向量在XY平面投影与X轴的方位角:

import math

dx = x - center[0]
dy = y - center[1]
dz = z - center[2]

# 计算方位角,转换为0~2π范围
theta = math.atan2(dy, dx)
if theta < 0:
    theta += 2 * math.pi

3. 按120°区间划分区域

将0~2π范围三等分,每个区间对应一个子矩阵:

  • 区域1:0 ≤ theta < 2π/3(0°~120°)
  • 区域2:2π/3 ≤ theta < 4π/3(120°~240°)
  • 区域3:4π/3 ≤ theta < 2π(240°~360°)

遍历所有元素,根据方位角区间收集对应索引,再提取子矩阵(以numpy为例):

# 初始化三个区域的索引列表
region1_indices = []
region2_indices = []
region3_indices = []

for x in range(dim_x):
    for y in range(dim_y):
        for z in range(dim_z):
            dx = x - center[0]
            dy = y - center[1]
            dz = z - center[2]
            # 中心元素(偏移为0)可自行分配到任意区域
            if dx == 0 and dy == 0 and dz == 0:
                region1_indices.append((x,y,z))
                continue
            theta = math.atan2(dy, dx)
            if theta < 0:
                theta += 2 * math.pi
            if theta < 2 * math.pi / 3:
                region1_indices.append((x,y,z))
            elif theta < 4 * math.pi / 3:
                region2_indices.append((x,y,z))
            else:
                region3_indices.append((x,y,z))

# 提取子矩阵
import numpy as np
submatrix1 = matrix[tuple(zip(*region1_indices))]
submatrix2 = matrix[tuple(zip(*region2_indices))]
submatrix3 = matrix[tuple(zip(*region3_indices))]
# 若需要规整形状,可根据实际需求reshape或用掩码标记

4. 调整平面方向(可选)

如果需要相交平面沿YZ或XZ平面划分,只需修改方位角的计算逻辑,比如计算向量在YZ平面投影与Y轴的夹角即可。

注意事项

  • 中心元素可根据需求分配到任意子矩阵,或单独处理。
  • 子矩阵形状可能不规则,若需要规整结构,可使用掩码矩阵标记区域,或填充空值补全形状。
  • 矩阵维度为偶数时,中心可选择相邻两个索引中的任意一个,不影响整体划分逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:10:23