#AEAI03008. 局部点云体素占用统计

局部点云体素占用统计

题目描述

机械臂在桌面附近规划动作时,需要知道局部空间里哪些体素被点云占用。具身智能部把点云裁剪、体素索引和计数合成了一个小任务。

给定 N 个三维点、体素网格原点 (ox, oy, oz)、体素边长 s 和网格尺寸 Nx, Ny, Nz。只统计落在网格范围内的点,输出所有被占用体素的索引和点数。

输入格式

  • 第一行输入整数 N
  • 随后 N 行,每行输入一个点 x y z
  • 接着输入四个浮点数 ox oy oz s
  • 最后一行输入三个整数 Nx Ny Nz

输出格式

  • 第一行输出被占用体素数 K
  • 随后 K 行,按 (i,j,k) 字典序输出 i j k count

判定规则

使用标准输出比较。

  • 网格空间范围为 [ox, ox+Nx*s) x [oy, oy+Ny*s) x [oz, oz+Nz*s),下闭上开。
  • 落在范围外的点忽略。
  • 体素索引使用 floor((coord-origin)/s) 计算。
  • 同一体素内的点数累加。

样例

输入样例 1

5
0.1 0.1 0.1
0.9 0.9 0.9
1.0 0.0 0.0
2.0 0.0 0.0
-0.1 0 0
0 0 0 1
2 2 2

输出样例 1

2
0 0 0 2
1 0 0 1

样例解释 1

前两个点落入体素 (0,0,0),第三个点落入 (1,0,0)x=2.0 位于上边界,负坐标点在范围外。

输入样例 2

2
5 5 5
-1 -1 -1
0 0 0 1
2 2 2

输出样例 2

0

样例解释 2

两个点都不在网格范围内,因此没有被占用体素。