osg.Matrix3Template是OpenSceneGraph库中的一个用于处理3x3矩阵的模板类。其实现了3x3矩阵的基本运算,例如矩阵乘法、矩阵加法、矩阵减法、矩阵转置等。
Matrix3()
默认构造函数。构造一个3x3的矩阵,其元素值为0。
Matrix3(T a00, T a01, T a02,
T a10, T a11, T a12,
T a20, T a21, T a22)
构造一个3x3的矩阵,其元素值为提供的参数。
设置矩阵的元素值为提供的参数。
void set(T a00, T a01, T a02,
T a10, T a11, T a12,
T a20, T a21, T a22)
将矩阵设置为单位矩阵。
void makeIdentity()
将矩阵设置为一个绕着指定轴旋转指定角度的旋转矩阵。
void makeRotate(const T& angle, const Vec3d& axis)
两个3x3矩阵的乘法运算。
Matrix3 operator*(const Matrix3& rhs) const
两个3x3矩阵的加法运算。
Matrix3 operator+(const Matrix3& rhs) const
两个3x3矩阵的减法运算。
Matrix3 operator-(const Matrix3& rhs) const
返回矩阵的转置矩阵。
Matrix3 transpose() const
使用默认构造函数构造一个3x3的矩阵并将其打印出来:
#include <osg/Matrix3Template>
#include <iostream>
int main()
{
osg::Matrix3d m;
std::cout << m << std::endl;
return 0;
}
输出:
0 0 0
0 0 0
0 0 0
构造一个旋转矩阵并将其打印出来:
#include <osg/Matrix3Template>
#include <iostream>
int main()
{
osg::Matrix3d m;
m.makeRotate(osg::PI/2, osg::Vec3d(0,0,1));
std::cout << m << std::endl;
return 0;
}
输出:
0 -1 0
1 0 0
0 0 1
计算两个矩阵相加:
#include <osg/Matrix3Template>
#include <iostream>
int main()
{
osg::Matrix3d m1(1, 2, 3,
4, 5, 6,
7, 8, 9);
osg::Matrix3d m2(1, 1, 1,
1, 1, 1,
1, 1, 1);
osg::Matrix3d m3 = m1 + m2;
std::cout << m3 << std::endl;
return 0;
}
输出:
2 3 4
5 6 7
8 9 10