正二十面体(正20面体、Icosahedron)の頂点情報

3Dグラフィックをやるときに、あると何かと便利な正20面体だが、Y軸に方向に立てた時の座標を表す式がなかなか見つからなかったので求めた。

単位球に内接する正二十面体(正20面体,Icosahedron)の頂点座標
a = 1 / sqrt(5) = 0.447213595
b = (1 - a) / 2 = 0.276393202
c = (1 + a) / 2 = 0.723606797
d = sqrt(b) = 0.525731112
e = sqrt(c) = 0.850650808
とすると、12個の頂点は以下の通りの座標となる。
(0,1,0)(0,a,2a)(e,a,b)(d,a,-c)(-d,a,-c)(-e,a,b)(d,-a,c)(e,-a,-b)(0,-a,-2a)(-e,-a,-b)(-d,-a,c)(0,-1,0)

また、以下のような他の座標の取り方もある。
 (±1/2,±(1+sqrt(5))/4,0)(0,±1/2,±(1+sqrt(5))/4) (±(1+sqrt(5))/4,0,±1/2) (複号任意)

 

余談

正20面体など一体何に使うのかといえば、球をポリゴンで表現するときに使用する。もちろん正20面体では、荒すぎるので、各三角形のそれぞれの辺の中点を求め、4分割し、各頂点を正規化する。そして十分な精度がでるまでこの操作を繰り返し、球を作成する。

メルカトル図法のように水平、垂直で分割する簡単な方法もあるが、綺麗な球を作るためのポリゴン数は増加するし、赤道と極で大きく精度が異なるのは見栄えが悪い。