2021年2月5日 星期五

圓的漸開線

作者:王一哲
日期: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 繪製圓的漸開線成果。
使用 GeoGebra 繪製圓的漸開線動畫



繪圖步驟


  1. 輸入指令設定半徑r、角速度ω、週期T。
    r = 1
    ω = 1
    T = 2*π/ω
    
  2. 輸入指令設定控制時間 t 的數值拉桿,再開啟屬性選單,將動畫設定為**遞增(一次)**。
    t = Slider(0, 2*T, 0.01*T)
    
  3. 輸入指令畫出圓心O點以及半徑為r的圓形c。
    O = Point({0, 0})
    c = Circle(O, r)
    
  4. 繪圖步驟1 ~ 3

  5. 使用點工具於圓形c上新增點A,再將點A拉到圓形c的左方。
  6. 輸入指令畫出繞著O點順時鐘方向旋轉的B點,再隱藏點A。
    B = Rotate(A, -ω t, O)
    
  7. 繪圖步驟4、5

  8. 輸入指令計算B點繞著O點旋轉的弧長 arclen。
    arclen = r*ω*t
    
  9. 輸入指令新增射線OB並命名為f。
    f = Ray(O, B)
    
  10. 輸入指令新增通過B點的切線g。
    g = Tangent(B, c)
    
  11. 使用點工具於切線g上、B點的下方新增C點。
  12. 繪圖步驟6 ~ 9

  13. 輸入指令新增通過B、C點的向量u,計算向量u的單位向量direct。
    u = Vector(B, c)
    direct = u / Length(u)
    
  14. 輸入指令將B向沿著向量direct的方向平移距離arclen,平移後的點命名為P。
    P = Translate(B, direct*arclen)
    
  15. 顯示移動P點的移動軌跡。
    SetTrace(P, True)
    
  16. 輸入指令通過B、P點的射線h。
    h = Ray(B, C)
    
  17. 繪圖步10 ~ 13

  18. 輸入指令用參數式畫出圓的漸開線,由於t已經被用來表示時間,故參數式中改用t1。
    theory = Curve((-r*(cos(t1) + t1*sin(t1)), r*(sin(t1) - t1*cos(t1))), t1, 0, 4*π)
    
使用 GeoGebra 繪製圓的漸開線動畫



相關指令的官方說明書


  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


HackMD 版本連結:https://hackmd.io/@yizhewang/rJEZ-85xO

沒有留言:

張貼留言