Il s'agit d'une bibliothèque mathématique matricielle et vectorielle Go spécialisée pour les capacités graphiques Open GL.
Ce package est conçu principalement avec la génération de code pour les opérations vectorielles et matricielles de base, bien que les fonctionnalités au-delà soient écrites à la main.
Les vecteurs et les matrices sont stockés dans l'ordre majeur des colonnes, tout comme OpenGL, ce qui signifie que l'argument "transpose" doit être faux lors de la transmission de vecteurs et de matrices à l'aide de ce package.
Ce package est divisé en deux sous-packages. Le package mgl32
traite des flottants 32 bits et mgl64
traite des flottants 64 bits. Généralement, vous utiliserez les versions 32 bits avec OpenGL, mais la version 64 bits est disponible si vous utilisez la double extension ou si vous souhaitez simplement effectuer des mathématiques 3D de plus grande précision sans OpenGL.
L'ancien référentiel, avant la division entre les sous-packages 32 bits et 64 bits, est conservé sur github.com/Jragonmiris/mathgl (l'ancien chemin du référentiel), mais n'est plus maintenu.
Des exemples peuvent être trouvés sur github.com/go-gl/example.
Vous utilisez probablement une combinaison de go get
et d’une ancienne version de Go. L'utilitaire go get
est programmé pour rechercher des balises correspondant à la version actuelle de Go. À l'heure actuelle, il existe une balise pour Go1.2.2 par exemple, donc si vous n'avez pas mis à niveau vers Go1.3, go get
récupérera une ancienne API. Consultez la section Modifications de l'API pour plus de détails sur le balisage de version.
N'hésitez pas à soumettre des demandes d'extraction pour des fonctionnalités et des corrections de bugs. Notez que, mis à part les bugs de documentation, les correctifs méta (travis.yml etc), les exemples de code et les modifications extrêmement triviales (accesseurs de base), les demandes d'extraction ne seront pas acceptées sans tests correspondant au nouveau code. S'il s'agit d'une correction de bug, le test doit tester le bug.
mgl64
est généré directement à partir de la version 32 bits. Pour refléter vos modifications, go generate github.com/go-gl/mathgl/mgl32
(ou go generate
dans le répertoire mgl32
). Notez également que puisque la génération de code est utilisée dans matrix.go
et vector.go
, aucune modification ne doit être apportée directement à ces fichiers. Modifiez matrix.tmpl
ou vector.tmpl
et exécutez go generate.
À partir de maintenant, aucune modification majeure de l’API ne sera apportée entre les versions de Go. Cela signifie à chaque fois qu'un "x" dans Go1.xx augmente. Des exceptions sont bien entendu faites pour les corrections de bugs. Si une correction de bug nécessite de modifier la sémantique du logiciel appelant, elle sera modifiée. (Un exemple est la récente mise à jour de Transpose qui utilisait par erreur les règles principales des lignes). Les fonctions obsolètes peuvent également être supprimées lors de la publication d’une version majeure. Avant toute modification avec rupture de l'API à proximité des versions majeures, la validation ininterrompue la plus récente sera étiquetée avec le numéro de version Go précédent (par exemple Go1.2.2). Si aucune balise de ce type n’existe, on peut supposer que rien n’a été cassé.
Suppression d'EulerToQuat ; utilisez plutôt AnglesToQuat avec la commande ZYX.