4x4その他
#import <Accelerate/Accelerate.h> void MultMatrix4x4( float *lhs, float *rhs, float *result ) { // result = LHS * RHS cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, 4, 4, 4, 1.0f, lhs, 4, rhs, 4, 0.0f, result, 4); } void MultMatrix4x4Vector4( float *mat4, float *vec4, float *result ) { // result = MAT4 * vec4 (列ベクトル) cblas_sgemv(CblasColMajor, CblasNoTrans, 4, 4, 1.0, mat4, 4, vec4, 1, 0.0f, result, 1); } void MultVector4Matrix4x4( float *vec4, float *mat4, float *result ) { // result = vec4(行ベクトル) * mat4 cblas_sgemv(CblasRowMajor, CblasNoTrans, 4, 4, 1.0, mat4, 4, vec4, 1, 0.0f, result, 1); }
Column Majorな行列だったとして、こんならしい。