Math Lib: Add copy_m2_m2, unit_m2, zero_m2

This commit is contained in:
Campbell Barton 2014-09-06 11:19:34 +10:00
parent 7971e441c1
commit 671f75a12a
3 changed files with 25 additions and 8 deletions

@ -38,12 +38,15 @@ extern "C" {
/********************************* Init **************************************/ /********************************* Init **************************************/
void zero_m2(float R[2][2]);
void zero_m3(float R[3][3]); void zero_m3(float R[3][3]);
void zero_m4(float R[4][4]); void zero_m4(float R[4][4]);
void unit_m2(float R[2][2]);
void unit_m3(float R[3][3]); void unit_m3(float R[3][3]);
void unit_m4(float R[4][4]); void unit_m4(float R[4][4]);
void copy_m2_m2(float R[2][2], float A[2][2]);
void copy_m3_m3(float R[3][3], float A[3][3]); void copy_m3_m3(float R[3][3], float A[3][3]);
void copy_m4_m4(float R[4][4], float A[4][4]); void copy_m4_m4(float R[4][4], float A[4][4]);
void copy_m3_m4(float R[3][3], float A[4][4]); void copy_m3_m4(float R[3][3], float A[4][4]);

@ -35,14 +35,26 @@
/********************************* Init **************************************/ /********************************* Init **************************************/
void zero_m2(float m[2][2])
{
memset(m, 0, sizeof(float[2][2]));
}
void zero_m3(float m[3][3]) void zero_m3(float m[3][3])
{ {
memset(m, 0, 3 * 3 * sizeof(float)); memset(m, 0, sizeof(float[3][3]));
} }
void zero_m4(float m[4][4]) void zero_m4(float m[4][4])
{ {
memset(m, 0, 4 * 4 * sizeof(float)); memset(m, 0, sizeof(float[4][4]));
}
void unit_m2(float m[2][2])
{
m[0][0] = m[1][1] = 1.0f;
m[0][1] = 0.0f;
m[1][0] = 0.0f;
} }
void unit_m3(float m[3][3]) void unit_m3(float m[3][3])
@ -62,15 +74,20 @@ void unit_m4(float m[4][4])
m[3][0] = m[3][1] = m[3][2] = 0.0f; m[3][0] = m[3][1] = m[3][2] = 0.0f;
} }
void copy_m2_m2(float m1[2][2], float m2[2][2])
{
memcpy(m1, m2, sizeof(float[2][2]));
}
void copy_m3_m3(float m1[3][3], float m2[3][3]) void copy_m3_m3(float m1[3][3], float m2[3][3])
{ {
/* destination comes first: */ /* destination comes first: */
memcpy(&m1[0], &m2[0], 9 * sizeof(float)); memcpy(m1, m2, sizeof(float[3][3]));
} }
void copy_m4_m4(float m1[4][4], float m2[4][4]) void copy_m4_m4(float m1[4][4], float m2[4][4])
{ {
memcpy(m1, m2, 4 * 4 * sizeof(float)); memcpy(m1, m2, sizeof(float[4][4]));
} }
void copy_m3_m4(float m1[3][3], float m2[4][4]) void copy_m3_m4(float m1[3][3], float m2[4][4])

@ -1755,10 +1755,7 @@ static PyObject *Matrix_identity(MatrixObject *self)
} }
if (self->num_col == 2) { if (self->num_col == 2) {
MATRIX_ITEM(self, 0, 0) = 1.0f; unit_m2((float (*)[2])self->matrix);
MATRIX_ITEM(self, 0, 1) = 0.0f;
MATRIX_ITEM(self, 1, 0) = 0.0f;
MATRIX_ITEM(self, 1, 1) = 1.0f;
} }
else if (self->num_col == 3) { else if (self->num_col == 3) {
unit_m3((float (*)[3])self->matrix); unit_m3((float (*)[3])self->matrix);