各面が、同一の正多角形で構成される正多面体は、正四面体、正六面体、正八面体、正十二面体、正二十面体、の5種類しか存在しないそうです。今回は、5種類の正多面体を1つ1つ作ってみます。
と、振り返ってみると、「サッカーボール」を作った時に、その途中経過として正二十面体は作ったことがありましたので、残りの4種類を作ります。どうやら、その4種類は立方体から切り出すことができるようなので、その視点に立って作ってみます。
正四面体は全ての面が同じ大きさの正三角形で、面の数は4枚です。例によって作図が面倒なので、順番が逆ですがレイトレーシングした図で説明します。以下図の様に、立方体の頂点(の一部)と正四面体の頂点が重なります。
立方体の上面の対角線a−bと、下面の対角線c−dが正四面体の頂点になります。図の通り、a−bとc−dは90°ねじれた関係にあります。
a〜dの座標を求め、「ラウンドブリリアントカットを削り出す」で作った、「指定した三点を含む平面」を定義する手続きpla3pに渡して平面を4枚定義すれば終了です。「ラウンドブリリアントカットを削り出す」で解説した通り、手続きpla3pに渡す座標の順番は重要で、その順が反時計回りに見える側が平面の外側、になります。上図で言うと、a→b→c、a→c→d、a→d→b、b→d→cの順で渡す必要がありますので、注意してください。
正六面体は全ての面が正四角形(正方形)で、面の数は6枚です。正六面体は立方体その物、なので、特に解説することはありません。6枚の平面を組み合わせて作成します。
正八面体は全ての面が正三角形で、面の数は8枚です。下図の様に、立方体の各面の中心を頂点とする立体です。
正四面体の時と同様に、頂点に振った記号に従って、反時計回りに見える側が外側になるように8つの面を定義すれば終了です。
正十二面体は全ての面が正五角形で、面の数は12枚です。真横から見ると、下図の様な形をしています。
隣り合う正五角形同志のなす角度(二面角、図のθに相当)は、θ=acos (−1÷√5)だそうです。どうやって計算するのかは知りませんが……(1^^;)。θ+2×η=180°なので、ηが求まります。すると、正十二面体が外接する立方体と接する部分の長さHが求まります。H=LC×(1−tan (η))です(LCは立方体の一辺の長さの1/2)。
この図は真横、x軸正方向から見た図ですので、求めたHを使って平面を定義し、橙色に着色した四隅の三角柱部分をバッサリ切り取ります。実は、正十二面体はy軸、z軸方向から見た場合も、同じ様な図形に見える特徴を持っていますので、同様に橙色の部分を切り取ってやると、終了です。
正二十面体は全ての面が正三角形で、面の数は20枚です。このデータは、「サッカーボール」を作った時、その製作過程で作成済みです。
今回取り上げた4種類の正多面体は立方体の内部に作り上げましたが、「サッカーボール」の時は、展開図を折り曲げながら作ったので、球面に外接する正二十面体でした。おかげで、ちょっと大きさの感覚が異なっていますが、拡大・縮小(相似変換、sim命令)を使って合わせ込めば良いことですので、そのままで良いでしょう。
完成したデータと動画です。
Xi-TRACEデータ | 正四面体(regular tetrahedron) | tetrahedron.xitr |
Xi-TRACEデータ | 正六面体(regular hexahedron) | hexahedron.xitr |
Xi-TRACEデータ | 正八面体(regular octahedron) | octahedron.xitr |
Xi-TRACEデータ | 正十二面体(regular dodecahedron) | dodecahedron.xitr |
Xi-TRACEデータ | 正二十面体(regular icosahedron) | icosahedron.xitr |
Xi-TRACEデータ | 勢ぞろい(regular polyhedron) | polyhedron.xitr |
最後のpolyhedron.xitrで、5種類すべての正多面体を勢ぞろいさせて動かしてみました。
外接する立方体の大きさを一定にしてしまうと、それぞれの見た目の大きさがだいぶ違って見えるので、適切に大きさを調整してあります。