#ifndef osml_matrix_h #define osml_matrix_h #include OSML_INLINE matrix_t matrix_identity(void) { matrix_t identity; identity.rows[0] = vector3(1.0f, 0.0f, 0.0f); identity.rows[1] = vector3(0.0f, 1.0f, 0.0f); identity.rows[2] = vector3(0.0f, 0.0f, 1.0f); return identity; } OSML_INLINE matrix_t matrix_scale(float x_scale, float y_scale, float z_scale) { matrix_t scale; scale.rows[0] = vector3(x_scale, 0.0f, 0.0f); scale.rows[1] = vector3(0.0f, y_scale, 0.0f); scale.rows[2] = vector3(0.0f, 0.0f, z_scale); return scale; } OSML_INLINE vector_t matrix_vector_product(matrix_t matrix, vector_t vector) { return vector3(vector_dot_product(matrix.rows[0], vector), vector_dot_product(matrix.rows[1], vector), vector_dot_product(matrix.rows[2], vector)); } #endif