ヘキサゴンの分割課題とデータツリーの壁
Rhino/Grasshopperで複数のヘキサゴンを3つの四角形に分割する際、データツリーの扱いは複雑になりがちです。目標は、各ヘキサゴンの6つの頂点を持つブランチを、中心点と特定の3つの頂点からなる3つのサブブランチ(四角形)に変換すること。具体的には、{center,0,1,2}, {center,2,3,4}, {center,4,5,0}という3つの四角形を、元のヘキサゴンごとに生成します。単一のヘキサゴンなら容易ですが、複数となるとデータツリーの整形が難しく、多くのユーザーが直面する課題です。
中心点の取得と頂点の抽出
まず、各ヘキサゴンから中心点と個別の頂点を効率的に取得します。
入力は、各ブランチに6つの頂点を持つデータツリーです。
1. Mass Addition コンポーネントを使用し、各ブランチ内の全頂点から重心(中心点)を算出します。出力は、元のブランチ構造を維持したまま、各ブランチに1つの中心点が含まれるリストになります。
2. 次に、List Item コンポーネントを複数使用し、Index 入力に0から5までの整数を与えることで、各ヘキサゴンの個々の頂点(P0からP5)を抽出します。これらの出力も元のブランチ構造を維持します。
3つの四角形を生成するロジック
抽出した中心点と個々の頂点を用いて、指定された3つの四角形を生成します。各四角形に必要な4つの点を正確に組み合わせることが重要です。
生成する四角形は以下の3つです。
* 四角形1: {中心点, P0, P1, P2}
* 四角形2: {中心点, P2, P3, P4}
* 四角形3: {中心点, P4, P5, P0}
各四角形ごとに、Merge コンポーネントを使用します。Merge の最初の入力にMass Addition からの中心点を接続し、残りの3つの入力に対応するList Item から抽出した頂点を接続します。この作業を3つの四角形それぞれに行います。
データツリー整形と最終出力
3つのMerge コンポーネントから出力された四角形の点リストは、それぞれ独立したブランチを持っています。これらを1つのデータツリーに統合し、各ヘキサゴンが3つのサブブランチを持つ構造に整形します。
1. 3つのMerge コンポーネントの出力を、Entwine コンポーネントの入力にそれぞれ接続します。Entwine は、異なるデータストリームを共通のブランチパスの下に統合し、新しいサブブランチを作成するのに適しています。
2. Entwine の出力は、目的のデータツリー構造 `{0;0}[四角形1の点]`, `{0;1}[四角形2の点]`, `{0;2}[四角形3の点]` となります。この結果をPolyline コンポーネントに接続すれば、各四角形が線で結ばれた形状として可視化されます。
