GLM:将vec3乘以3x3转换矩阵可得出奇怪的结果

时间:2018-06-25 01:33:14

标签: glm-math

我有一个通过实验性glm::mat3函数构造的glm::translate(mat3,vec2)。但是,使用此矩阵修改vec3会得出时髦的结果。这是一个简短的程序演示:

#define GLM_ENABLE_EXPERIMENTAL

#include <glm/glm.hpp>
#include <glm/gtx/matrix_transform_2d.hpp>
#include <iostream>

std::ostream& operator<< (std::ostream& o, const glm::vec3& vec){
    return o << '(' << vec.x << ',' << vec.y << ',' << vec.z << ")\n";
}

int main(){
    glm::mat3 translate = glm::translate(glm::mat3(1.), glm::vec2(-1.,-1.));

    std::cout << glm::vec3(10.,10.,1.);                  //prints (10,10,1)
    std::cout << glm::vec3(10.,10.,1.) * translate;      //prints (10,10,-19)
}

我的矩阵有什么问题导致其修改Z坐标而不是平移它?

1 个答案:

答案 0 :(得分:0)

您的操作顺序错误;您想要translate * glm::vec3(10, 10, 1)