18 #ifndef PIC_UTIL_MATRIX_3_X_3_HPP 19 #define PIC_UTIL_MATRIX_3_X_3_HPP 44 for(
int i = 0; i < 9; i++) {
74 void set(
const float *
data)
77 memcpy(this->data,
data, 9 *
sizeof(
float));
140 float *
mul(
float *vec,
float *ret)
150 ret[0] =
data[0] * vec[0] +
data[1] * vec[1] +
data[2] * vec[2];
151 ret[1] =
data[3] * vec[0] +
data[4] * vec[1] +
data[5] * vec[2];
152 ret[2] =
data[6] * vec[0] +
data[7] * vec[1] +
data[8] * vec[2];
163 float *
mulH(
float *vec,
float *ret)
173 ret[0] =
data[0] * vec[0] +
data[1] * vec[1] +
data[2] * vec[2];
174 ret[1] =
data[3] * vec[0] +
data[4] * vec[1] +
data[5] * vec[2];
175 ret[2] =
data[6] * vec[0] +
data[7] * vec[1] +
data[8] * vec[2];
197 float ret_2 =
data[6] * vec[0] +
data[7] * vec[1] +
data[8];
265 if(fabsf(det) <= 1e-9f) {
266 printf(
"Error: Negative determinant\n");
327 float cosAng = cosf(ang);
328 float sinAng = sinf(ang);
352 data[1] = vertical_shear;
353 data[3] = horizontal_shear;
363 if(x_scale <= 0.0f) {
367 if(y_scale <= 0.0f) {
390 #endif // PIC_UTIL_MATRIX_3_X_3_HPP float data[9]
Definition: matrix_3_x_3.hpp:37
Matrix3x3 mul(const Matrix3x3 &mtx)
mul
Definition: matrix_3_x_3.hpp:116
void getIdentity()
getIdentity sets the matrix as an identity matrix; diag(1, 1, 1);
Definition: matrix_3_x_3.hpp:96
void setScaleMatrix(float x_scale, float y_scale)
SetScaleMatrix set the matrix as a scaling matrix.
Definition: matrix_3_x_3.hpp:361
void add(float value)
Add adds a value to the diagonal.
Definition: matrix_3_x_3.hpp:234
The Matrix3x3 class provides methods for managing a 3 by 3 matrix.
Definition: matrix_3_x_3.hpp:29
void print()
print
Definition: matrix_3_x_3.hpp:380
Matrix3x3(float *data)
Matrix3x3.
Definition: matrix_3_x_3.hpp:53
Matrix3x3 * inverse(Matrix3x3 *ret)
inverse computes the inverse of the matrix.
Definition: matrix_3_x_3.hpp:257
void setShearMatrix(float horizontal_shear, float vertical_shear)
SetShearMatrix sets the matrix as a shear matrix.
Definition: matrix_3_x_3.hpp:348
Matrix3x3 * transpose(Matrix3x3 *ret)
transpose computes the transposed matrix.
Definition: matrix_3_x_3.hpp:288
float * mul(float *vec, float *ret)
mul
Definition: matrix_3_x_3.hpp:140
void setTranslationMatrix(float tx, float ty)
setTranslationMatrix sets the matrix as a translation matrix.
Definition: matrix_3_x_3.hpp:308
float * projection(float *vec, float *ret)
projection
Definition: matrix_3_x_3.hpp:186
Matrix3x3 clone()
clone clones the matrix.
Definition: matrix_3_x_3.hpp:62
void set(const float *data)
set sets the matrix up.
Definition: matrix_3_x_3.hpp:74
float * mulH(float *vec, float *ret)
MulH.
Definition: matrix_3_x_3.hpp:163
Definition: bilateral_separation.hpp:25
float determinant()
determinant computes the determinant of the matrix.
Definition: matrix_3_x_3.hpp:245
void setRotationMatrix(float ang)
setRotationMatrix sets the matrix as a rotation matrix
Definition: matrix_3_x_3.hpp:326
void crossProduct(float *t)
crossProduct computes the cross product matrix
Definition: matrix_3_x_3.hpp:211
Matrix3x3()
Matrix3x3.
Definition: matrix_3_x_3.hpp:42