矢量 3 矩阵乘法
Vector3 Matrix Multiplication
本文关键字:矢量 更新时间:2023-10-16
假设我们有:
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]);
}
如果没有,你能带领我朝着正确的方向前进吗?
你的代码似乎没问题。我假设,当您使用 OpenGL 时,您的矩阵是按列主顺序排列的,并且当您想在 4x4 矩阵上乘以大小为 3 的向量时,您的第四个向量坐标是 1
.
但是,由于您显然在做计算机图形学,由于坐标均匀,您应该使用大小为 4 的向量。我也不太明白,为什么你想在矩阵上乘以向量,反之亦然。
相关文章:
- 分段故障(堆芯转储)矢量
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 将二维矢量传递给类
- 读取文件并输入到矢量中
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 无法通过空白将文本文件行分隔为矢量
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 正在将csv文件读取为双精度矢量
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何通过 getter 函数删除矢量的元素?
- 如何在C++中将数组转换为矢量指针
- 在C++中将矢量转换为嵌套地图
- C++矢量迭代
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 将矢量<T>转换为矢量<数组<T>>
- 指针或结构的矢量
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 用于矢量处理的多个线程
- 反向矢量3
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中