> For the complete documentation index, see [llms.txt](https://primer2.dynamobim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://primer2.dynamobim.org/zh-cn/5_essential_nodes_and_concepts/5-2_geometry-for-computational-design/4-curves.md).

# 曲线

## Dynamo 中的曲线

### 什么是曲线？

[曲线](#deep-dive-into...)是我们介绍的第一个几何数据类型，有一组更熟悉的形状描述特性 - 弯曲度或笔直度如何？多长或多短？请记住，点仍然是我们的构建块，用于定义从直线到样条曲线以及它们之间的所有曲线类型。

![曲线类型](/files/uXKlLP0JJd1Tf5tkcifq)

> 1. 线
> 2. 多段线
> 3. 圆弧
> 4. 圆
> 5. 椭圆
> 6. NURBS 曲线
> 7. 复合线

### 线

[直线](#lines)由一组点组成，每条直线至少有 2 个点。在 Dynamo 中创建直线的最常见方法之一是使用 \`\`Line.ByStartPointEndPoint\` 在 Dynamo 中创建直线。

!

### NURBS 曲线

[NURBS](#nurbs-+-polycurves) 是一个用于精确表示曲线和曲面的模型。在 Dynamo 中使用两种不同方法制作正弦曲线，以创建 NURBS 曲线来比较结果。

!

> 1. *“NurbsCurve.ByControlPoints”* 使用一列点作为控制点
> 2. *“NurbsCurve.ByPoints”* 通过一列点绘制曲线

> 单击下面的链接下载示例文件。
>
> 可以在附录中找到示例文件的完整列表。

{% file src="/files/Yn3ZC8G39CeiBESm32pp" %}

## 深入探讨...

### 曲线

术语 **“曲线”** 通常是所有不同类型弯曲（即使是笔直）形状的全部捕捉。大写字母“C”（即“Curve”）是所有这些形状类型（直线、圆、样条曲线等）的父分类。从技术上讲，“曲线”描述了通过将“t”输入到函数集合中可以找到的所有可能点，范围可能从简单形式 (`x = -1.26*t, y = t`) 到涉及微积分的函数。不论我们使用何种类型的曲线，这一名为“t”的 **“参数”** 都是我们可以计算的特性。此外，不论形状的外观如何，所有曲线也都具有起点和终点，它们与用于创建曲线的最小和最大 t 值一致符合。这也有助于我们了解其方向性。

![曲线参数](/files/lQKNKnXvefrtvxu7U0Vy)

> 请务必注意，Dynamo 假定曲线的“t”值域可理解为 0.0 到 1.0。

所有曲线还拥有许多可用于描述或分析它们的特性或特征。如果起点和终点之间的距离为零，则曲线为“闭合”。此外，每条曲线都有多个控制点，如果所有这些点都位于同一平面中，则该曲线为“平面”的。某些特性整体上适用于曲线，而其他特性仅适用于沿曲线的特定点。例如，平面性是全局特性，而给定 t 值处的切线向量是局部特性。

### 线

**“线”** 是最简单的曲线形式。它们看起来可能不弯曲，但它们实际上是曲线 - 只是没有任何曲率。创建直线的方法有几种，最直观的形式是从点 A 到点 B。在这两个点之间绘制“直线 AB”的形状，但在数学上它在两个方向上无限延伸。

![直线](/files/iWMUnXwYeTp2UQHMj14D)

将两条直线连接在一起时，我们得到了 **“多段线”**。在此处，我们可以直接了解什么是“控制点”。编辑其中任何点位置都将更改多段线的形状。如果多段线是闭合的，则会得到一个多边形。如果多边形的边长全部相等，则将其描述为常规边。

### 圆弧、圆、椭圆圆弧和椭圆

随着我们为定义形状的参数化函数增加了更多复杂性，我们可以从直线进一步创建 **“圆弧”** 、**“圆”** 、**“椭圆圆弧”** 或 **“椭圆”**，方法是描述一个或两个半径。“圆弧”版本与“圆”或“椭圆”之间的差异仅在于形状是否是闭合的。

![圆弧 + 圆](/files/uFNYPV2e1THy3n7phStD)

### NURBS + 复合线

**NURBS**（非均匀有理基本样条曲线）是数学表示形式，可以对任何形状进行精确建模（从简单的二维直线、圆、圆弧或矩形到最复杂的三维自由形式有机曲线）。由于其灵活性（相对较少的控制点，但基于“阶数”设置的平滑插值）和精度（受强大的数学约束），NURBS 模型可用于从插图、动画到制造的任何过程。

**阶数**：曲线的阶数确定了控制点对曲线的影响范围；阶数越高，范围越大。“阶数”为正整数。此数字通常为 1、2、3 或 5，但可以是任意正整数。NURBS 直线和多段线通常为 1 阶，并且大多数自由形式曲线为 3 阶或 5 阶。

**控制点**：控制点是一列至少包含 Degree+1 的点。更改 NURBS 曲线形状的最简单方法之一是移动其控制点。

**权重**：控制点具有一个称为“权重”的关联数字。权重通常为正数。当曲线的控制点全都具有相同的权重（通常为 1）时，曲线称为“非有理性曲线”，否则曲线称为“有理曲线”。大多数 NURBS 曲线是非有理性曲线。

**结**：结是一列 (Degree+N-1) 数字，其中 N 是控制点的数量。结与权重一起使用，以控制控制点对生成的曲线的影响。结的一个用途是在曲线中的某些点处创建扭折。

> 1. 阶数 = 1
> 2. 阶数 = 2
> 3. 阶数 = 3

{% hint style="info" %}
请注意，阶数值越高，则用于对生成的曲线进行插值的控制点越多。
{% endhint %}
