OpenGL中矩阵的平移与旋转的顺序问题

        GLfloat m1[16];
        glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glLoadIdentity();
	glTranslatef(-r1[0], -r1[1], 0);  
	glRotatef(theta, rotatev.m_fVec[0], rotatev.m_fVec[1], rotatev.m_fVec[2]); 
        glGetFloatv(GL_MODELVIEW_MATRIX, m1);
	glPopMatrix();
得到m1矩阵,可以对其他坐标进行平移旋转变换



但此处有个顺序要注意,OpenGL的平移旋转都是相对于坐标系来的,而且是按照列向量矩阵进行右乘。


所以,当自己想做平移旋转的时候,平移旋转的量一般都是相对于一个坐标系A。


如果先旋转后平移,那么对于OpenGL来说是先旋转了坐标系A得坐标系B,然后按照此时的坐标系B做平移变换,这个平移变换必然不是我们期望在原坐标系A中的平移变换。


所以先平移后旋转才没有问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenGL是一种开放源代码的图形库,用于开发二维和三维图形应用程序。其支持光照、平移旋转和缩放等功能。 光照是在OpenGL实现逼真和真实感的一个重要方面。通过对物体表面的光照进行计算和模拟,可以模拟出光线在真实世界的表现。OpenGL提供了多种光照模型和光源类型,如平行光照、点光源和聚光灯等。通过设置光源的属性,如位置、颜色和强度,可以控制光照的效果。同时,还可以设置材质的属性,如漫反射、镜面反射和环境光反射等,以使物体表面具有不同的反射特性。 平移旋转和缩放是控制物体在OpenGL位置、方向和大小的重要操作。通过平移(Translation),可以改变物体的位置。通过旋转(Rotation),可以改变物体的方向。通过缩放(Scaling),可以改变物体的大小。这些操作可以通过设置模型视图矩阵来实现,将物体的顶点坐标进行相应的变换。平移旋转和缩放都可以相对于世界坐标系进行,也可以相对于物体自身坐标系进行。 在OpenGL,可以通过矩阵操作来实现平移旋转和缩放。平移可以通过将物体的位置矩阵与一个平移矩阵相乘来实现。旋转可以通过将物体的方向矩阵与一个旋转矩阵相乘来实现。缩放可以通过将物体的大小矩阵与一个缩放矩阵相乘来实现。通过改变这些矩阵的数值,可以控制物体在空间的位置、方向和大小。 总结来说,OpenGL提供了一系列的函数和接口,可以实现光照、平移旋转和缩放等操作,使得开发者可以自由控制物体的表现和行为。这些功能在图形应用程序非常重要,可以帮助开发者创建出逼真和动态的图形效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值