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

如何用R编程实现Shepard-Metzler图形?求分步代码指南

用R实现Shepard-Metzler蛇形立方体图形的分步指南

1. 准备工作:安装并加载3D可视化包

我们使用rgl包来创建3D图形,这是R中处理3D可视化的常用工具。先完成安装和加载:

# 仅首次运行需要安装
install.packages("rgl")
# 加载包
library(rgl)

2. 编写单个立方体的绘制函数

先定义一个可复用的函数,用于在指定3D坐标位置绘制立方体。函数接收中心坐标和边长参数:

draw_cube <- function(x, y, z, size = 1) {
  # 计算立方体的8个顶点坐标
  vertices <- expand.grid(
    x = c(x - size/2, x + size/2),
    y = c(y - size/2, y + size/2),
    z = c(z - size/2, z + size/2)
  )
  # 定义立方体的6个面(每个面由4个顶点索引组成)
  faces <- list(
    c(1, 2, 4, 3),   # 底面
    c(5, 6, 8, 7),   # 顶面
    c(1, 2, 6, 5),   # 前面
    c(3, 4, 8, 7),   # 后面
    c(1, 3, 7, 5),   # 左面
    c(2, 4, 8, 6)    # 右面
  )
  # 绘制半透明浅蓝色立方体
  shade3d(qmesh3d(vertices, faces), color = "lightblue", alpha = 0.8)
}

你可以通过修改color和alpha参数,调整立方体的颜色和透明度。

3. 规划蛇形结构的坐标

Shepard-Metzler图形的核心是10个立方体依次相邻拼接。这里设计一个平面蛇形路径,你也可以扩展到3D路径:

# 定义10个立方体的中心坐标(相邻立方体共享一个面)
cube_positions <- list(
  c(0, 0, 0),
  c(1, 0, 0),
  c(2, 0, 0),
  c(2, 1, 0),
  c(2, 2, 0),
  c(1, 2, 0),
  c(0, 2, 0),
  c(-1, 2, 0),
  c(-1, 1, 0),
  c(-1, 0, 0)
)

4. 绘制完整的蛇形图形

清空绘图窗口,设置合适视角后,循环绘制所有立方体:

# 清空3D绘图窗口
clear3d()
# 设置初始视角(可通过鼠标拖拽调整)
view3d(theta = 45, phi = 30, zoom = 0.8)
# 循环绘制每个立方体
for (pos in cube_positions) {
  draw_cube(pos[1], pos[2], pos[3])
}
# 可选:添加坐标轴和标题
axes3d()
title3d(main = "Shepard-Metzler蛇形立方体图形")

运行代码后会弹出3D交互窗口,你可以用鼠标拖拽旋转视图、滚轮缩放,从不同角度查看图形。

5. 自定义扩展(可选)

  • 个性化颜色:给每个立方体设置不同颜色,比如在循环中加入颜色向量
  • 3D蛇形:修改cube_positions的z轴坐标,让结构向立体方向延伸
  • 调整样式:将alpha设为1得到不透明立方体,或修改size调整立方体大小

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:12:31