# 幾何圖形概述

## Dynamo Sandbox 中的幾何圖形

**幾何圖形**是設計的語言。若程式設計語言或環境的核心是幾何圖形核心，則在設計精確健全的模型、自動化設計常式及使用演算法產生設計迭代方面將帶來無限可能。

透過瞭解幾何圖形類型及[其相關方式](#stepping-through-the-hierarchy)，我們可以導覽資源庫中提供的**幾何圖形節點**集合。幾何圖形節點依字母順序排列，與階層順序 (其顯示類似於在 Dynamo 介面中的配置) 截然不同。

!

此外，在 Dynamo 中製作模型，以及將我們在背景預覽中看到的預覽連接至圖表中的資料流，這兩項功能隨時間演進將變得更直觀。

!

> 1. 請注意由格線與彩色軸呈現的假設座標系統
> 2. 選取的節點會以亮顯顏色彩現背景中的對應幾何圖形 (若該節點建立幾何圖形)

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

{% file src="<https://1226582865-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmuqshfgEG0ZvIFN5DRfA%2Fuploads%2Fgit-blob-f94db0150ae125fd0d3ab5bb8d9e9e386aa0fc83%2FGeometry%20for%20Computational%20Design%20-%20Geometry%20Overview.dyn?alt=media>" %}

## 幾何圖形的概念

幾何圖形一直以來的定義是對形狀、大小、圖形相對位置以及空間性質的研究。此領域具有數千年的悠久發展歷史。隨著電腦的問世與普及，我們在定義、探索及產生幾何圖形方面擁有了功能強大的工具。現在，可以很輕鬆地計算複雜幾何互動的結果，這種狀況幾乎隨處可見。

> 如果您很想瞭解各種複雜幾何圖形在運用電腦的力量後可以得到的結果，請在網路上快速搜尋 Stanford Bunny，這是用於測試演算法的權威模型。

在滿是演算法、運算與複雜性的環境中瞭解幾何圖形聽起來似乎讓人膽怯，但是存在一些關鍵且相對簡單的原則，我們可以以此為基礎開始開發更進階的應用：

1. 幾何圖形是**資料** - 對電腦與 Dynamo 而言，一隻兔子和一個數字沒有太大差別。
2. 幾何圖形依賴於**抽象** - 基本上，幾何元素是由指定空間座標系統中的數字、關係與公式來描述。
3. 幾何圖形具有**階層** - 許多點共同構成線，許多線共同構成面，以此類推。
4. 幾何圖形可以同時描述**部分與整體** - 曲線既是指形狀，也是指曲線上的所有點。

實際上，這些原則意味著我們需要了解我們正在使用的幾何圖形 (幾何圖形的類型、幾何圖形的建立方式等)，我們才能在開發更複雜的模型時流暢地建構、分解和重新建構不同的幾何圖形。

## 逐步瞭解階層

接下來花一些時間看一下幾何圖形的抽象描述與階層描述之間的關係。由於這兩個概念彼此相關，但起初並不總是很明顯，因此我們在開始開發更深入的工作流程或模型後，會很快遇到概念障礙。對於初學者，接下來將使用維度來簡單描述模型的「內容」。透過描述一個形狀所需的維數，可以了解幾何圖形所屬的階層。

\![計算幾何圖形](https://github.com/DynamoDS/DynamoPrimerNew/blob/master-cht/.gitbook/assets/Geometry%20for%20-%20GeometryDimensionality.jpg)

> 1. **點** (由座標定義) 沒有任何維度，它只是描述每個座標的數字
> 2. **直線** (由兩個點定義) 現在有 *一個* 維度 - 我們可以沿直線向前 (正方向) 或向後 (負方向)「行走」
> 3. **平面** (由兩條直線定義) 有 *兩個* 維度 - 現在可以向左或向右行走
> 4. **方塊** (由兩個平面定義) 有 *三個* 維度 - 我們可以相對於上下來定義位置

開始對幾何圖形分類時，維度是便利的方式，但不一定是最佳方式。畢竟我們不能只用點、直線、平面與方塊來塑型，如果需要彎曲的東西該怎麼辦呢？此外，還有其他完全抽象的幾何圖形類型品類。它們定義性質，例如方位、體積或零件之間的關係。我們無法真正抓住一個「向量」，那要如何相對於我們在空間中看到的東西來定義它呢？幾何階層的更詳細分類應考慮到抽象類型或「協助工具」之間的差異，我們可以根據協助行為以及對描述模型元素形狀進行協助的類型來對每種抽象類型或協助工具分組。

## 使用幾何圖形更進一步

在 Dynamo 中建立模型並不限於使用節點可以產生的項目。以下是一些關鍵的方式，您可藉此運用幾何圖形讓程序更上一層樓：

1. Dynamo 允許您匯入檔案 - 請嘗試對點雲使用 CSV，或使用 SAT 以引入曲面
2. 使用 Revit 時，可以參考要在 Dynamo 中使用的 Revit 元素
3. Dynamo Package Manager 可對延伸的幾何圖形類型及作業提供其他功能 - 請查看 [Mesh Toolkit](https://github.com/DynamoDS/Dynamo/wiki/Dynamo-Mesh-Toolkit) 套件
