点的应用
宇宙从奇点中诞生,万物始于一。让我们从最简单的点入手。
创建一个点
在三维空间中,有x,y,z三个维度,确定了三个维度的值,我们就得到了一个确定的点。

创建多个点
那么,如何创建多个点呢?简单地复制Point.ByCoordinates
肯定不可取。
还记得如何构建一个数组吗?
0..5..#10
,这段数组从0开始,到5结束,一共有10个数据。

如果能把这组数赋值给点的x值,那么我们应该能得到沿x排布的10个点。

利用三角函数生成曲线
还记得三角函数吗?让我们简单回顾一下初中数学知识。
Sin30°=1/2;Sin45°=(√2)/2;Sin60°=(√3)/2;Sin90°=1 …………
当我们把三角函数用几何的方式表达时,它们呈现出一些特定的图形。
比如,我们用x代表度数,y代表函数值。随着x的变化,y也会变化,它们之间的变化不是均匀分布的,而是带有特定的节奏。

Dynamo中可以使用三角函数,在Math类中。

于是,刚才我们创建的多个点,就可以改造一下。

x是0到360线性分布的点,y是用Sin函数计算处理过的值,但是这条线的弯曲度不明显,我们需要调整它的振幅,也就是y的值。当然,调整x方向的长度也是可以的。

现在已经完美了,我们对x值和y值都源自同一组数列,同时我们对x值和y值加上了倍数,使得它们各自的值可以被放大。这样,我们就可以自由调整函数曲线的长度和振幅。
单向函数曲面
刚才得到的点,可以连成一条曲线。我们把之前的节点整合在一个CodeBlock
中。

于是,我们可以想象,如果让这条曲线在Z轴上复制多个,那么就可以连接这些曲线成为一个曲面。这里可以使用
Geometry.Translate
复制多条曲线,然后使用PolySurface.ByLoft
连接曲线,成为曲面。
或者,可以更简单些,直接复制生成点阵,然后再使用
NurbsSurface.ByPoints
将点阵生成曲面。
双向函数曲面
刚才的案例非常简单,只能生成一个方向的曲面。能否将一个平面的两个方向上都生成这种波纹呢?
首先,创建一组数据,生成一个点阵。

然后,给复制的方向,加上不同的距离,这个距离与x的关系是正弦函数。

可以看到,点阵已经形成波形。
我们还可以给距离值也做成序列,会形成另外一种效果。

可以改变这个序列的方向。

两个方向的值相加,就能得到一个二维方向的波,可以称之为蛋型波。

最后,我们将这个点阵连接成曲面,并给个厚度,会看起来更加明显。

网友评论