allenchou.net
遊戲數學:三角函數基礎 – 正切、三角形、與砲彈 | Ming-Lun "Allen" Chou | 周明倫
[latexpage] Here is the original English post.本文之英文原文在此 前備教學 遊戲開發教學:三角函數基礎 – 正弦與餘弦 大綱 在上個教學中,我們認識到了兩個基礎三角函數:正弦與餘弦。這次我們要來學習第三個基礎三角函數:正切(tangent)。這三者為三角函數的根基,能夠用來解決遊戲開發過程中會遇到的各種問題。 你將可透過本教學學會: 正切函數的幾何意義 正弦函數、餘弦函數、與正切函數之間的關係如何用正切函數做出圓滑的入場與退場效果 三角形的邊與三角函數之間的關係給定初速與仰角,如何模擬砲彈路徑在發射砲彈前,如何預測砲彈路徑 給定水平距離和仰角,如何定位砲彈的目標 正切函數的幾何意義 我們先來看看上個教學中的單位圓,圓上有一點$P$,X軸(+X方向)與連接$P$與原點的線段之間的夾角為$\theta$。 從上個教學中已經得知$P$的座標$(X, Y)= (\cos\theta, \sin\theta)$,我們現在來看看一個新的三角函數:正切($\tan\theta$ - 念作"tangent of theta")。它是連接$P$與原點的線段的斜率。 一條線的斜率是其垂直變動與水平變動之間的比率。舉例來說,我們來看看以下線段: 從點$A$移動到點$B$,往+X方向移動3單位,並往+Y方向移動2單位,所以此線段的斜率是$\frac{2}{3}$。 至於如以下這個"走下坡"的線段: 其斜率則為$\frac{-2}{3}$,因為垂直移動與水平移動的比率為負數,斜率便為負數。 現在,回到之前的單位圓圖: 我們看到從原點往$P$直線移動,會水平移動$\cos\theta$距離並且垂直移動$\sin\theta$距離,所以連接$P$與原點的線段斜率為$\frac{\sin\theta}{\cos\theta}$。於是$\tan\theta = \frac{\sin\theta}{\cos\theta}$. 但那只是個數學式子而已,我們來看看$\tan\theta$與單位圓的關係到底是如何。首先,於$P$畫個單位圓的切線,也就是一條通過$P$且與連接$P$與圓點的線段垂直的直線。 現在只看該切線介於$P$與X軸的部分,並且標記一些點: $\angle ABP$與$\angle APD$為直角,然後 $\angle PAB = \angle PAD = \theta$,並且令$\overline{AB}$表示連接兩點$A$與$B$的線段長度。 接下來,將上圖拆成以下兩個直角三角形: 三角形的內角和為$180^\circ$,而且兩個三角形分別已經有兩個角為$\theta$和$90^\circ$,沒有被標記的角($\angle APB$和$\angle ADP$)便是相同的: $180^\circ - \theta -