Ini adalah perpustakaan matriks Go dan matematika vektor yang dikhususkan untuk kemampuan grafis Open GL.
Paket ini dibuat terutama dengan pembuatan kode untuk operasi vektor dan matriks dasar, meskipun fungsionalitas lebih dari itu ditulis tangan.
Vektor dan matriks disimpan dalam Urutan Utama Kolom, sama seperti OpenGL, yang berarti argumen "transpose" harus salah ketika meneruskan vektor dan matriks menggunakan paket ini.
Paket ini dibagi menjadi dua sub-paket. Paket mgl32
menangani float 32-bit, dan mgl64
menangani float 64-bit. Umumnya Anda akan menggunakan versi 32-bit dengan OpenGL, tetapi versi 64-bit tersedia jika Anda menggunakan ekstensi ganda atau hanya ingin mengerjakan matematika 3D dengan presisi lebih tinggi tanpa OpenGL.
Repositori lama, sebelum pemisahan antara subpaket 32-bit dan 64-bit, disimpan di github.com/Jragonmiris/mathgl (jalur repositori lama), tetapi tidak lagi dipertahankan.
Contohnya dapat ditemukan di github.com/go-gl/example.
Anda mungkin menggunakan kombinasi go get
dan versi Go yang lama. Utilitas go get
diprogram untuk mencari tag yang cocok dengan versi Go saat ini. Saat ini ada tag untuk Go1.2.2 misalnya, jadi jika Anda belum mengupgrade ke Go1.3, go get
akan mengambil API yang lebih lama. Lihat bagian Perubahan API untuk detail tentang penandaan versi.
Jangan ragu untuk mengirimkan permintaan penarikan untuk fitur dan perbaikan bug. Perhatikan bahwa, selain bug dokumentasi, perbaikan meta (travis.yml dll), kode contoh, dan permintaan tarik perubahan yang sangat sepele (pengakses dasar) tidak akan diterima tanpa pengujian yang sesuai dengan kode baru. Jika ini adalah perbaikan bug, pengujian harus menguji bug tersebut.
mgl64
dihasilkan langsung dari versi 32-bit. Untuk mencerminkan perubahan Anda, jalankan go generate github.com/go-gl/mathgl/mgl32
(atau go generate
di direktori mgl32
). Perhatikan juga bahwa karena pembuatan kode digunakan dalam matrix.go
dan vector.go
, tidak ada perubahan yang harus dilakukan pada file tersebut secara langsung. Edit matrix.tmpl
atau vector.tmpl
dan jalankan go generate.
Mulai sekarang, tidak ada perubahan besar yang dapat menyebabkan gangguan API di antara rilis versi Go. Itu berarti setiap kali "x" di Go1.xx bertambah. Pengecualian tentu saja dibuat untuk perbaikan bug. Jika perbaikan bug memerlukan perubahan semantik perangkat lunak pemanggil, maka perbaikan tersebut akan diubah. (Contohnya adalah pembaruan Transpose terkini yang secara keliru menggunakan aturan baris utama). Fungsi-fungsi yang tidak digunakan lagi mungkin akan dihilangkan pada versi utama yang dirilis. Sebelum perubahan apa pun yang dapat menyebabkan gangguan API di dekat rilis besar, komit non-pemecahan terbaru akan ditandai dengan nomor versi Go sebelumnya (misalnya Go1.2.2). Jika tidak ada tag seperti itu, kita dapat berasumsi tidak ada yang rusak.
Penghapusan EulerToQuat; gunakan AnglesToQuat dengan pesanan ZYX sebagai gantinya.