4#if defined(MGDL_USE_CCVECTOR)
7 #define V2f_Create(x,y) vec2New(x,y)
11 #define V2f_Add(Va, Vb, dest) dest = vec2Add(Va, Vb)
12 #define V2f_Sub(Va, Vb, dest) dest = vec2Subtract(Va, Vb)
16 #define V3f_Create(x,y,z) vec3New(x,y,z)
17 #define V3f_FromV4f_xyz(Vsource, Vdest) Vdest = Vsource.xyz
18 #define V3f_X(Va) Va.x
19 #define V3f_Y(Va) Va.y
20 #define V3f_Z(Va) Va.z
22 #define V3f_Copy(source, dest) dest = source;
23 #define V3f_FromFloatArray(array, index, dest) V3f_Create(array[index], array[index+1], array[index+2]);
24 #define V3f_ToFloatArray(source, array, index) array[index*3] = source.x; array[index*3+1] = source.y; array[index*3+2] = source.z;
25 #define V3f_FromVec3Array(array, index, dest) dest = array[index];
27 #define V3f_Scale(Va, scalar, dest) dest = vec3Multiply(Va, scalar)
28 #define V3f_Add(Va, Vb, dest) dest = vec3Add(Va, Vb)
29 #define V3f_Sub(Va, Vb, dest) dest = vec3Subtract(Va, Vb)
30 #define V3f_Normalize(Va, dest) dest = vec3Normalize(Va)
31 #define V3f_Cross(Va, Vb, dest) dest = vec3Cross(Va, Vb)
32 #define V3f_Dot(Va, Vb) vec3Dot(Va, Vb)
33 #define V3f_Length(Va) vec3Length(Va)
34 #define V3f_Reflect(Vnormal, Veye, Vdest) Vdest = vec3Reflect(Vnormal, Veye)
37 V3f V3f_RotateYFunc(V3f source,
float angle);
38 #define V3f_RotateY(source, angle, dest) dest = V3f_RotateYFunc(source, angle)
40 V3f V3f_RotateZFunc(V3f source,
float angle);
41 #define V3f_RotateZ(source, angle, dest) dest = V3f_RotateZFunc(source, angle)
43 V3f V3f_HexToColorFunc(
int red,
int green,
int blue);
44 #define V3f_HexToColor(red, green, blue, dest); dest = V3f_HexToColorFunc(red, green, blue)
46 float V3f_BezierFuncF(
float s,
float P0,
float C0,
float C1,
float P1);
47 V3f V3f_BezierFuncV3(
float s, V3f P0, V3f C0, V3f C1, V3f P1);
49 #define V3f_BezierV3(s, P0, C0, C1, P1, dest) dest = V3f_BezierFuncV3(s, P0, C0, C1, P1)
51 #define V3f_Print(Va) printf("%.2f, %.2f, %.2f\n", Va.x, Va.y, Va.z)
55 #define V4f_Create(x, y, z, w) vec4New(x, y, z, w)
58 #define MTX3x3_Identity(matrix) mat3x3Identity(matrix);
59 #define MTX3x3_MultiplyVector(matrix, source, dest) dest = mat3x3MultiplyVector(matrix, source);
60 #define MTX3x3_RotateX(matrix, radians) mat3x3RotateX(matrix, (radians))
61 #define MTX3x3_RotateY(matrix, radians) mat3x3RotateY(matrix, (radians))
62 #define MTX3x3_RotateZ(matrix, radians) mat3x3RotateZ(matrix, (radians))
65 #define MTX4x4_MultiplyVector(matrix, source, dest) dest = mat4x4MultiplyVector(matrix, source)
67#elif defined(MGDL_USE_CGLM)
70 #define V2f_Create(x,y) {x, y}
71 #define V2f_X(Va) Va[0]
72 #define V2f_Y(Va) Va[1]
74 #define V3f_Create(x, y, z) {x, y, z}
75 #define V3f_X(Va) Va[0]
76 #define V3f_Y(Va) Va[1]
77 #define V3f_Z(Va) Va[2]
79 #define V3f_Copy(source, dest) glm_vec3_copy(source, dest);
80 #define V3f_FromFloatArray(array, index, dest) glm_vec3_make(&array[index], dest);
81 #define V3f_ToFloatArray(source, array, index) array[index*3] = source[0]; array[index*3+1] = source[1]; array[index*3+2] = source[2];
83 #define V3f_FromVec3Array(array, index, dest) V3f_Copy(array[index], dest);
85 #define V3f_Scale(Va, scalar, dest) glm_vec3_scale(Va, scalar, dest);
86 #define V3f_Add(Va, Vb, dest) glm_vec3_add(Va, Vb, dest);
87 #define V3f_Sub(Va, Vb, dest) glm_vec3_sub(Va, Vb, dest);
88 #define V3f_Normalize(Va) glm_vec3_normalize(Va);
89 #define V3f_Cross(Va, Vb, dest) glm_vec3_cross(Va, Vb, dest);
90 #define V3f_Dot(Va, Vb) glm_vec3_dot(Va, Vb);
93 void V3f_RotateYFunc(V3f p,
float angle, V3f out);
94 #define V3f_RotateY(source, angle, dest) V3f_RotateYFunc(source, angle, dest);
96 void V3f_RotateZFunc(V3f p,
float angle, V3f out);
97 #define V3f_RotateZ(source, angle, dest) V3f_RotateZFunc(source, angle, dest);
99 void V3f_HexToColorFunc(
int red,
int green,
int blue, V3f color_out);
100 #define V3f_HexToColor(red, green, blue, dest); V3f_HexToColorFunc(red, green, blue, dest);
102 float V3f_BezierFuncF(
float s,
float P0,
float C0,
float C1,
float P1);
104 void V3f_BezierFuncV3(
float s, V3f P0, V3f C0, V3f C1, V3f P1, V3f out_point);
105 #define V3f_BezierV3(s, P0, C0, C1, P1, dest) V3f_BezierFuncV3(s, P0, C0, C1, P1, dest);
107 #define V3f_Print(Va) printf("%.2f, %.2f, %.2f\n", Va[0], Va[1], Va[2]);
109#elif defined(MGDL_PLATFORM_WII)
112 #define V2f_Create(x, y) {x, y}
113 #define V2f_X(Va) Va.x
114 #define V2f_Y(Va) Va.y
116 #define V3f_Create(x,y,z) {x, y, z}
117 #define V3f_X(Va) Va.x
118 #define V3f_Y(Va) Va.y
119 #define V3f_Z(Va) Va.z
121 #define V3f_Copy(source, dest) dest = source;
122 #define V3f_FromFloatArray(array, index, dest) V3f_Create(array[index], array[index+1], array[index+2]);
123 #define V3f_ToFloatArray(source, array, index) array[index*3] = source.x; array[index*3+1] = source.y; array[index*3+2] = source.z;
124 #define V3f_FromVec3Array(array, index, dest) dest = array[index];
126 #define V3f_Scale(Va, scalar, dest) guVecScale(&Va, &dest, scalar);
127 #define V3f_Add(Va, Vb, dest) guVecAdd(&Va, &Vb, &dest);
128 #define V3f_Sub(Va, Vb, dest) guVecSub(&Va, &Vb, &dest);
129 #define V3f_Normalize(Va) guVecNormalize(&Va);
130 #define V3f_Cross(Va, Vb, dest) guVecCross(&Va, &Vb, &dest);
131 #define V3f_Dot(Va, Vb) guVecDotProduct(&Va, &Vb);
134 V3f V3f_RotateYFunc(V3f source,
float angle);
135 #define V3f_RotateY(source, angle, dest) dest = V3f_RotateYFunc(source, angle);
137 V3f V3f_RotateZFunc(V3f source,
float angle);
138 #define V3f_RotateZ(source, angle, dest) dest = V3f_RotateZFunc(source, angle);
141 V3f V3f_HexToColorFunc(
int red,
int green,
int blue);
142 #define V3f_HexToColor(red, green, blue, dest); dest = V3f_HexToColorFunc(red, green, blue);
144 float V3f_BezierFuncF(
float s,
float P0,
float C0,
float C1,
float P1);
145 V3f V3f_BezierFuncV3(
float s, V3f P0, V3f C0, V3f C1, V3f P1);
147 #define V3f_BezierV3(s, P0, C0, C1, P1, dest) dest = V3f_BezierFuncV3(s, P0, C0, C1, P1);
149 #define V3f_Print(Va) printf("%.2f, %.2f, %.2f\n", Va.x, Va.y, Va.z);
153 #define MTX3x3_Identity(matrix) guMtxIdentity(matrix);
154 #define MTX3x3_MultiplyVector(matrix, Va, dest) guVecMultiply(matrix, &Va, &dest);
156 #define MTX3x3_RotateX(matrix, radians) guMtxRotRad(matrix, "x", (radians));
157 #define MTX3x3_RotateY(matrix, radians) guMtxRotRad(matrix, "y", (radians));
158 #define MTX3x3_RotateZ(matrix, radians) guMtxRotRad(matrix, "z", (radians));