slug
twenty
type
Post
status
Published
category
1-3D打印
date
Aug 30, 2026
summary
tags
tools
password
icon
1.设计方案:
可以。正二十面体(Regular Icosahedron)反而比正十二面体更容易,因为它的 20 个面全部都是正三角形。
下面直接给你适用于现在这个 GhPython 电池的完整版本:
- 左侧保持默认输入
x
x = 50表示棱长 50 mm
- 右侧使用默认输出
a
- 生成实心正二十面体
- 自动让其中一个正三角形面贴在 XY 平面
- 整个模型位于 z≥0z\ge 0,方便 3D 打印
1. Grasshopper 连接
保持:
不要修改
x 和 a 的名字。2. Python 完整代码
把 Python 电池原来的代码全部删除,粘贴:
3. 这段代码的基本数学原理
正二十面体有:
12 个顶点\boxed{12\text{ 个顶点}}
30 条棱\boxed{30\text{ 条棱}}
20 个正三角形面\boxed{20\text{ 个正三角形面}}
它同样与黄金比例
ϕ=1+52\phi=\frac{1+\sqrt5}{2}
密切相关。
标准的 12 个顶点可以写成:
(0,±1,±ϕ)(0,\pm1,\pm\phi)
(±1,±ϕ,0)(\pm1,\pm\phi,0)
(±ϕ,0,±1)(\pm\phi,0,\pm1)
一共:
4+4+4=124+4+4=12
个顶点。
4. 为什么这里缩放更简单?
这组标准坐标的棱长刚好是:
2

因此代码非常简单:
当:
就是:
s=25s=25
5. 它是怎样找到 20 个面的?
这一部分比正十二面体还容易理解。
程序从 12 个点中任取三个:
然后计算三条边:
如果三条边全部等于:
5050
即:
那么这三个点必然构成一个正三角形面。
因此:
这一点特别适合拿来讲组合数学和三维几何。
6. 最后为什么要旋转?
原始数学坐标生成的正二十面体并没有保证某个面水平。
所以代码自动:
最终应该像:
所以它可以直接作为打印底面。
7. 你现在就有两个非常好的模型
正十二面体
正二十面体
注意这里有一个非常漂亮的关系:
正十二面体和正二十面体互为对偶多面体\boxed{\text{正十二面体和正二十面体互为对偶多面体}}
十二面体:
V=20,E=30,F=12V=20,\quad E=30,\quad F=12
二十面体:
V=12,E=30,F=20V=12,\quad E=30,\quad F=20
也就是:
V↔F\boxed{V\leftrightarrow F}
而边数 E=30E=30 不变。
这两个模型放在一起做 Grasshopper + 数学教学其实非常合适。
2.电池组合:

3.效果图:

- 作者:现代数学启蒙
- 链接:https://www.math1234567.com/article/twenty
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章












