📖 四、教学过程
1. 情境导入(5分钟)——“从一条街到一座城”
展示一维数字城市的图片:“上节课我们让一行数字变成了一条街。但真正的城市是二维的——有街区、有网格,比如纽约曼哈顿。”
展示曼哈顿航拍图:“如果我们把上节课的一排楼复制很多排,会变成什么?一个建筑矩阵。”
提问:“如果我们要做一个 5×5 的网格城市,每个格子里有一座高度随机的楼,需要多少个高度值?这些高度值从哪来?”
引出本课主题:用 Square Grid 生成网格点,用 Random 生成随机高度,构建一座随机城市。
2. 数学连接(3分钟)——“网格与随机数”
教师在黑板上画 3×4 的网格,共12个交点。“每一个交点就是一座楼的位置。我们需要12个随机高度值。”
引入 Random 电池:需要指定范围(最小高度、最大高度)和数量(等于网格点数)。
🔑 关键公式:网格点数 = X方向数量 × Y方向数量 = 随机数个数
“上节课我们用等差数列控制高度,规律可预测;今天用随机数,每座楼高度不确定——这就是‘随机城市’的魅力。”
3. Grasshopper 实操(24分钟)
1 生成二维网格点(6分钟)方法A(推荐入门):使用 Square Grid 电池。
- 拖出 Square Grid ——菜单路径:Vector → Grid → Square Grid
- P 端:连默认的 XY Plane(原点为基准)
- Sx(X方向间距):连滑块,设为 1.2
- Sy(Y方向间距):连滑块,设为 1.2
- Ex(X方向数量):连整数滑块,设为 8
- Ey(Y方向数量):连整数滑块,设为 8
输出端 P 即网格中心点列表(共64个点)。悬停查看数据数量。
方法B(进阶/复习):用两个 Series + Move 组合手动构建二维阵列(适合想深入理解数据结构的班级)。
📌 教学建议:若学生基础较好,可展示方法B并讲解 Graft 操作,否则用 Square Grid 快速获得点阵即可。
🔲
步骤1截图:Square Grid电池生成网格点
显示Square Grid电池、四个滑块,以及Rhino视口中的点阵
img_step1_squaregrid.jpg
2 在每个网格点放置地基(6分钟)我们需要在每个网格点放置一个矩形(地基)。
- 拖出 Rectangle(Curve → Primitive → Rectangle),设置 X=0.9, Y=0.9,P端连XY Plane。
- 拖出 Move(Transform → Euclidean → Move)。
- G 端:连 Rectangle 输出的 R。
- T 端:需要把网格点变成平移向量。因为点已经在XY平面上,可直接连到 T 端吗?注意:Move的T端需要向量,但点坐标本身可以作为向量(从原点指向该点)。因此,直接将 Square Grid 的 P 输出连到 Move 的 T 端即可!
观察 Rhino:每个网格点都出现了一个正方形地基。
⚡ 小技巧:如果矩形不在网格点上,检查 Rectangle 的 P 端是否在原点上,并确保 Move 的 T 端接收的是点坐标列表。
🧱
步骤2截图:Move将矩形阵列到网格点
显示Rectangle、Move电池,Square Grid的P端连到Move的T端
img_step2_move_grid.jpg
3 生成随机高度数列(5分钟)我们需要与网格点数量相同的随机高度值。
- 拖出 Random 电池 ——菜单路径:Sets → Sequence → Random
- R 端(Range):连 Construct Domain(Math → Domain → Construct Domain),设置最小高度=0.5,最大高度=8.0(可通过滑块调节)。
- N 端(Number):需要填入随机数的个数。这个数量必须等于网格点总数!
如何获得网格点总数?
- 拖出 Multiplication,将 X方向数量滑块(Ex)和 Y方向数量滑块(Ey)相乘,结果连到 Random 的 N 端。
- 或者使用 List Length 电池(Sets → List → List Length)连接网格点列表,输出长度连到 N 端。
悬停 Random 输出端,确认输出64个随机小数(在0.5~8之间)。
🎲
步骤3截图:Random电池生成随机高度列表
显示Random电池、Construct Domain、Multiplication(或List Length)连线
img_step3_random.jpg
4 随机拉伸——数字变矩阵城市(5分钟)- 拖出 Extrude(Surface → Freeform → Extrude)。
- B 端:连 Move 输出的平移后矩形(G端)。
- D 端:连 Unit Z(竖直向上)。
- T 端:连接 Random 输出的随机高度列表!
观察 Rhino:64个方柱高低错落,形成一片随机建筑森林!🎉
📌 强调:再次提醒学生,Random输出列表的长度与网格点数严格一致,这是数据配对成功的关键。
🏗️
⭐ 步骤4截图:Extrude连接随机高度——关键连线!
重点显示Extrude的T端连接Random输出,以及Rhino视口中的随机方块矩阵
img_step4_extrude_random.jpg
5 美化与动态观察(2分钟)- 在Rhino中给所有建筑赋予一个半透明玻璃材质或渐变色。
- 旋转视图,从不同角度欣赏你的随机城市。
- 提示:右键点击 Random 电池,选择“Recompute”可重新生成一组随机数,城市立刻变化!