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

在R中如何无循环按Z轴从下到上切割点云?(以Bunny数据为例)

按0.01间隔沿Z轴切割点云(无for循环实现)

核心思路

利用R的向量化函数cut()对Z轴值进行分组,再通过split()直接分割点云数据,全程无需for循环。

实现代码

library("onion")
data(bunny)

# 获取Z轴的最小、最大值
z_min <- min(bunny[,3])
z_max <- max(bunny[,3])

# 生成0.01间隔的切割区间,调整端点确保覆盖所有Z值
z_breaks <- seq(floor(z_min * 100)/100, ceiling(z_max * 100)/100, by = 0.01)

# 为每个点分配对应的Z区间标签
bunny$z_slice <- cut(bunny[,3], breaks = z_breaks, include.lowest = TRUE)

# 按区间分割点云,得到所有切片数据
sliced_clouds <- split(bunny[,1:3], bunny$z_slice)

代码解释

  • seq()生成等间隔的区间边界:通过floor()和ceiling()将Z轴极值调整到0.01的整数倍,确保所有点都能被分配到对应区间
  • cut()完成分组:include.lowest = TRUE保证最小Z值不会被排除在第一个区间外
  • split()直接分割数据:返回的sliced_clouds是一个列表,每个元素对应一个Z轴切片的点云数据,无需手动迭代

查看与可视化切片

# 查看任意切片的数据,比如第5个切片
head(sliced_clouds[[5]])

# 可视化单个切片(示例:第8个切片,红色高亮)
points3d(bunny, col = "gray") # 先显示完整点云
points3d(sliced_clouds[[8]], col = "red", size = 2) # 叠加显示目标切片

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:27:18