旋转矩阵未正确应用于向量

Posted

技术标签:

【中文标题】旋转矩阵未正确应用于向量【英文标题】:rotation matrix is not getting applied correctly to a vector 【发布时间】:2018-11-19 18:14:08 【问题描述】:

我正在尝试学习 OpenGL 中的转换,并且我正在使用 glm 进行数学计算。我有一个向量&我想对该向量应用一些旋转。但我得到的输出为vec3(0,0,0)

#define GLM_ENABLE_EXPERIMENTAL
#include <glm/ext/matrix_float4x4.hpp> // mat4x4
#include <glm/ext/matrix_transform.hpp> // translate, rotate, scale, identity
#include <glm/gtx/string_cast.hpp>
#include<iostream>
int main()
        //define  a 4x4 model matrix
        glm::mat4 model;
        //define a vector
        glm::vec4 Position = glm::vec4(glm::vec3(0.4,0.2,0.2), 1.0);
        //create a model matrix with rotation of 45 degrees around z aixs
        model = glm::rotate(model,  45.0f, glm::vec3(0.0f, 0.0f, 1.0f));        
        //print the final vector position after rotation is applied
        std::cout<< glm::to_string(model*Position) <<std::endl;
        return 0;

【问题讨论】:

Why is the sprite not rendering in OpenGL?的可能重复 【参考方案1】:

您没有初始化模型矩阵。 应该是:

glm::mat4 model = glm::mat4(1.0f);

将其初始化为单位矩阵。

【讨论】:

但为什么要初始化为单位矩阵? 您可以将其初始化为您想要的任何内容。但是如果你想让模型矩阵只包含你必须使用标识的旋转,旋转乘以标识就是旋转。

以上是关于旋转矩阵未正确应用于向量的主要内容,如果未能解决你的问题,请参考以下文章

旋转矩阵

旋转矩阵旋转向量欧拉角四元数的关系

旋转矩阵公式,是啥?

11个号中5保5旋转矩阵公式

matlab练习程序(求向量间的旋转矩阵与四元数)

3D数学基础