Dynamo
Primer for v2.0
简体中文
简体中文
  • 关于
  • 简介
    • 什么是 Dynamo 以及它是如何工作的?
    • Primer 用户手册、Dynamo 社区和平台
  • Dynamo 设置
  • 用户界面
    • 工作空间
    • 库
  • 节点和导线
  • 基本节点和概念
    • 节点索引
    • 计算设计的几何图形
      • 几何图形概述
      • 向量、平面和坐标系
      • 点
      • 曲线
      • 曲面
      • 实体
      • 网格
    • 程序的构建块
      • 数据
      • 数学
      • 逻辑
      • 字符串
      • 颜色
    • 使用列表进行设计
      • 什么是列表
      • 使用列表
      • 列表的列表
      • n 维列表
    • Dynamo 中的词典
      • 什么是词典
      • 词典节点
      • 代码块中的词典
      • Revit 使用案例
  • 自定义节点和软件包
    • 自定义节点
      • 自定义节点简介
      • 创建自定义节点
      • 发布到库
    • 软件包
      • 软件包简介
      • 软件包案例研究 - Mesh Toolkit
      • 开发软件包
      • 发布软件包
      • Zero-Touch 输入
  • 适用于 Revit 的 Dynamo
    • Revit 连接
    • 选择
    • 编辑
    • 创建
    • 自定义
    • 记录
  • Dynamo for Civil 3D
    • Civil 3D 连接
    • 快速入门
    • 节点库
    • 样例工作流
      • 道路
        • 灯杆放置
      • 浇口面
        • 服务设施放置
      • 公共设施
        • 重命名结构
      • 轨道
        • 间隙包络
      • 勘测
        • 点编组管理
    • 高级主题
      • 对象绑定
      • Python 和 Civil 3D
    • Dynamo Player
    • 有用的软件包
    • 资源
  • Forma Beta 版中的 Dynamo
    • 在 Forma 中设置 Dynamo Player
    • 在 Dynamo Player 中添加和共享图形
    • 在 Dynamo Player 中运行图形
    • Dynamo 计算服务与 Desktop Dynamo 的差异
  • 在 Dynamo 中编码
    • 代码块和 DesignScript
      • 什么是代码块
      • DesignScript 语法
      • 简写
      • 函数
    • 使用 DesignScript 的几何图形
      • DesignScript 几何图形基础知识
      • 几何基本体
      • 向量数学
      • 曲线:内插和控制点
      • 平移、旋转和其他变换
      • 曲面:内插、控制点、放样、旋转
      • 几何参数化
      • 相交和修剪
      • 几何布尔
      • Python 点生成器
    • Python
      • Python 节点
      • Python 和 Revit
      • 设置自己的 Python 模板
    • 语言更改
  • 最佳做法
    • 图形策略
    • 脚本编写策略
    • 脚本参考
    • 管理您的程序
    • 在 Dynamo 中高效处理大型数据集
  • 样例工作流
    • 快速入门工作流
      • 参数化花瓶
      • 吸引器点
    • 概念索引
  • 开发人员入门
    • 从源代码构建 Dynamo
      • 从源代码构建 DynamoRevit
      • 在 Dynamo 中管理和更新依赖项
    • 为 Dynamo 开发
      • 快速入门
      • Zero-Touch 案例研究 - 网格节点
      • 在 Zero-Touch 节点中执行 Python 脚本 (C#)
      • 进一步了解 Zero-Touch
      • 高级 Dynamo 节点自定义
      • 在 Dynamo 软件包中使用 COM(互操作)类型
      • NodeModel 案例研究 - 自定义 UI
      • 更新 Dynamo 2.x 的软件包和 Dynamo 库
      • 更新 Dynamo 3.x 的软件包和 Dynamo 库
      • 扩展程序
      • 为 Dynamo 2.0+ 定义自定义软件包组织
      • Dynamo 命令行界面
      • Dynamo 集成
      • 为 Dynamo For Revit 开发
      • 发布软件包
      • 从 Visual Studio 构建软件包
      • 软件包形式的扩展
    • 拉取请求
    • 测试期望
    • 示例
  • 附录
    • 常见问题解答
    • 可视化编程和 Dynamo
    • 资源
    • 发行说明
    • 有用的软件包
    • 示例文件
    • 主体集成图
    • 下载 PDF
    • Dynamo 键盘快捷键
Powered by GitBook
On this page
  • 算术运算符
  • 练习:黄金螺旋公式
  • 第 I 部分:参数公式
  • 第 II 部分:从公式到几何图形
  • 第 III 部分:从螺旋到 Nautilus
  • 第 IV 部分:从 Nautilus 到 Phyllotaxis
Edit on GitHub
Export as PDF
  1. 基本节点和概念
  2. 程序的构建块

数学

Previous数据Next逻辑

Last updated 6 days ago

如果最简单的数据形式是数字,则将这些数字关联起来的最简单方法是通过数学。从除法等简单的运算符到三角函数,再到更复杂的公式,Math 是开始探索数值关系和模式的好方法。

算术运算符

运算符是一组组件,这些组件使用具有两个数字输入值的代数函数,这些结果产生一个输出值(加、减、乘、除等)。这些可在“运算符”>“操作”下找到。

图标
名称(语法)
输入
输出

相加 (+)

var[]...[], var[]...[]

var[]...[]

相减 (-)

var[]...[], var[]...[]

var[]...[]

相乘 (*)

var[]...[], var[]...[]

var[]...[]

相除 (/)

var[]...[], var[]...[]

var[]...[]

练习:黄金螺旋公式

单击下面的链接下载示例文件。

可以在附录中找到示例文件的完整列表。

第 I 部分:参数公式

通过公式将运算符和变量组合在一起以形成更复杂的关系。使用滑块来创建可由输入参数控制的公式。

1.创建表示参数方程中“t”的数字序列,因此我们要使用足够大的列表来定义螺旋。

Number Sequence:基于以下三个输入定义数字序列:start、amount 和 step。

2.上述步骤已创建一列数字,来定义参数化域。接下来,创建表示黄金螺旋方程的节点组。

黄金螺旋定义为以下方程:

x=rcosθ=acosθebθx = r cos θ = a cos θ e^{bθ}x=rcosθ=acosθebθ
y=rsinθ=asinθebθy = r sin θ = a sin θe^{bθ}y=rsinθ=asinθebθ

下图以可视化编程形式呈现了黄金螺旋。在逐步查看节点组时,请尝试注意可视化程序和编写方程之间的平行性。

a.Number Slider:向画布添加两个数字滑块。这些滑块将表示参数方程的 “a” 和 “b” 变量。这些表示灵活的常量,或我们可以根据所需结果调整的参数。

b.相乘 (*):乘法节点由星号表示。我们将反复使用它来连接乘法变量

c.Math.RadiansToDegrees:“t”值需要转换为度数,以便在三角函数中进行求值。请记住,Dynamo 默认使用度数来对这些函数求值。

d.Math.Pow:作为“t”和数字“e”的函数,这将创建 Fibonacci 数列。

e.Math.Cos 和 Math.Sin:这两个三角函数将分别区分每个参数点的 x 坐标和 y 坐标。

f.Watch:现在,我们看到输出为两个列表,它们将是用于生成螺旋的点的 x 和 y 坐标。

第 II 部分:从公式到几何图形

Point.ByCoordinates:将上乘法节点连接到 “x” 输入,将下乘法节点连接到 “y” 输入。现在,我们在屏幕上会看到点的参数化螺旋。

Polycurve.ByPoints:将上一步的 “Point.ByCoordinates” 连接到 “points”。我们可以不输入而保留 “connectLastToFirst”,因为我们不会绘制闭合曲线。这将创建穿过上一步中定义的每个点的螺旋。

我们现在已完成 Fibonacci 螺旋!让我们从此处开始进一步研究两个独立的练习,我们称之为 Nautilus 和 Sunflower。这些是自然系统的抽象表示,但 Fibonacci 螺旋的两种不同应用将得到充分体现。

第 III 部分:从螺旋到 Nautilus

Circle.ByCenterPointRadius:我们将在此处使用“Circle”节点,其输入与上一步相同。半径值默认为 “1.0”,因此可以看到圆即时输出。这些点与原点之间的分离程度立即清晰可辩。

Number Sequence:这是 “t” 的原始数组。通过将其连接到 “Circle.ByCenterPointRadius” 的半径值,圆心仍会与原点进一步偏离,但圆的半径不断增大,从而创建一个时髦的 Fibonacci 圆图形。

如果使其成为三维形式,可获得奖励积分!

第 IV 部分:从 Nautilus 到 Phyllotaxis

作为一个跳跃点,我们从上一练习的相同步骤开始:使用 “Point.ByCoordinates” 节点创建点的螺旋阵列。

![](../images/5-3/2/math-part IV-01.jpg)

接下来,按照这些小步骤操作以生成一系列不同旋转的螺旋。

a.Geometry.Rotate:有多个 “Geometry.Rotate” 选项;请务必选择将 “geometry” 、 “basePlane” 和 “degrees” 作为其输入的节点。将 “Point.ByCoordinates” 连接到几何图形输入。在该节点上单击鼠标右键,并确保将连缀设置为“叉积”

b.Plane.XY:连接到 “basePlane” 输入。我们将绕原点旋转,该原点与螺旋的底部位置相同。

c.Number Range:对于度数输入,我们要创建多个旋转。我们可以使用 “Number Range” 组件快速完成此操作。将其连接到 “degrees” 输入。

d.Number:要定义数字范围,请按垂直顺序将三个数字节点添加到画布。从上到下,分别指定值 “0.0,360.0,” 和 “120.0”。这些驱动螺旋的旋转。将三个数字节点连接到相应节点后,请注意 “Number Range” 节点的输出结果。

我们的输出开始类似于旋涡。我们调整一些 “Number Range” 参数,看一看结果如何变化。

将 “Number Range” 节点的步长从 “120.0” 更改为 “36.0”。请注意,这将创建更多旋转,因此会为我们提供更密集的栅格。

将 “Number Range” 节点的步长从 “36.0” 更改为 “3.6”。现在,我们得到更密集的栅格,但螺旋的方向性尚不清楚。女士们,先生们:我们创建了一颗向日葵。

现在,上一步中的大部分节点都可以正常工作,但这种工作量很大。要创建更高效的工作流,请查看,以将 Dynamo 表达式的字符串定义到一个节点中。在接下来的一系列步骤中,我们将了解如何使用参数方程绘制 Fibonacci 螺旋。

现在的情况是,我们已创建一个圆形 Nautilus 壳,接下来我们转到参数化栅格。我们将在 Fibonacci 螺旋上使用基本旋转来创建 Fibonacci 栅格,然后在后对结果进行建模。

“DesignScript”
向日葵种子生长
17KB
Building Blocks of Programs - Math.dyn