Untitled
unknown
c_cpp
a year ago
1.7 kB
5
Indexable
struct matrix_t {
matrix_t() {}
matrix_t(
float m00, float m01, float m02, float m03,
float m10, float m11, float m12, float m13,
float m20, float m21, float m22, float m23)
{
mat_val[0][0] = m00; mat_val[0][1] = m01; mat_val[0][2] = m02; mat_val[0][3] = m03;
mat_val[1][0] = m10; mat_val[1][1] = m11; mat_val[1][2] = m12; mat_val[1][3] = m13;
mat_val[2][0] = m20; mat_val[2][1] = m21; mat_val[2][2] = m22; mat_val[2][3] = m23;
}
void init(const vec3_t& xAxis, const vec3_t& yAxis, const vec3_t& zAxis, const vec3_t& vecOrigin) {
mat_val[0][0] = xAxis.x; mat_val[0][1] = yAxis.x; mat_val[0][2] = zAxis.x; mat_val[0][3] = vecOrigin.x;
mat_val[1][0] = xAxis.y; mat_val[1][1] = yAxis.y; mat_val[1][2] = zAxis.y; mat_val[1][3] = vecOrigin.y;
mat_val[2][0] = xAxis.z; mat_val[2][1] = yAxis.z; mat_val[2][2] = zAxis.z; mat_val[2][3] = vecOrigin.z;
}
matrix_t(const vec3_t& xAxis, const vec3_t& yAxis, const vec3_t& zAxis, const vec3_t& vecOrigin) {
init(xAxis, yAxis, zAxis, vecOrigin);
}
inline void set_origin(const vec3_t& p) {
mat_val[0][3] = p.x;
mat_val[1][3] = p.y;
mat_val[2][3] = p.z;
}
inline void invalidate() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
mat_val[i][j] = VEC_T_NAN;
}
}
}
float* operator[](int i) { ASSERT((i >= 0) && (i < 3)); return mat_val[i]; }
const float* operator[](int i) const { ASSERT((i >= 0) && (i < 3)); return mat_val[i]; }
float* base() { return &mat_val[0][0]; }
const float* base() const { return &mat_val[0][0]; }
float mat_val[3][4];
};Editor is loading...
Leave a Comment