我正在尝试在 haskell 中进行一些 OpenGL 编程。但我对图书馆的现状感到困惑。OpenGL使用Tensor包,它只定义了几种矢量类型(但没有以通用方式这样做)。它似乎没有提供任何 Matrix 实现。
线性代数还有其他几个包:张量(注意小写的 T)、Vec、hmatrix,它们似乎比张量更完整。
我正在搜索的内容至少应该包含 3d 和 2d 图形中使用的常用函数,具有合理的性能并且应该与OpenGL兼容,但我想我必须为此更改库。
迟到的答案,对不起。HMatrix 是此类事情的标准选择。它非常兼容,有一个很好的 API,并且实际上用于其他应用程序中的计算机视觉:http: //dis.um.es/profesores/alberto/research.html
我最近也有同样的疑惑,特别恼火的是 Tensor 没有为您提供点积、叉积、归一化等方便的功能。
正如您所指出的,对于andvect
是“硬编码”的,因此不能有有用的类型类实例,例如, or - 使用这些实例,我们将“免费”获得很多操作,例如 add: 。Float
Double
Functor
Monoid
Applicative
(+) <$> v1 <*> v2
上#haskell
,我被指向线性包。它维护良好,并带有许多有用的实例和功能。