这是一个专门用于 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。