Esta é uma biblioteca Go de matrizes e matemática vetorial especializada para recursos gráficos Open GL.
Este pacote é feito principalmente com geração de código para operações básicas de vetores e matrizes, embora a funcionalidade além disso seja escrita à mão.
Vetores e matrizes são armazenados em ordem principal de coluna, assim como OpenGL, o que significa que o argumento "transpor" deve ser falso ao passar vetores e matrizes usando este pacote.
Este pacote está dividido em dois subpacotes. O pacote mgl32
lida com floats de 32 bits e mgl64
lida com floats de 64 bits. Geralmente você usará os de 32 bits com OpenGL, mas o de 64 bits está disponível caso você use a extensão dupla ou simplesmente queira fazer matemática 3D de maior precisão sem OpenGL.
O repositório antigo, antes da divisão entre os subpacotes de 32 e 64 bits, é mantido em github.com/Jragonmiris/mathgl (o caminho do repositório antigo), mas não é mais mantido.
Exemplos podem ser encontrados em github.com/go-gl/example.
Você provavelmente está usando uma combinação de go get
e uma versão antiga do Go. O utilitário go get
está programado para procurar tags que correspondam à versão atual do Go. No momento, há uma tag para Go1.2.2, por exemplo, então se você não atualizou para Go1.3, go get
irá obter uma API mais antiga. Consulte a seção Alterações de API para obter detalhes sobre a marcação de versão.
Sinta-se à vontade para enviar solicitações pull de recursos e correções de bugs. Observe que, além de bugs de documentação, correções meta (travis.yml etc), código de exemplo e alterações extremamente triviais (acessadores básicos), solicitações pull não serão aceitas sem testes correspondentes ao novo código. Se for uma correção de bug, o teste deverá testar o bug.
mgl64
é gerado diretamente da versão de 32 bits. Para refletir suas alterações, execute go generate github.com/go-gl/mathgl/mgl32
(ou simplesmente go generate
no diretório mgl32
). Observe também que, como a geração de código é usada em matrix.go
e vector.go
, nenhuma alteração deve ser feita diretamente nesses arquivos. Edite matrix.tmpl
ou vector.tmpl
e execute go generate.
De agora em diante, nenhuma alteração importante na API será feita entre os lançamentos da versão Go. Isso significa que sempre que qualquer "x" em Go1.xx aumentar. Exceções são feitas, é claro, para correções de bugs. Se uma correção de bug exigir alteração da semântica de chamada do software, ela será alterada. (Um exemplo é a atualização recente do Transpose, que usava erroneamente regras principais de linha). Funções obsoletas também podem ser desativadas na versão principal lançada. Antes de qualquer alteração significativa na API perto de lançamentos principais, o commit ininterrupto mais recente será marcado com o número da versão anterior do Go (por exemplo, Go1.2.2). Se tal tag não existir, pode-se presumir que nada foi quebrado.
Remoção de EulerToQuat; use AnglesToQuat com o pedido ZYX.