Files

53 lines
1.5 KiB
C++
Raw Permalink Normal View History

#include "CVector4f.h"
#include "CTransform4f.h"
2025-12-17 13:44:30 -05:00
#include "Common/FileIO/IInputStream.h"
#include "Common/FileIO/IOutputStream.h"
CVector4f::CVector4f(IInputStream& rInput)
{
X = rInput.ReadF32();
Y = rInput.ReadF32();
Z = rInput.ReadF32();
W = rInput.ReadF32();
}
2026-01-13 21:49:01 -05:00
void CVector4f::Write(IOutputStream& rOutput) const
{
2026-01-12 14:32:52 -05:00
rOutput.WriteF32(X);
rOutput.WriteF32(Y);
rOutput.WriteF32(Z);
rOutput.WriteF32(W);
}
// ************ 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;
}