C++ GLM翻译问题

C++ GLM翻译问题,c++,matrix,3d,transformation,glm-math,C++,Matrix,3d,Transformation,Glm Math,我有一个模型,如果我有一个变换矩阵glm::mat4并且上方向向量是glm::vec4 up(矩阵[1]),我想沿着它的轴移动它

我有一个模型,如果我有一个变换矩阵
glm::mat4
并且上方向向量是
glm::vec4 up(矩阵[1]),我想沿着它的轴移动它up*=d然后
矩阵=glm::translate(矩阵,向上)
,结果矩阵不会向右移动模型,例如,如果上方向向量id
(0,0.707106769,0.707106769)
“模型绕X轴旋转45d”,我想将其移动5个单位,使平移向量为(0,3.535533845,3.535533845)然后,在平移之后,位置组件仅在Y轴上改变,因此它仅沿Y轴移动。

GLM的
平移源代码:

template<typename T, qualifier Q>
GLM_FUNC_QUALIFIER mat<4, 4, T, Q> translate(mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v)
{
    mat<4, 4, T, Q> Result(m);
    Result[3] = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3];
    return Result;
}
您想要的效果可以通过以下方式实现:

1)

// pre-multiply (i.e. the applied translation comes AFTER)
matrix = translation * matrix;
或等效地,在模型的局部基础上构造转换:


GLM的
翻译源代码

template<typename T, qualifier Q>
GLM_FUNC_QUALIFIER mat<4, 4, T, Q> translate(mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v)
{
    mat<4, 4, T, Q> Result(m);
    Result[3] = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3];
    return Result;
}
您想要的效果可以通过以下方式实现:

1)

// pre-multiply (i.e. the applied translation comes AFTER)
matrix = translation * matrix;
或等效地,在模型的局部基础上构造转换: