用于矢量数学的开源C ++库

时间:2008-12-12 14:37:59

标签: c++ math

我需要在应用程序中使用一些基本的矢量数学结构。点产品,交叉产品。寻找线的交叉点,那种东西。

我自己可以做到这一点(事实上,已经有)但是没有“标准”可以使用,所以错误和可能的优化不会出现在我身上?

Boost没有它。就我所见,他们的数学部分是关于统计函数的。

附录:

Boost 1.37确实似乎有this。他们还优雅地在现场引入了许多其他解决方案,以及为什么他们仍然去做自己的。我喜欢那样。

8 个答案:

答案 0 :(得分:11)

我没有对它进行过测试,但C ++ eigen library近来越来越受欢迎。根据他们的说法,他们与那里最快的库相当,他们的API看起来非常整洁。

答案 1 :(得分:10)

重新检查C ++程序员的ol'good朋友是否Boost。它a linear algebra package可能非常适合您的需求。

答案 2 :(得分:5)

Armadillo

  

犰狳采用延迟评估   结合多个操作的方法   成为一个并减少(或消除)   需要临时工。哪里   适用,操作顺序是   优化。延迟评估和   优化是通过   递归模板和模板   元编程。

     

虽然链式操作如   加法,减法和   乘法(矩阵和   元素方面)是主要目标   对于加速机会,其他   操作,如操纵   子矩阵,也可以进行优化。   注意保持效率   对于“小”和“大”矩阵。

答案 3 :(得分:2)

除了学习概念之外,我不会使用NRC代码。

我认为你要找的是Blitz++

答案 4 :(得分:1)

检查www.netlib.org,由橡树岭国家实验室和田纳西大学维护。您可以在那里搜索数字包。还有Numerical Recipes in C++,其代码与之相关,但本书的C ++版本有些昂贵,我听说这些代码被描述为“可怕”。 C和FORTRAN版本是免费的,相关代码非常好。

答案 5 :(得分:0)

预言SDK中有一个很好的3D图形矢量库:

查看http://www.twilight3d.com/downloads.html

答案 6 :(得分:0)

对于线性代数:尝试JAMA/TNT。这将涵盖点产品。 (+矩阵因子和其他东西)就矢量交叉产品而言(实际上只对3D有效,否则我认为你进入张量),我不确定。

答案 7 :(得分:0)

对于极轻量级(单个.h文件)库,请查看CImg。它适用于图像处理,但处理矢量没有问题。