# 圓的漸開線
> 作者:王一哲
> 日期:2021/2/5
## 原理
漸開線的英文為 involute 或 evolute。假設B為圓周上的點,B點繞圓心O旋轉的弧長為L,在過B點的切線上有一個P點,BP的距離等於 L,則P點的軌跡為圓的漸開線,圓的漸開線常用來作為齒輪邊緣的形狀。若使用參數式則為
$$
x = a (\cos t + t \sin t)
$$
$$
y = a (\sin t - t \cos t)
$$
以下是[使用 GeoGebra 繪製圓的漸開線](https://www.geogebra.org/m/yeynmwq4)成果。
<img height="80%" width="80%" src="https://i.imgur.com/61hw3Zu.gif" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">使用 GeoGebra 繪製圓的漸開線動畫</div>
<br />
## 繪圖步驟
1. 輸入指令設定半徑r、角速度ω、週期T。
```latex
r = 1
ω = 1
T = 2*π/ω
```
2. 輸入指令設定控制時間 t 的數值拉桿,再開啟屬性選單,將動畫設定為**遞增(一次)**。
```latex
t = Slider(0, 2*T, 0.01*T)
```
3. 輸入指令畫出圓心O點以及半徑為r的圓形c。
```latex
O = Point({0, 0})
c = Circle(O, r)
```
<img height="40%" width="40%" src="https://i.imgur.com/9IQCx8P.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">繪圖步驟1 ~ 3</div>
<br />
4. 使用點工具於圓形c上新增點A,再將點A拉到圓形c的左方。
5. 輸入指令畫出繞著O點順時鐘方向旋轉的B點,再隱藏點A。
```latex
B = Rotate(A, -ω t, O)
```
<img height="40%" width="40%" src="https://i.imgur.com/B7NARqX.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">繪圖步驟4、5</div>
<br />
6. 輸入指令計算B點繞著O點旋轉的弧長 arclen。
```latex
arclen = r*ω*t
```
7. 輸入指令新增射線OB並命名為f。
```latex
f = Ray(O, B)
```
8. 輸入指令新增通過B點的切線g。
```latex
g = Tangent(B, c)
```
9. 使用點工具於切線g上、B點的下方新增C點。
<img height="40%" width="40%" src="https://i.imgur.com/g0gpNS9.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">繪圖步驟6 ~ 9</div>
<br />
10. 輸入指令新增通過B、C點的向量u,計算向量u的單位向量direct。
```latex
u = Vector(B, c)
direct = u / Length(u)
```
11. 輸入指令將B向沿著向量direct的方向平移距離arclen,平移後的點命名為P。
```latex
P = Translate(B, direct*arclen)
```
12. 顯示移動P點的移動軌跡。
```latex
SetTrace(P, True)
```
13. 輸入指令通過B、P點的射線h。
```latex
h = Ray(B, C)
```
<img height="60%" width="60%" src="https://i.imgur.com/Bco693s.png" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">繪圖步10 ~ 13</div>
<br />
14. 輸入指令用參數式畫出圓的漸開線,由於t已經被用來表示時間,故參數式中改用t1。
```latex
theory = Curve((-r*(cos(t1) + t1*sin(t1)), r*(sin(t1) - t1*cos(t1))), t1, 0, 4*π)
```
<img height="80%" width="80%" src="https://i.imgur.com/61hw3Zu.gif" style="display: block; margin-left: auto; margin-right: auto;"/>
<div style="text-align:center">使用 GeoGebra 繪製圓的漸開線動畫</div>
<br />
## 相關指令的官方說明書
1. 數值滑桿 https://wiki.geogebra.org/en/Slider_Command
2. 點 https://wiki.geogebra.org/en/Point
3. 圓 https://wiki.geogebra.org/en/Circle_Command
4. 旋轉 https://wiki.geogebra.org/en/Rotate_Command
5. 射線 https://wiki.geogebra.org/en/Ray_Command
6. 切線 https://wiki.geogebra.org/en/Tangent_Command
7. 向量 https://wiki.geogebra.org/en/Vector
8. 設定軌跡 https://wiki.geogebra.org/en/SetTrace_Command
9. 曲線 https://wiki.geogebra.org/en/Curve_Command
<br />
---
###### tags:`GeoGebra`