正多面体

正多面体

正多面体とは、すべての面が正多角形であり、頂点に集まる辺の数が等しい、凸型多面体のことです。ユークリッド原論が書かれた時代(紀元前3世紀頃)には、5種類の正多面体があることが知られていたと言われています。哲学者のプラトンが著書の中で正多角形について言及していることから、「プラトンの立体」と呼ばれることもあります。

正4面体

S2AR で正多面体をクラフトしてみましょう。最も簡単な正4面体を作成します 。

図2-3-1

正4面体の頂点の座標は

P1(0, 0, -1)
P2(0.866 , 0, 0.5)
P3(-0.866, 0, 0.5)
P4(0, 1.414, 0)

になります。各頂点を線で結ぶことで、正4面体をクラフトできます。

図2-3-2

図2-3-2を参照に、正4面体のプログラムを完成させてください。ブロックの色は赤に設定しました。正4面体の辺の数は 6 なので、6つの「線ブロック」を重ねます。

1つ目の線ブロックは「P1-P2」の間に線を引きます。立体の形を確認しやすいように、座標の値は10倍にしました。2つ目以降も同様に座標の値を設定してください。

線を引く順番はこの通りではなくてもかまいません。「1-2」「1-3」「1-4」「2-3」「2-4」「3-4」の6つの組み合わせがあれば、正4面体をクラフトできます。

図2-3-2a

プログラムを実行して、正4面体が作成できることを確認しましょう。

リストを使って、プログラムを改造する

図2-3-3

Scartch には「リスト」という仕組みがあります。「リスト」とはたくさんのデータ(数値や文字列)を入れておける箱のようなものです。「変数」は一つのデータしか入れておけませんが、「リスト」はたくさんのデータが入ります。正4面体の座標値の場合は、12個の座標値(4つの点)がありますが、これをまとめて1つのリストに入れておけるのです。

図2-3-4

図2-3-4は、これから作成する正4面体(regular-tetrahedron)の座標値のリストです。リストの名前は「tetrahedron(= 4面体のこと)」です。リストに入れるデータ(数値や文字列)は、入れる順番によって番号が付けられます。リストからデータを取り出すときは、例えば「リスト [tetrahedron] の1番目」と呼び出すことで、数値「0」が取り出せるのです。

リストの作成

実際にリストを作ってみましょう。

図2-3-5

Scartch のカテゴリー「データ」→「新しいリスト」を選びます。リスト名を「tetrahedron」と入力して「OK」をクリックします。

図2-3-6

図2-3-6のブロックをスクリプトエリアに移動します。

図2-3-7

入力欄に「0」を入力して、図2-3-7のブロックをクリックします。

図2-3-8

左上のステージを見ると、図2-3-8に示すように、リスト「tetrahedron」にデータ「0」が追加できているのが確認できます。

図2-3-9

2番目のデータ「0」、3番目のデータ「-1」…を同様の方法で追加していきます。長さ「12」のリストができたら完成です。点P1は1番目から3番目のデータで表します。P2, P3, P4 も同様であることを確認しておきましょう。

図2-3-10

もう一つ、リストを作成します。リスト名は「tetrahedron_line」で、6本の辺の両端の点(12個)をデータとして入れていきます。1本目の「Line1」の両端の点は「P1-P2」ですからデータ「1」「2」を追加します。「Line2」の両端の点は「P1-P3」ですからデータ「1」「3」を追加します。以下同様に「Line3」「Line4」「Line5」「Line6」の両端の点を追加していきます。

以上で、リスト作りは終了です。次はリストからデータを取り出すプログラムを考えていきましょう。

リストからデータを取り出す

1本目の線を引くプログラムを作成します。準備として、変数を11個作成しておきます。

x0, y0, z0(多面体を作り始めるときの基準点を表す)
x1, y1, z1(線ブロックの1点目を表す)
x2, y2, z2(線ブロックの2点目を表す)
times(倍率。作成する多面体の大きさを調整する)
i(カウンター変数)

図2-3-11

リスト「tetrahedron_line」より「1本目の線」の両端の点を読み込みます。図2-3-11に示すように、Line1 の両端の点はP「1」、P「2」です。

図2-3-12

図2-3-12は、「1本目の線(i = 0 のとき)」の両端の点を読み取るプログラムです。

カウンター変数「i = 0」の時、リスト「tetarhedron_line」の「i + 1 = 1」番目のデータは「1」です(P1 を表す)。「i + 2 = 2」番目のデータは「2」です(P2 を表す)。

次にリスト「tetrahedron」から「P1」「P2」の座標値を読み取ってみましょう。

図2-3-13

リスト「tetrahedron」から「1本目の線」の両端の座標値を読み込みます。図2-3-13に示すように、P1から「1番目, 2番目, 3番目」、P2から「4番目, 5番目, 6番目」を座標値として読み込めばよいことがわかります。

図2-3-14

図2-3-14は、「1本目の線(i = 0 のとき)」の両端の座標値を読み取るプログラムです。

P1 の x座標(x1)は、リストの(3 x 1 – 2)番目の数値「0」です。
P1 の y座標(y1)は、リストの(3 x 1 – 1)番目の数値「0」です。
P1 の z座標(z1)は、リストの(3 x 1)番目の数値「-1」です。
P2 の x座標(x2)は、リストの(3 x 2 – 2)番目の数値「0.866」です。
P2 の y座標(y2)は、リストの(3 x 2 – 1)番目の数値「0」です。
P2 の z座標(z2)は、リストの(3 x 2)番目の数値「0.5」です。

図2-3-15

一本目の辺を引くプログラムを完成させます。まず最初に、変数の初期値を決定します(赤枠)。変数「times」は多面体の高さが約 10 cm になるように「7」にします。図2-3-14を改造して、x1, y1, z1, x2, y2, z2 をリスト「tetrahedron」から読み取ります。最後に「線ブロック」で両端の点を指定して、「1本目の線」を引きます。
クラフトする位置は(x0, y0, z0)=(0, 0, 0)、色は赤(r, g, b)=(255, 0, 0)とします。

図2-3-16

プログラムを実行すると、「P1-P2」の辺を引くことができました。残りの辺を引くプログラムを作り、正4面体を完成させましょう。

正4面体の完成

図2-3-17

図2-3-17が正4面体を作成するプログラムの完成形です。繰り返しブロックを使い、リスト「tetrahedron_line」の長さの半分(= 6)回、線を引きます。「i」を「2」ずつ増やしてやることで、2本目以降の線についても両端の座標値を読み込むことができます。

図2-3-18

プログラムを実行して、正4面体を作成することができました。

ここでプログラミングはほぼ終わりです。その他の正多面体はリストを入れ替えるだけで作成することが可能です。正6面体(立方体)を作ってみましょう。

正6面体

以下は書籍でご確認ください

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください