1、OSG节点平移原理
物体的节点位置P(x,y,z,1),现调用函数osg::Matrix::translate(a, b,c)对其平移,节点的位置将会到达Pl(x+a,y+b,z+c,1)。那么存在一个矩阵M使得 P*M=P1该矩阵为:
通过P与M的乘积,就能得到P1的值。那么OSG中物体的平移其实就是物体的坐标与该M矩阵相乘的结果。
2、OSG节点旋转原理
物体的节点位置P(x,y,z,1),现调用函数osg::Matrix::translate(a, b,c)对其平移,节点的位置将会到达Pl(x+a,y+b,z+c,1)。那么存在一个矩阵M使得 P*M=P1该矩阵为:
通过P与M的乘积,就能得到P1的值。那么OSG中物体的平移其实就是物体的坐标与该M矩阵相乘的结果。
2、OSG节点旋转原理
OSG中对物体的旋转是通过osg::Matrix::rotate ()函数来实现的,该函数能指定绕某一坐标轴旋转某一角度。如果物体原始位置P(x,y,z,1),现调用osg:Matrix::rotate(a, b,c,0),节点将会绕 X, Y, Z 轴分布旋转 a,b, c 角度到达n点。事实证明存在旋转矩阵Mx,My, Mz,使得P*Mx*My*Mz=n。
3 OSG节点缩放原理
节点缩放能够通过osg::Matrix::scale()函数来实现,它能够让物体在某一个轴的方向缩放某一个程度。己知物体节点在X,Y, Z方向的向量大小分别为X,y,Z,如果该节点调用osg::Matrix::scale(a,b,c),那么该物体的大小将会在X,Y,Z轴方向被缩放a,b,c倍。存在如下矩阵: