Gamematrix erstellt 2
This commit is contained in:
parent
c3dc997071
commit
00bb22347f
@ -34,3 +34,43 @@ namespace Matrix3D {
|
||||
t[2][3] = pos.z;
|
||||
return t;
|
||||
}
|
||||
|
||||
Mat4 rot3D(double angle_deg, char axis) {
|
||||
Mat4 r = identity();
|
||||
|
||||
double rad = angle_deg * M_PI / 180.0;
|
||||
double c = std::cos(rad);
|
||||
double s = std::sin(rad);
|
||||
|
||||
switch(axis) {
|
||||
case 'x': case 'X':
|
||||
r[1][1] = c; r[1][2] = -s;
|
||||
r[2][1] = s; r[2][2] = c;
|
||||
break;
|
||||
|
||||
case 'y': case 'Y':
|
||||
r[0][0] = c; r[0][2] = s;
|
||||
r[2][0] = -s; r[2][2] = c;
|
||||
break;
|
||||
|
||||
case 'z': case 'Z':
|
||||
r[0][0] = c; r[0][1] = -s;
|
||||
r[1][0] = s; r[1][1] = c;
|
||||
break;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
Vec3 operator*(const Mat4& M, const Vec3& v) {
|
||||
Vec3 out;
|
||||
out.x = M[0][0]*v.x + M[0][1]*v.y + M[0][2]*v.z + M[0][3];
|
||||
out.y = M[1][0]*v.x + M[1][1]*v.y + M[1][2]*v.z + M[1][3];
|
||||
out.z = M[2][0]*v.x + M[2][1]*v.y + M[2][2]*v.z + M[2][3];
|
||||
return out;
|
||||
}
|
||||
|
||||
Mat4 operator*(const Mat4& A, const Mat4& B) {
|
||||
return matmul(A, B);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user