首页/技术分享

Dynamo样例文件解析之Core_Math(三)

发布于:2019-08-12 18:30:09
5287人 分享

该样例文件主要是介绍Dynamo中与Math相关的应用,Dynamo中的数学可以通过公式节点“Formula”、代码块“Code Block”或者节点库中与数学相关的节点完成。

10、这个例子以点的网格为起点,计算点的Z坐标,然后生成曲面。

10.1 通过节点Code Block输入公式“-10..10..#20”,生成一个从-10到10间距相等、项数为20的列表。

10.2 通过节点Point.ByCoordinates生成点图元,连缀方式为叉积。

10.3 将生成的点列表经过节点Flatten展平以后,获取点的X分量和点的Y分量。

10.4 通过节点Math.Pow求步骤10.3中X分量的二次方和Y分量的二次方,然后用一个数字滑块计算第三个二次方的结果。

10.5 做两个加法运算,获得三个二次方结果的和。然后通过节点Math.Sqrt计算总和的平方根。由于X分量的二次方与Y分量的二次方都有不同的数值,因此它们的和也是不同的。

10.6 节点Math.RadiansToDegrees可以将以弧度为单位的角度转化为以度为单位的角度,然后通过节点Math.Sin计算正弦值。最后正弦值的结果除以弧度后乘以一个系数,这个系数由一个滑块控制。

10.7 通过节点Point.ByCoordinates生成点图元,点坐标的X分量与Y分量和之前的点一样,点坐标的Z分量为步骤10.6中计算的结果。

10.8 有了点的列表之后,将大列表用节点List.Chop拆分为20个子列表,拆分后子列表的项数为步骤10.2中子列表的数量。

10.9 经过节点NurbsCurve.ByPoints连线,可以直观地查看到上一步子列表中点的存放规律,同一个子列表中的点生成一条样条曲线,共20条。

10.10 最后用节点Surface.ByLoft将生成的样条曲线通过融合命令生成曲面。

10.11 调整其中的两个滑块,可以调整整个图形的形状。

11、通过Python Script完成相同的效果。

11.1 打开节点Python Script,在第5行将与数学相关的模块导入。

11.2 第8行至第11行创建四个参数amp、x、y和c,分别对应着四个输入端IN[0]、IN[1]、IN[2]和IN[3]。

11.3 第14行创建一个空的列表,名称为z。

11.4 第17行创建一个for循环。参数x是一个列表,该列表共有20个索引项,因此将会循环20次。

11.5 第18行至第21行是循环的主体,整个过程与步骤10中相关的节点功能一致。

11.6 第24行将第21行的结果放进列表z,直到循环结束。

11.7 第27行将整个python Script的输出结果定义为z,因此这个节点输出的结果为列表z中的数值。

12、通过节点Formula完成相同的效果。

12.1 整个流程与普通节点的流程一致,不同点是节点Formula应用的函数是属于外部函数,并不是Dynamo内部的函数,因此将角度处理为弧度。

12.2 在节点Formula中输入公式“A * sin( sqrt( pow(x,2) + pow(y,2) + pow(c,2) ) ) / sqrt( pow(x,2) + pow(y,2) + pow(c,2) )”。

13、通过节点Code Block完成相同的效果。

13.1 节点Code Block调用的函数与Dynamo自带的函数是一样的,因此Code Block中的表达与普通节点是一样的,因此运用的函数名称与Dynamo中自带的函数相匹配。

13.2 节点Code Block中依次输入四行内容。

13.3 第一行“ sum = Math.Pow(x,2) + Math.Pow(y,2) + Math.Pow(c,2);”。

13.4 第二行“num1 = Math.Sqrt(sum);”取平方根。

13.5 第三行“num2 = Math.Sin( Math.RadiansToDegrees(num1) );”将弧度转化为度后计算正弦值。

13.6 第四行“A * num2 / num1;”。这四行内容中应用到的节点名称与普通节点的名称是一样的,但是能够添加参数,让表达更灵活、更简洁。

转载请注明来源本文地址:https://www.tuituisoft/blog/3355.html

上一篇:

Dynamo样例文件解析之Core_Math(二)

下一篇:

Revit放置风管附件并调试设置?