Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 给定方向和位置,如何用GLM计算旋转矩阵_C++_Glm Math - Fatal编程技术网

C++ 给定方向和位置,如何用GLM计算旋转矩阵

C++ 给定方向和位置,如何用GLM计算旋转矩阵,c++,glm-math,C++,Glm Math,我正在计算一个模型矩阵,它可以传递给着色器。但是我不知道如何计算矩阵的旋转部分。我有两个向量:一个是位置,一个是朝向,下面是代码: glm::mat4x4 CalcModelMatrix( const glm::vec3& position, const glm::vec3& orientation ) { glm::mat4x4 model( 1.f ); // displacement model = glm::translate( model, positio

我正在计算一个模型矩阵,它可以传递给着色器。但是我不知道如何计算矩阵的旋转部分。我有两个向量:一个是位置,一个是朝向,下面是代码:

glm::mat4x4 CalcModelMatrix( const glm::vec3& position, const glm::vec3& orientation )
{
  glm::mat4x4 model( 1.f );

  // displacement
  model = glm::translate( model, position );

  // rotation
  // ... 

  // scaling 
  model = glm::scale( model, glm::vec3( 1.f ) );

  return model;
}

我尝试使用std::atan2来计算组件角度,然后一个接一个地应用这些角度,并使用计算出的上方向向量来应用glm::lookAt,但我无法理解

有了euler,你会吃亏的。你需要使用四元数

您需要根据旋转需要构建四元数,然后可以使用mat4旋转矩阵=四元数::toMat4(四元数)将其切换回mat4;实现完整的模型矩阵