在学习Grasshopper的数据结构之前,我们先来了解怎么几个词的意义
清单(List)、集(Sets)、字符串(String)、树木(Tree)、路径(Patch)
清单(List):列表是有序(但不一定排序)的数据集合。列表可以包含零个元素,单个元素或(最多) 2,147,483,647个元素。此外,同一元素在同一列表中可能出现不止一次,而具有相同值的不同元素可能会出现不止一次。同样,列表可能缺少元素,称为“空”。
集(Sets):严格来说,集合是一种数学构造 遵守严格的规则和限制。基本上,一个Set与一个List相同,不同之处在于它不能多次包含同一元素,或者实际上不能包含两个或更多个具有相同值的不同元素。您会发现,在数学中,值和该值的实例之间没有区别,它们是同一回事。但是,在编程中,可以将数字7存储在RAM的多个位置中。但是,Grasshopper不会非常严格地执行此规则,您可以在具有多个相同值的列表上使用很多Set组件。Grasshopper中“列表”和“集”之间的最大区别在于,“集”仅针对具有简单相等性比较的简单数据类型进行定义。基本上是:布尔值,整数,数字,复数,字符串,点,向量,颜色和间隔。列表可以包含各种数据。
字符串(String):字符串是文本。没什么了。我不知道为什么早期的程序员选择将它们称为字符串,但是我想这是对它们的内存表示的更好描述。字符串本质上是各个字符的序列。
树木(Tree):树是所有数据存储在Grasshopper中的方式。即使只有一个项目,它仍将存储在树中。树是列表的排序集合,其中每个列表由路径标识。一条特定的路径只能在一棵树中出现一次,当您将两棵树合并在一起时,具有相同路径的列表会相互附加。树不仅试图无损地表示数据本身,而且还表示该数据的历史。假设您有4条曲线{A,B,C,D},然后将它们分为3个点{X,Y,Z}。然后,为每个点创建一个新的线段{X’,Y’,Z’},然后将每个线段再次分为5个点,每个{K,L,M,N,O}。数据存储在树中的方式,应该可以确定点M是属于X’还是Z’,以及该X’或Z’。
路径(Patch):路径不过是一个整数列表。用花括号和分号表示: {A; B; …; Z}。路径绝对不能为空 {}或具有负整数 {0; -1},但可以创建这样的路径,并且它甚至不会让Grasshopper崩溃。路径由可能为单个输入值创建多个输出值的组件“增长”。例如,划分曲线。它为每条输入曲线创建N个点。在这种情况下,新的整数会附加到路径的末尾。
关于数据面板(Panel)的构成
1:序号(Index),指明数据元素的标号,这串数据系列号是从0开始递增的自然数数列。
2:数据(Data),Panel内部会显示数据的具体类型,名称,参数等。我们观察数据的规律主要是看这里的。
3:路径(Path),Data在整个列表(List)所处的位置。默认位置为{0;0},当有分支时其数值也会递增,比如{0;1}
好了,今天讲的是Grasshopper有关数据列表的一些小知识,算是一种科普性质的,接下的课程我们会详细的讲解Grasshopper关于数据列表的相关操作,敬请期待吧。