正二十面体的构造和黄金比例的关系

Computer Graphics, Animaition, OpenGL, DirectX, OpenCL
头像
vicyang
版主
版主
帖子: 47
注册时间: 2016年07月21日 20:35
拥有现金: 锁定
储蓄: 锁定
Has thanked: 7 times
联系:

正二十面体的构造和黄金比例的关系

帖子 #1 vicyang » 2016年11月17日 20:22

最开始在OpenGL红皮书看到正二十面体的顶点取值:
Code: [全选] [展开/收缩] [Download] (Untitled.cpp)
  1. #define X .525731112119133606
  2. #define Z .850650808352039932
  3.  
  4. static GLfloat vdata[12][3] = {    
  5.    {-X, 0.0, Z}, {X, 0.0, Z}, {-X, 0.0, -Z}, {X, 0.0, -Z},    
  6.    {0.0, Z, X}, {0.0, Z, -X}, {0.0, -Z, X}, {0.0, -Z, -X},    
  7.    {Z, X, 0.0}, {-Z, X, 0.0}, {Z, -X, 0.0}, {-Z, -X, 0.0}
  8. };

至于取值的由来,一笔带过:
The strange numbers X and Z are chosen so that the distance from the origin to any of the vertices of the
icosahedron is 1.0 (#1

可能是因为智商欠费吧,我当时的表情:
图片

后来去翻了wikipedia - https://en.wikipedia.org/wiki/Icosahedron
原来正二十面体的轮廓,是由三个长宽比例一定的相同矩形两两正交,再取其顶点连结而成。而这矩形的边长比即为黄金比。
图片

有此图为参考,#1 的描述似乎不够严谨,比如我从半径为1的圆上面任意取 x, y 作为长和宽,原点到每个顶点的距离也一
样可以是1.0(单位长度):
图片

那么和黄金比例有什么关系呢?下面就证明一下
图片

图片

a 和 b 分别表示从原点到矩形较长的边和较短边的距离,也就是三个矩形的长和宽都为 2*a, 2*b,范围从 -a 到 a 、-b 到 b;
为了方便,限定 a 为 1,b 为变量,观察 b 从 0.0 开始递增时图像的变化。图中仅标记出部分顶点用于描述。

注意诸如 -a, -b, V 、V, b, a 这样的三角形区域有8个,始终为正三角形。而 V, -b, b 这样的三角形有12个,
它们至少为等腰三角形,等边的长度 L 和相邻正三角形的边长一致。


从 V 作 垂线(长为a) 到 z 平面(橙色矩形),从垂点连接到 -b,长度为 sqrt[b² + (a-b)²],
可间接求得 L = sqrt [ b² + (a-b)² + a² ]

要让底边等于两侧边,即令 2*b 等于L: (2b)² = b² + (a-b)² + a² ,化得: a² = ab + b²,

两边 / b :
    a²/b = a + b
两边 / a :
    a/b = (a+b)/a
同样:
    (a-b)/b = b/a

这个等式,即黄金比例的性质。
参考: http://code-by.org/viewtopic.php?f=49&t=204

回到 “计算机图形”

在线用户

用户浏览此论坛: 没有注册用户 和 1 访客