for convenience: support matrix-vector multiplication directly in the dense matrix classes
parent
806e9b1733
commit
4ec8a1dd81
|
@ -412,6 +412,15 @@ public:
|
||||||
target.m[1][0] = -m[1][0] * invDet;
|
target.m[1][0] = -m[1][0] * invDet;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Matrix-vector multiplication
|
||||||
|
inline Vector2 operator*(const Vector2 &v) const {
|
||||||
|
return Vector2(
|
||||||
|
m[0][0] * v.x + m[0][1] * v.y,
|
||||||
|
m[1][0] * v.x + m[1][1] * v.y
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -448,6 +457,14 @@ public:
|
||||||
- (m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]))
|
- (m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]))
|
||||||
+ (m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0])));
|
+ (m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0])));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Matrix-vector multiplication
|
||||||
|
inline Vector operator*(const Vector &v) const {
|
||||||
|
return Vector(
|
||||||
|
m[0][0] * v.x + m[0][1] * v.y + m[0][2] * v.z,
|
||||||
|
m[1][0] * v.x + m[1][1] * v.y + m[1][2] * v.z,
|
||||||
|
m[2][0] * v.x + m[2][1] * v.y + m[2][2] * v.z);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -487,6 +504,16 @@ struct MTS_EXPORT_CORE Matrix4x4 : public Matrix<4, 4, Float> {
|
||||||
- (m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]))
|
- (m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]))
|
||||||
+ (m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0])));
|
+ (m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0])));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Matrix-vector multiplication
|
||||||
|
inline Vector4 operator*(const Vector4 &v) const {
|
||||||
|
return Vector4(
|
||||||
|
m[0][0] * v.x + m[0][1] * v.y + m[0][2] * v.z + m[0][3] * v.w,
|
||||||
|
m[1][0] * v.x + m[1][1] * v.y + m[1][2] * v.z + m[1][3] * v.w,
|
||||||
|
m[2][0] * v.x + m[2][1] * v.y + m[2][2] * v.z + m[2][3] * v.w,
|
||||||
|
m[3][0] * v.x + m[3][1] * v.y + m[3][2] * v.z + m[3][3] * v.w
|
||||||
|
);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MTS_NAMESPACE_END
|
MTS_NAMESPACE_END
|
||||||
|
|
Loading…
Reference in New Issue