2011-03-31 68 views

回答

17

自iOS 4.0開始,SDK包含Apple的Accelerate framework,其中包含許多C矩陣和向量函數,這些函數特別針對iOS硬件上的運行進行了優化。

函數名稱和文檔有點神祕,但如果性能特別重要,它可能是您的最佳選擇。

+6

特別是Accelerate框架內的vDSP庫是您在加速矩陣操作方面所需要的:http://developer.apple.com/library/ios/#documentation/Accelerate/Reference/vDSPRef/Reference/ reference.html%23 // apple_ref/doc/uid/TP40009464 – 2011-03-31 20:36:13

1

除了Ole指出加速矩陣數學的加速框架外,CGAffineTransform和CATransform3D結構都是矩陣(分別爲3x3和4x4)。 Apple提供了輔助函數,用於使用旋轉,縮放等操作這些函數,如果要執行這些類型的轉換,這些函數可能會很有用。

特別是,Apple有一部分Quartz 2D編程指南,他們在那裏他們explain some of the matrix math

3

我沒有看到它提到,但GLKit提供了常用於計算機圖形學的數學類型的矢量/矩陣函數。

+0

這些都很好用,很簡單,但我不清楚它們是否是最佳性能。例如是[GLKVector3Normalize](http://developer.apple.com/library/IOs/documentation/GLkit/Reference/GLKVector3/Reference/reference.html#//apple_ref/c/func/GLKVector3Normalize)剛剛做了1.0/sqrtf(運行[快速軟件逼近](http://www.google.com/search?q=0x5f3759df),或者使用硬件指令(假定ARM甚至有一個「x * x + y * y + z * z) rsqrt)? – rickster 2012-09-28 19:47:06

+0

只要最優化,它是內聯的,一些更昂貴的矩陣函數具有'#definition'來切換實現以在構建設備時使用矢量化指令。給你帶有性能的可理解的矩陣/矢量庫。我想所有的東西都是在底層存儲類型範圍內的一個近似值,但是指出Carmack快速方塊給尋找圖書館的人可能在旅途中有點早。 – 2013-10-11 16:55:03

0

YCMatrix爲OS X和iOS上的許多Accelerate Framework函數(BLAS,LAPACK和vDSP)提供了一個方便的包裝。

(免責聲明:我是該庫的開發者)