向量正規化的注意事項
前言
最近的專案遽然發生了除0中斷,結果追了一下發生的地方,結果在自己寫的向量函示庫裡的向量正規化這裡發生,這裡把學習的過程做個紀錄。
內容
計算向量正規化時,會先計算該向量長度,長度公式如下
向量長度公式 |
計算完長度後再將每個數值除以長度就可以完成正規化,但如果這個長度很小或根本是"0"的話就會發生問題,解決的方法是計算完長度後,如果小於"FLT_EPSILON"就放棄計算(或直接在結果填上零向量),"FLT_EPSILON"是 C++ 的標準 Macro ,可以解釋成 float 資料型態的最小精度。
向量函示庫自己寫就是會碰到這種麻煩,不過也可以在這樣的過程中學習,這次可真是上了一課。
沒有留言:
張貼留言