ai_matrix.h
1 /*
2  * Arnold API header file
3  * Copyright (c) 1998-2009 Marcos Fajardo, (c) 2009-2013 Solid Angle SL
4  */
5 
11 #pragma once
12 #include "ai_vector.h"
13 #include "ai_api.h"
14 
20 typedef float AtMatrix[4][4];
21 
22 AI_API void AiM4Identity(AtMatrix mout);
23 AI_API void AiM4Translation(AtMatrix mout, const AtVector* t);
24 AI_API void AiM4RotationX(AtMatrix mout, float x);
25 AI_API void AiM4RotationY(AtMatrix mout, float y);
26 AI_API void AiM4RotationZ(AtMatrix mout, float z);
27 AI_API void AiM4Scaling(AtMatrix mout, const AtVector* s);
28 AI_API void AiM4Frame(AtMatrix mout, const AtVector* o, const AtVector* u, const AtVector* v, const AtVector* w);
29 AI_API void AiM4PointByMatrixMult(AtPoint* pout, const AtMatrix m, const AtPoint* pin);
30 AI_API void AiM4HPointByMatrixMult(AtHPoint* pout, const AtMatrix m, const AtHPoint* pin);
31 AI_API void AiM4VectorByMatrixMult(AtVector* vout, const AtMatrix m, const AtVector* vin);
32 AI_API void AiM4VectorByMatrixTMult(AtVector* vout, const AtMatrix m, const AtVector* vin);
33 AI_API void AiM4Mult(AtMatrix mout, const AtMatrix ma, const AtMatrix mb);
34 AI_API void AiM4Copy(AtMatrix dest, const AtMatrix src);
35 AI_API void AiM4Transpose(const AtMatrix min, AtMatrix mout);
36 AI_API void AiM4Invert(const AtMatrix min, AtMatrix mout);
37 AI_API float AiM4Determinant(const AtMatrix m);
38 AI_API void AiM4Lerp(AtMatrix mout, float t, const AtMatrix ma, const AtMatrix mb);
39 AI_API void AiM4Berp(float bu, float bv, const AtMatrix m0, const AtMatrix m1, const AtMatrix m2, AtMatrix mout);
40 AI_API bool AiM4IsIdentity(const AtMatrix m);
41 AI_API bool AiM4IsSingular(const AtMatrix m);
42 
43 AI_API AtMatrix AI_M4_IDENTITY;
44 AI_API AtMatrix AI_M4_ZERO;
45 
46 /*\}*/

© 2009-2013 Solid Angle SL · all rights reserved · www.solidangle.com