简单理解,这个电池实际上就是把一组数据带入一个曲线的公式,然后将数据在曲线对应点上的数据输出出来这时我们看到粗细发生了一些变化,但并不是我们想要的效果,好像只有中间一小段发生了变化,其他部分没有变,这个原因是GraphMapper的范围设定是在0-1之间的,而我们的半径范围是大概0.8到1.9,超出1的部分就按1算了因此,我们需要重新设定范围,把距离那组数先对应到0-1(remap的默认范围就是0-1)之间,然后再从0-1对应成想要的半径之间,具体做法不细讲了,电池如下,也是建议大家自己先尝试一下
当然你也可以双击graphmapper电池进去手动设定范围,但一方面我们的半径随时可能调整,每调整一次都进去设定一次范围太麻烦了;另一方面将范围设定在0-1在GH中是一个很通用的做法,很多电池默认都是0-1,这个好处学得深入之后逐渐就能体会到双击graphmapper电池,就能对范围进行设定,把范围设定得和半径范围一致,也能得到同样的效果现在,单根线的变化搞定了,很多根线要怎么做呢?这里就要用到数据结构了因为之前我们的粗细变化是所有点一起变化,所以都是把数据砍平(Flatten)之后做的,但现在,这个变化只针对一条线段,每个线段的变化是独立的,这里就需要通过结构的数据来实现这里我就针对这个案例来对数据对应的规则抛砖引玉一下。我们先把之前的结构线拿出来,砍平(Flatten)之后,取出这些线的中点,等分线,这时发现两个数据结构不同了,一个是空心实线,一个是空心虚线之前讲过,等分点之所以是虚线,是因为GH自动将一个线段里的等分点分成了一个组,在之前的案例里,这种分组是不需要的,所以我们直接Flatten了,但现在这个分组就有用了,因为现在我们就是要每组的等分点分别和每个中点算出距离,所以这个结构需要保留。但中点则没有这个结构,如果直接对应会出现什么结果呢?我们先来看一个例子,比如做这两组数做加法运算,GH里数据对应的原则是一一对应,如果两组数据长度和结构一致,那么就会一一对应算出结果而当两组数据不一样多的时候,GH默认是长对应(也有电池可以设置成其他对应规则),也就是长的那组多出来的数据就会和短的那种最后一个数重复对应,这样保证算出来的数据长度和长的那组保持一致。长短不同的两组数据,当无法一一对应的时候,多出来的数据就会和短数据组的最后一个数据对应而当两组数据的有结构之后,对应规则也是一样的,先结构之间长对应,然后数据之间再长对应,比如下图中,左边的结构比右边少一组,那么多出来的那一组就会和短的最后一组重复对应,组分好之后,组里的数据再按照长对应的规则一一对应。这个部分是GH十分核心的概念,一定要理解透彻,关于数据结构的详细介绍,推荐看看D大的这篇文章:SimonChen:Grasshopper中的数据控制
zhuanlan.zhihu.