Files
CMExamples/math/RotateMatrix.cpp
2025-07-07 00:26:59 +08:00

39 lines
991 B
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include<glm/glm.hpp>
#include<glm/gtx/quaternion.hpp>
#include<iostream>
void PrintMatrix(const char *name,const glm::mat4 &m)
{
std::cout<<"Matrix:"<<name<<"\n";
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
std::cout<<m[i][j]<<" ";
std::cout<<"\n";
}
std::cout<<"\n";
}
int main(int,char **)
{
const glm::vec3 rotate_axis(0.0f,1.0f,0.0f); // Y-axis
const float rotate_radians=glm::radians(90.0f);
glm::quat q =glm::angleAxis(rotate_radians,rotate_axis);
glm::mat4 m1=glm::toMat4(q);
glm::mat4 m2=glm::rotate(glm::mat4(1.0f),rotate_radians,rotate_axis);
float cos90=glm::cos(rotate_radians);
float acos90_1=glm::acos(cos90);
float acos90_2=glm::acos(5.96046e-08);
//m1方法结果是5.96046e-08
//m2方法结果是-4.37114e-08
//但其实它们结果是一样的都是近似于0的数值。
PrintMatrix("From Quaternion",m1);
PrintMatrix("From Rotate",m2);
return 0;
}