如何在Objective-C中进行矩阵和向量数学运算?

11

我需要在Objective-C中进行矩阵和向量数学运算。是否有教程展示如何进行这些运算?是否有方便使用的数学库?


请注意,新的CoreMotion系统可以为您执行大量四元数等计算。这非常棒。 - Fattie
4个回答

17
自从iOS 4.0版本起,SDK包含了苹果的加速框架(Accelerate framework),其中包含了许多经过特别优化以在iOS硬件上运行的C矩阵和向量函数。
虽然这些函数的名称和文档比较晦涩难懂,但如果性能特别重要的话,这可能是您最好的选择。

6
特别是,加速框架中的vDSP库是您寻找加速矩阵操作的工具:http://developer.apple.com/library/ios/#documentation/Accelerate/Reference/vDSPRef/Reference/reference.html%23//apple_ref/doc/uid/TP40009464 - Brad Larson

3

我没有看到提到过,但是GLKit提供了在计算机图形学中常用的向量/矩阵函数。


这些很好且直接,但我不清楚它们是否对性能最优。例如,GLKVector3Normalize是仅执行1.0/sqrtf(x*x + y*y + z*z),运行快速软件逼近算法,还是使用硬件指令(假设ARM甚至有rsqrt)? - rickster
就最优化而言,它是内联的,并且一些更昂贵的矩阵函数具有#define,可以在为设备构建时切换实现以使用向量指令。这为您提供了一个可理解的矩阵/向量库和性能。我想,在底层存储类型的限制范围内,一切都是近似的,但是对于正在寻找库的人来说,指出Carmack快速平方可能还为时过早。 - Preston Software

2
除了Ole指出的加速矩阵数学框架Accelerate之外,CGAffineTransform和CATransform3D结构也是矩阵(分别为3x3和4x4)。苹果公司提供了帮助函数来使用旋转、缩放等操作来操纵这些矩阵,这对于进行这些类型的变换非常有用。
特别地,苹果公司在Quartz 2D编程指南中有一个部分解释了一些矩阵数学

0

YCMatrix为OS X和iOS提供了许多加速框架函数(BLAS、LAPACK和vDSP)的便捷封装。

(免责声明:我是该库的开发人员)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接