我需要在应用程序中使用一些基本的矢量数学结构。点产品,交叉产品。寻找线的交叉点,那种东西。
我自己可以做到这一点(事实上,已经有)但是没有“标准”可以使用,所以错误和可能的优化不会出现在我身上?
Boost没有它。就我所见,他们的数学部分是关于统计函数的。
附录:
Boost 1.37确实似乎有this。他们还优雅地在现场引入了许多其他解决方案,以及为什么他们仍然去做自己的。我喜欢那样。
答案 0 :(得分:11)
我没有对它进行过测试,但C ++ eigen library近来越来越受欢迎。根据他们的说法,他们与那里最快的库相当,他们的API看起来非常整洁。
答案 1 :(得分:10)
重新检查C ++程序员的ol'good朋友是否Boost。它a linear algebra package可能非常适合您的需求。
答案 2 :(得分:5)
犰狳采用延迟评估 结合多个操作的方法 成为一个并减少(或消除) 需要临时工。哪里 适用,操作顺序是 优化。延迟评估和 优化是通过 递归模板和模板 元编程。
虽然链式操作如 加法,减法和 乘法(矩阵和 元素方面)是主要目标 对于加速机会,其他 操作,如操纵 子矩阵,也可以进行优化。 注意保持效率 对于“小”和“大”矩阵。
答案 3 :(得分:2)
除了学习概念之外,我不会使用NRC代码。
我认为你要找的是Blitz++
答案 4 :(得分:1)
检查www.netlib.org,由橡树岭国家实验室和田纳西大学维护。您可以在那里搜索数字包。还有Numerical Recipes in C++,其代码与之相关,但本书的C ++版本有些昂贵,我听说这些代码被描述为“可怕”。 C和FORTRAN版本是免费的,相关代码非常好。
答案 5 :(得分:0)
预言SDK中有一个很好的3D图形矢量库:
答案 6 :(得分:0)
对于线性代数:尝试JAMA/TNT。这将涵盖点产品。 (+矩阵因子和其他东西)就矢量交叉产品而言(实际上只对3D有效,否则我认为你进入张量),我不确定。
答案 7 :(得分:0)
对于极轻量级(单个.h文件)库,请查看CImg。它适用于图像处理,但处理矢量没有问题。