「4th View」マニュアル

図形ファイルの記述−1.記述の主な流れ

図形ファイルは「.4tv」という拡張子ですが、中身は単なるテキストファイルです。
メモ帳などで開くことによって編集できます。

記述の主な流れ

まずはアプリケーションに付属している「8-cell.4tv」の中身から、ファイルの全体像と基本的な書式を把握しましょう。
このファイルは全部で8行から構成されています。
ファイル名通り、この8行の記述で正8胞体(4次元超立方体)を作成します。

<name "立方体">
<copy perm4 * XYZW>
cell
{
	[#1, #1, #1, -1]
	length(2)
	polygon(4)  //全面を網羅
}

まず始めに基本事項ですが、4th Viewの図形ファイルでは基本的に大文字と小文字を区別しません。
このファイルは一部を除いて全て小文字で書かれていますが、「cell」を「Cell」「CELL」と書くことも可能です。
唯一の例外は2行目にある「XYZW」です。これは変換形式という独自の記述で、ここのみ大文字と小文字を区別します。

また、図形ファイル内での改行は特別な意味を持ちません。
単語の途中などでなければ、どこにでもスペースや改行を入れることができます。

<name "立方体">
<copy perm4 * XYZW>

1行目・2行目は、3行目から始まる「cell」に情報を追加するものです。
このような' < '' > 'に囲まれた記述を「タグ」 と呼び、 特にタグ内に最初に書かれている単語名を取って「nameタグ」「copyタグ」などと呼びます。
これらの意味は、最後に説明します。

cell
{
	……
}

このように' { '' } 'に囲まれた記述を「ブロック」 と呼び、 特にブロックの直前に書かれている単語を取って「cellブロック」などと呼びます。
cellブロックは、名前通りひとつの胞を宣言するのに使います。
このブロックの中に、胞に関する情報を書き込んでいきます。
今回作成するのは正8胞体ですから、その胞である立方体の情報を書き込んでいくことになります。

	[#1, #1, #1, -1]

cellブロック内で最初に書かれている行です。
コンマで区切られた4つの要素が書かれていることから分かるように、この記述は4次元空間上の1点(座標ベクトル)を表します。
4th Viewでは、座標ベクトルの宣言には必ず角カッコを使用します。 X, Y, Z, Wの順で各要素を記述します。

そんなことよりも気になるのはX, Y, Z要素についている'#'の文字でしょうが、これは単に'±'を意味します。
つまり、この記述は数学的には(±1, ±1, ±1, -1)を表し、全ての組み合わせを取ると、この1行で8つの頂点を宣言したことになります。
この頂点は、そのままこの立方体の8つの頂点となります。

	length(2)
	polygon(4)  //全面を網羅

「length」は和訳すると「長さ」、「polygon」は「多角形」を意味します。
これらの意味通り、lengthの後に書かれている「2」は「一辺の長さが2」であることを表します。
同じく、polygonの後に書かれている「4」は「面の辺数が4(=四角形)」であることを表します。
※厳密には、これらは「辺」や「面」そのものを返す関数として機能しています。

また、polygon(4)の後に(わざとらしく)書かれている「//全面を網羅」はプログラマにはお馴染みのコメントです。
このように「//」の後に書かれた文字は、行末まで全て「存在しないもの」として扱われます。

<name "立方体">
<copy perm4 * XYZW>

ファイルの内容はpolygon(4)の次の閉じカッコで終わりですが、これでは中心座標が(0, 0, 0, -1)の立方体を1つ宣言したに過ぎません。
正8胞体の残り7個の胞は、2行目に書いたcopyタグによって自動生成されます。
copyタグの後に書かれている「perm4 * XYZW」は、コピーした胞がどのように配置されるかを表しています。
このように、タグは直後に宣言された胞などに情報を追加する役割を持っています。