# 數學

如果資料最簡單的形式是數字，則關聯這些數字最簡單的方式就是透過數學運算。從諸如除號等簡單運算子到三角函數，再到更複雜的公式，數學是開始探索數字關係與樣式的良好方式。

### 算術運算子

運算子是一組元件 (加、減、乘、除等)，使用代數函數與兩個數字輸入值，產生一個輸出值。在「運算子」>「動作」下可以找到這些運算子。

| 圖示 | 名稱 (語法)      | 輸入                        | 輸出           |
| -- | ------------ | ------------------------- | ------------ |
| !  | 加 (**+**)    | var\[]...\[]、var\[]...\[] | var\[]...\[] |
| !  | 減 (**-**)    | var\[]...\[]、var\[]...\[] | var\[]...\[] |
| !  | 乘 (**\\**\*) | var\[]...\[]、var\[]...\[] | var\[]...\[] |
| !  | 除 (**/**)    | var\[]...\[]、var\[]...\[] | var\[]...\[] |

## 練習：黃金螺旋線公式

> 按一下下方的連結下載範例檔案。
>
> 附錄中提供完整的範例檔案清單。

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

### 第 I 部分：參數式公式

透過**公式**結合運算子和變數，以構成更複雜的關係。使用滑棒建立可透過輸入參數控制的公式。

1. 建立表示參數式方程式中「t」的數字序列，因此，我們希望使用大到足以定義螺旋線的清單。

**Number Sequence：** 根據以下三項輸入定義數字序列：*start、amount* 與 *step*。

!

2.上述步驟已建立用於定義參數範圍的數字清單。接下來，建立表示黃金螺旋線方程式的節點群組。

定義黃金螺旋線的方程式如下：

$$
x = r cos θ = a cos θ e^{bθ}
$$

$$
y = r sin θ = a sin θe^{bθ}
$$

以下影像以視覺程式設計形式表示黃金螺旋線。逐步檢查節點群組時，請盡可能注意視覺程式與書寫方程式之間的對應。

!

> 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 部分：從公式到幾何圖形

現在，上一步的眾多節點都沒問題，但工作量很大。若要建立更有效率的工作流程，請參閱 [DesignScript](/zh-tw/8_coding_in_dynamo/8-1_code-blocks-and-design-script/2-design-script-syntax.md) 將 Dynamo 表示式的字串定義為一個節點。在接下來的一系列步驟中，我們將瞭解使用參數式方程式來繪製 Fibonacci 螺旋線。

**Point.ByCoordinates：** 將上方的相乘節點連接到「*x*」輸入，將下方的節點連接到「*y*」輸入。我們現在可以在螢幕上看到點的參數式螺旋線。

!

**Polycurve.ByPoints：** 將上一步的 **Point.ByCoordinates** 連接到 *points*。我們可以保留 *connectLastToFirst* 無輸入，因為不打算繪製封閉曲線。這會建立一條穿過上一步定義的每個點的螺旋線。

!

我們現在完成了 Fibonacci 螺旋線！接下來進一步將此分為兩個單獨的練習，我們分別稱之為鸚鵡螺與向日葵。這些是自然系統的抽象名稱，但可以充分呈現 Fibonacci 螺旋線的兩種不同應用。

### 第 III 部分：從螺旋線到鸚鵡螺

**Circle.ByCenterPointRadius：** 我們在此處將使用圓節點，採用與上一步相同的輸入。半徑的預設值為 *1.0*，所以我們可以立即看到輸出的圓。它會立即清晰展示點如何進一步偏離原點。

!

**Number Sequence：** 這是「*t*」的原始陣列。將此序列插入 **Circle.ByCenterPointRadius** 的半徑值後，圓心仍會離原點越來越遠，但半徑會增加，因而產生很酷的 Fibonacci 圓形。

如果您使用 3D 製作會更酷！

!

### 第 IV 部分：從鸚鵡螺到葉序

現在我們已經建立圓形的鸚鵡螺殼，接下來使用參數式格線。我們將對 Fibonacci 螺旋線使用基本旋轉，以建立 Fibonacci 格線，並在[向日葵種子長大後](https://blogs.unimelb.edu.au/sciencecommunication/2018/09/02/this-flower-uses-maths-to-reproduce/)對結果進行塑型。

一開始，我們先執行上一個練習中的相同步驟：使用 **Point.ByCoordinates** 節點建立點的螺旋線陣列。

接下來，依照這些小步驟，以各種旋轉產生一系列螺旋線。

!

> a.**Geometry.Rotate：** 有幾個 **Geometry.Rotate** 選項，請確保選擇以 *geometry*、*basePlane* 和 *degrees* 為輸入的節點。將 **Point.ByCoordinates** 連接至 geometry 輸入。在此節點上按一下右鍵，並確保將交織設定為「笛卡兒積」
>
> 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*。現在，這會產生密度大得多的格線，螺旋線的方向性變得不清楚。各位，我們產生了一朵向日葵。

!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://primer2.dynamobim.org/zh-tw/5_essential_nodes_and_concepts/5-3_the-building-blocks-of-programs/2-math.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
