Necesito hacer matemáticas de matriz y vector en Objective-C. ¿Hay tutoriales que muestren cómo funciona esto? ¿Hay bibliotecas de matemáticas que sean útiles?¿Cómo hacer matrices y vectores matemáticos en Objective-C?
Respuesta
Desde iOS 4.0, el SDK incluye el Accelerate framework de Apple, que contiene una cantidad de funciones de vectores y matriz C que están especialmente optimizadas para ejecutarse en el hardware de iOS.
Los nombres de las funciones y la documentación son algo crípticas, pero si el rendimiento es particularmente importante, podría ser su mejor opción.
En particular, la biblioteca vDSP dentro del marco de Accelerate es lo que está buscando con respecto a la manipulación acelerada de la matriz: http://developer.apple.com/library/ios/#documentation/Accelerate/Reference/vDSPRef/Reference/ reference.html% 23 // apple_ref/doc/uid/TP40009464 –
Además del marco de Accelerate que Ole señala para las matemáticas matriciales aceleradas, las estructuras CGAffineTransform y CATransform3D son matrices (3x3 y 4x4, respectivamente). Apple proporciona funciones de ayuda para manipular estos utilizando rotación, escalado, etc., que pueden ser útiles si desea hacer este tipo de transformaciones.
En particular, Apple tiene una sección de la Guía de programación 2D de cuarzo donde explain some of the matrix math.
No lo mencioné pero GLKit proporciona funciones vectoriales/de matriz para los tipos matemáticos de uso común en gráficos de computadora.
Son agradables y sencillos de usar, pero no estoy seguro de si son óptimos para el rendimiento. p.ej. es [GLKVector3Normalize] (http://developer.apple.com/library/IOs/documentation/GLkit/Reference/GLKVector3/Reference/reference.html#//apple_ref/c/func/GLKVector3Normalize) haciendo '1.0/sqrtf (x * x + y * y + z * z) ', ejecuta una [aproximación de software rápida] (http://www.google.com/search?q=0x5f3759df), o usa una instrucción de hardware (presumiendo que ARM incluso tiene un rsqrt)? – rickster
En la medida de lo óptimo, está en línea y algunas de las funciones de matriz más costosas tienen '# define' para cambiar la implementación y usar instrucciones vectorizadas al construir para el dispositivo. Te da una lib de matriz/vector comprensible con rendimiento. Supongo que todo es una aproximación dentro de los límites del tipo de almacenamiento subyacente, pero señalar las casillas rápidas de Carmack a alguien que busca una biblioteca podría ser un poco temprano en el viaje. –
YCMatrix proporciona un envoltorio conveniente para muchas de las funciones de Accelerate Framework (BLAS, LAPACK y vDSP), tanto en OS X como en iOS.
(disclaimer: Yo soy el programador de esa biblioteca)
- 1. Cómo trazar vectores matemáticos 2D con matplotlib?
- 2. Vectores y matrices dinámicas en D
- 3. Scala matrices vs vectores
- 4. vectores C++ no como matrices
- 5. Cuándo usar vectores y cuándo usar matrices en C++?
- 6. Uso de letras para hacer cálculos matemáticos en Javascript
- 7. unboxing, (dispersas) matrices y biblioteca de vectores haskell
- 8. ¿Hay una buena biblioteca PHP para vectores y matrices?
- 9. Símbolos matemáticos en vim
- 10. ¿Cómo dibujan gráficos los programas matemáticos y cómo puedo crearlos?
- 11. operadores matemáticos Currying en Scala
- 12. Bloques ObjectiveC equivalente en Java
- 13. Función de plantilla C++ para matrices, vectores, tipos incorporados, STL
- 14. Cómo hacer una lista de vectores enteros en R
- 15. Símbolos matemáticos en los listados
- 16. Biblioteca numérica de Javascript - vectores, matrices, determinos, inversión
- 17. "Bloqueando" dos vectores y ordenándolos
- 18. Acelerar cálculos matemáticos en Java
- 19. Ayuda con código GCC y ObjectiveC y Cygwin
- 20. Pros y contras del uso de excepción en IOS/ObjectiveC
- 21. Vectores, estructuras y std :: encontrar
- 22. objectivec: fb publicar comentario error
- 23. Cómo dibujar vectores (vectores 2D/3D físicos) en MATLAB?
- 24. Vectores compartidos en OpenMP
- 25. ¿Puedo usar Lapack para calcular los valores propios y vectores propios de matrices dispersas grandes?
- 26. vectores Boost versus vectores STL
- 27. Creciendo un Hashmap de vectores en Matlab
- 28. Boost, memoria compartida y vectores
- 29. Cómo hacer una matriz de matrices en Java
- 30. ObjectiveC Parse Integer from String
Tenga en cuenta que el nuevo sistema CoreMotion, hace un heckovalot de cuaterniones y similares, para usted. Es genial. – Fattie