2018-12-08 23:44:41 -07:00
|
|
|
#include "CVector4f.h"
|
|
|
|
|
#include "CTransform4f.h"
|
|
|
|
|
|
2025-12-17 13:44:30 -05:00
|
|
|
#include "Common/FileIO/IInputStream.h"
|
|
|
|
|
#include "Common/FileIO/IOutputStream.h"
|
|
|
|
|
|
2018-12-08 23:44:41 -07:00
|
|
|
CVector4f::CVector4f(IInputStream& rInput)
|
|
|
|
|
{
|
2026-01-12 11:09:45 -05:00
|
|
|
X = rInput.ReadF32();
|
|
|
|
|
Y = rInput.ReadF32();
|
|
|
|
|
Z = rInput.ReadF32();
|
|
|
|
|
W = rInput.ReadF32();
|
2018-12-08 23:44:41 -07:00
|
|
|
}
|
|
|
|
|
|
2026-01-13 21:49:01 -05:00
|
|
|
void CVector4f::Write(IOutputStream& rOutput) const
|
2018-12-08 23:44:41 -07:00
|
|
|
{
|
2026-01-12 14:32:52 -05:00
|
|
|
rOutput.WriteF32(X);
|
|
|
|
|
rOutput.WriteF32(Y);
|
|
|
|
|
rOutput.WriteF32(Z);
|
|
|
|
|
rOutput.WriteF32(W);
|
2018-12-08 23:44:41 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ************ VECTOR/MATRIX ************
|
|
|
|
|
CVector4f CVector4f::operator*(const CTransform4f& rkMtx) const
|
|
|
|
|
{
|
|
|
|
|
CVector4f Out;
|
|
|
|
|
Out.X = (X * rkMtx[0][0]) + (Y * rkMtx[1][0]) + (Z * rkMtx[2][0]);
|
|
|
|
|
Out.Y = (X * rkMtx[0][1]) + (Y * rkMtx[1][1]) + (Z * rkMtx[2][1]);
|
|
|
|
|
Out.Z = (X * rkMtx[0][2]) + (Y * rkMtx[1][2]) + (Z * rkMtx[2][2]);
|
|
|
|
|
Out.W = (X * rkMtx[0][3]) + (Y * rkMtx[1][3]) + (Z * rkMtx[2][3]) + W;
|
|
|
|
|
return Out;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CVector4f::operator*=(const CTransform4f& rkMtx)
|
|
|
|
|
{
|
|
|
|
|
*this = *this * rkMtx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CVector4f CVector4f::operator*(const CMatrix4f& rkMtx) const
|
|
|
|
|
{
|
|
|
|
|
CVector4f Out;
|
|
|
|
|
Out.X = (X * rkMtx[0][0]) + (Y * rkMtx[1][0]) + (Z * rkMtx[2][0]) + (W * rkMtx[3][0]);
|
|
|
|
|
Out.Y = (X * rkMtx[0][1]) + (Y * rkMtx[1][1]) + (Z * rkMtx[2][1]) + (W * rkMtx[3][1]);
|
|
|
|
|
Out.Z = (X * rkMtx[0][2]) + (Y * rkMtx[1][2]) + (Z * rkMtx[2][2]) + (W * rkMtx[3][2]);
|
|
|
|
|
Out.W = (X * rkMtx[0][3]) + (Y * rkMtx[1][3]) + (Z * rkMtx[2][3]) + (W * rkMtx[3][3]);
|
|
|
|
|
return Out;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CVector4f::operator*=(const CMatrix4f& rkMtx)
|
|
|
|
|
{
|
|
|
|
|
*this = *this * rkMtx;
|
|
|
|
|
}
|