void Vector4D::operator*=(const Matrix4x4& _multipliedMat4) { Vector4D tempVec(*this); Vector4D matRow1(_multipliedMat4.GetRow(0)); Vector4D matRow2(_multipliedMat4.GetRow(1)); Vector4D matRow3(_multipliedMat4.GetRow(2)); Vector4D matRow4(_multipliedMat4.GetRow(3)); m_x = StaticFunctions::Dot(matRow1, tempVec); m_y = StaticFunctions::Dot(matRow2, tempVec); m_z = StaticFunctions::Dot(matRow3, tempVec); m_w = StaticFunctions::Dot(matRow4, tempVec); }
Vector4D Vector4D::operator*(const Matrix4x4& _multipliedMat4) const { Vector4D result; Vector4D matRow1(_multipliedMat4.GetRow(0)); Vector4D matRow2(_multipliedMat4.GetRow(1)); Vector4D matRow3(_multipliedMat4.GetRow(2)); Vector4D matRow4(_multipliedMat4.GetRow(3)); result.m_x = StaticFunctions::Dot(matRow1, (*this)); result.m_y = StaticFunctions::Dot(matRow2, (*this)); result.m_z = StaticFunctions::Dot(matRow3, (*this)); result.m_w = StaticFunctions::Dot(matRow4, (*this)); return result; }
void IceMaths::NormalizePRSMatrix(Matrix4x4& dest, Point& scale, const Matrix4x4& src) { Point row; dest = src; for( int i=0;i<3;i++) { src.GetRow(i,row); // computes scales scale[i] = row.Magnitude(); row /= scale[i]; dest.SetRow(i,row); } }