Vector3 Матричное Умножение

Допустим, у нас есть:

Vector3 vec;//has some random values
Matrix4x4 mat;//has some random values as well

Теперь я хочу умножить их, чтобы получить Vector3 из этого.

Vector3 mult = vec * mat;

Будет ли эта функция выполнять это:

void Matrix4x4::Transform( Vector3 &oPoint )
{
float fX = oPoint.GetX();
float fY = oPoint.GetY();
float fZ = oPoint.GetZ();

oPoint.SetX( fX * this->matrix[0][0] + fY * this->matrix[0][1] + fZ * this->matrix[0][2] + this->matrix[0][3]);
oPoint.SetY( fX * this->matrix[1][0] + fY * this->matrix[1][1] + fZ * this->matrix[1][2] + this->matrix[1][3]);
oPoint.SetZ( fX * this->matrix[2][0] + fY * this->matrix[2][1] + fZ * this->matrix[2][2] + this->matrix[2][3]);
}

Если нет, можете ли вы привести меня в правильном направлении.

1

Решение

Ваш код, кажется, в порядке. Я предполагаю, что, поскольку вы используете OpenGL, ваша матрица находится в главном порядке столбцов, и что, когда вы хотите умножить вектор размера 3 на матрицу 4×4, ваша четвертая векторная координата 1,

Но, как вы, очевидно, делаете компьютерную графику, вы должны использовать векторы размера 4 из-за однородных координат. Также я не очень понимаю, почему вы хотите умножить вектор на матрицу, а не наоборот.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]