grasshopper と コンピュータサイエンス

建築、メディアアートを建築とメディアアートの進化を支える技術解説

データ構造とGRASSHOPPER

プログラムでは扱うデータに何かしらの意図を持たせたいとき、扱うデータに構造を持たせます。

いきなり問題です。一番シンプルなデータ構造は何だと思いますか?
正解は配列arrayです。
一度は聞いたことがある人もいるかもしれません。
これは同じ型の要素を連続したメモリ領域に格納します。
char c = {1,2,3}
のように記述します。

Grasshopperでも同様で、3次元のジオメトリや複雑なデータを効果的に扱うために、適切なデータ構造を持つことが必要です。これにより、データの整理、操作、可視化などがスムーズに行われます。
Grasshopper 開発者の David Rutten によって描かれたイメージです。



これは、データツリーと呼ばれるgrasshopper 特有の概念です。

このデータツリー
を理解する為に2つのデータ構造を理解する必要があります。

1つ目はツリー構造と呼ばれるモノで、
2つ目はlist構造と呼ばれるものです。

このツリー構造とリスト構造の2つが組み合わさったものがラスホッパーのデータ構造データツリーと呼ばれるものです。

上記を理解した上で図を改めてみてみましょう。
ツリーと呼ばれる枝分かれした枝にデータ構造(リスト)が格納されているのがわかるでしょうか?
一つの基本となるブランチ(枝(幹といっても良い))が、path{0}
に相当します。
またブランチの中にリストが格納されます。各ブランチは階層構造を表す数字の列が列挙されていて、数字が深くなるほどこの階層構造が深くなります。(サブブランチが作成されます)このパスは、データは持ちませんが、デフォルトで3 つのサブ・ブランチを持ちます。これらの 3 つ
のサブ・ブランチは、マスター・ブランチのインデックッス{0}を持ち、自身のインデックス、0,1,2 を
持ちます。 

  1. ツリー構造(Tree Structure):

    • ツリー構造は、親子関係に基づいて階層化されたデータの構造を表します。
    • 各ノードは、1つの親ノードと複数の子ノードを持つことができ、それぞれの子ノードはさらに別の子ノードを持つことができます。
    • ツリー構造は、階層的な関係を表現するために使用されます。
  2. リスト構造(List Structure):

    • リスト構造は、順序付けられた要素のシーケンスを表します。
    • リスト内の各要素は、インデックスによって一意に識別されます。
    • リスト構造は、複数の要素を順番に格納するために使用され、特定の順序でデータを処理する場合に有用です。

Grasshopperのデータ構造は、これらのツリー構造とリスト構造が組み合わさったものです。具体的には、ツリー内の各ブランチにはリストが格納され、そのリスト内の要素が個々のデータを表します。これにより、複雑な階層構造を持つデータを効果的に管理し、操作することができます。