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な行列だったとして、こんならしい。