這是一個專門用於 Open GL 圖形功能的 Go 矩陣和向量數學庫。
該套件主要是透過基本向量和矩陣運算的程式碼產生來製作的,儘管除此之外的功能是手寫的。
向量和矩陣以列主順序存儲,就像 OpenGL 一樣,這意味著使用此包傳入向量和矩陣時,「轉置」參數應該為false 。
此包分為兩個子包。 mgl32
包處理 32 位元浮點數, mgl64
處理 64 位元浮點數。一般來說,您將使用具有 OpenGL 的 32 位元版本,但如果您使用雙精度擴展或只是想在不使用 OpenGL 的情況下進行更高精度的 3D 數學,則可以使用 64 位元版本。
舊儲存庫在 32 位元和 64 位元子套件拆分之前保留在 github.com/Jragonmiris/mathgl (舊儲存庫路徑),但不再維護。
範例可以在 github.com/go-gl/example 中找到。
您可能正在使用go get
和舊 Go 版本的組合。 go get
實用程式被編程為尋找與目前 Go 版本相符的標籤。例如,現在有一個針對 Go1.2.2 的標籤,因此如果您尚未升級到 Go1.3, go get
將取得較舊的 API。有關版本標記的詳細信息,請參閱 API 更改部分。
請隨意提交功能和錯誤修復的拉取請求。請注意,除了文件錯誤之外,如果沒有與新程式碼相對應的測試,元(travis.yml 等)修復、範例程式碼和極其瑣碎的變更(基本存取器)拉取請求將不會被接受。如果是錯誤修復,則測試應該測試該錯誤。
mgl64
是直接從32位元版本產生的。為了反映您的更改,請執行go generate github.com/go-gl/mathgl/mgl32
(或只是在mgl32
目錄中go generate
)。另請注意,由於在matrix.go
和vector.go
中使用了程式碼生成,因此不應直接對這些檔案進行任何變更。編輯matrix.tmpl
或vector.tmpl
並執行gogenerate。
從現在開始,Go 版本之間不會發生重大 API 重大變更。這意味著 Go1.xx 中的任何“x”都會增加。當然,錯誤修復也有例外。如果錯誤修復需要更改呼叫軟體的語義,那麼它將被更改。 (一個例子是 Transpose 最近的更新,它錯誤地使用了行主規則)。已棄用的功能也可能在主要版本發佈時被刪除。在主要版本附近發生任何 API 重大變更之前,最近的非重大提交將被標記為先前的 Go 版本號(例如 Go1.2.2)。如果不存在這樣的標籤,則可以假設沒有任何損壞。
刪除 EulerToQuat;請改用 ZYX 訂單的 AnglesToQuat。