我知道这两个函数都是用于在局部空间中移动某物,但我不完全清楚为什么会有两个函数,并且在哪些情况下会使用一个而不是另一个。这些函数似乎在我看来至少在计算方面是相同的。唯一的区别是,一个函数返回一个向量,另一个函数返回一个矩阵。有任何想法吗?
Vector3 Func(Vector3 vec, Matrix4x4 mtx)
{
Vector3 res = new Vector3();
res.x = mtx[0, 0] * vec.x + mtx[0, 1] * vec.y + mtx[0, 2] * vec.z + mtx[0, 3];
res.y = mtx[1, 0] * vec.x + mtx[1, 1] * vec.y + mtx[1, 2] * vec.z + mtx[1, 3];
res.z = mtx[2, 0] * vec.x + mtx[2, 1] * vec.y + mtx[2, 2] * vec.z + mtx[2, 3];
return res;
}
Matrix4x4 Func2(Matrix4x4 mtx, Vector3 vec)
{
Matrix4x4 res = new Matrix4x4();
res[0, 3] = mtx[0, 0] * vec.x + mtx[0, 1] * vec.y + mtx[0, 2] * vec.z + mtx[0, 3];
res[1, 3] = mtx[1, 0] * vec.x + mtx[1, 1] * vec.y + mtx[1, 2] * vec.z + mtx[1, 3];
res[2, 3] = mtx[2, 0] * vec.x + mtx[2, 1] * vec.y + mtx[2, 2] * vec.z + mtx[2, 3];
return res;
}
评论 (0)