You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

glm中vec4平移操作无效(x、y无变化),缩放旋转功能正常

问题分析:GLM平移矩阵对向量无影响的原因

核心问题是矩阵与向量的乘法顺序搞反了。

GLM采用列主序矩阵存储,遵循图形学标准的矩阵左乘向量规则(即矩阵 * 向量)。你当前代码里写的是向量 * 矩阵,这会被GLM解释为行向量右乘矩阵——而平移矩阵的平移分量存储在第四列,行向量乘该矩阵时,平移项无法作用到x、y分量上,所以结果和平移前完全一致。

修正后的代码如下:

mat4 c = mat4(1.f);
c = translate(c, vec3(10, 10, 0));
vec4 dv1 = c * vec4(line1s[i].x, line1s[i].y, 1.f, 1.f);

修改后,矩阵的平移分量会正确作用到向量的x、y分量上,得到你预期的平移结果。需要注意:GLM的translate函数生成的平移矩阵,平移量默认放在第四列位置,只有矩阵左乘列向量时,才能正确触发平移变换。

内容的提问来源于stack exchange,提问作者PlayMek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 23:58:10