newsence

避免使用三角函數 (2013)

Hacker News·24 天前

這篇由 Inigo Quilez 撰寫的技術文章討論了為什麼在電腦圖形學中使用三角函數來定位物體通常並非最佳做法,並解釋了正確的向量替代方案。

背景

這篇文章由知名圖形學專家 Inigo Quilez 撰寫,探討在電腦圖形學中處理物體定向(Orientation)時,過度依賴三角函數與角度標量所導致的效能與邏輯問題。作者主張,當輸入資料本身就是向量時,將其轉換為角度再轉回旋轉矩陣是一種不必要的迂迴,應直接利用向量運算來建構變換矩陣。

社群觀點

在 Hacker News 的討論中,多數開發者對此觀點表示強烈共鳴,認為這是一種從「新手」邁向「專業」的覺醒過程。許多評論者指出,將角度表示為純量(如度數或弧度)往往是低效的根源,更理想的做法是將角度視為單位複數或座標對。這種做法能將原本昂貴的三角函數運算轉化為代數運算,例如利用複數的幾何平均值來計算角平分線,或是透過點積與叉積直接代入羅德里格旋轉公式,從而減少計算指令並提升程式碼的優雅度。

然而,討論中也出現了關於「直覺」與「效率」之間的權衡。部分開發者認為,雖然在底層運算中避開三角函數是正確的,但在人機介面或特定遊戲邏輯中,角度仍具備不可替代的直覺性。例如在開發第一人稱射擊遊戲的攝影機控制時,儲存俯仰角(Pitch)與偏航角(Yaw)遠比儲存四元數更容易理解與調試。角度具有低維度且與旋轉量呈線性關係的特性,這使得開發者在設定如「互動感應範圍」等參數時,能有更清晰的物理直覺。

此外,有觀點提出除了向量運算外,四元數也是一種極佳的中間層選擇。透過四元數與向量的旋轉操作,可以將複雜的變換分解為可組合的運算單元,這在處理如太空船對齊路徑切線等問題時,能提供比純矩陣運算更清晰的邏輯流。另一派討論則延伸到了幾何代數與豪斯霍爾德變換,認為旋轉本質上可以視為兩次連續的反射,這種視角能進一步將幾何問題轉化為更穩定的線性代數操作,甚至在機器學習的向量量化等領域中發揮作用。

延伸閱讀

在討論過程中,社群成員推薦了幾項深入研究此議題的資源。首先是 Norman Wildberger 提出的「有理三角學」(Rational Trigonometry),該理論主張完全屏棄角度與平方根,改用比例與平方距離(Quadrances)來處理幾何問題。其次,Fabian Giesen 的部落格文章《Finish your derivations》也被提及,該文深入探討了如何簡化數學推導以優化程式執行效率。對於對旋轉公式感興趣的讀者,維基百科上的「羅德里格旋轉公式」與「豪斯霍爾德變換」提供了紮實的理論基礎。最後,針對現代機器學習應用,留言者也分享了關於 VQ-VAE 旋轉技巧的學術論文,展示了這些幾何技巧在尖端科技中的實踐。

https://iquilezles.org/articles/noacos/