OPengl实现小球围绕大球旋转的效果

一些特殊函数的介绍
  1. glutWireSphere(r,s1,s2) 该函数用于渲染一个球体(由线条构成球体)。球体球心位于原点。在OpenGL中默认的原点就是窗口客户区的中心;
    r 是球的半径,s1是以Z轴上线段为直径分布的圆周线的条数,s2是围绕在Z轴周围的线的条数

  2. glRotatef(-80.0f,10.0f,1.0f,0.0f) 表示将当前图形沿方向向量(-10,1,0)顺时针旋转80度

  3. glTranslatef(0.0f,-20.0f,-40.0f) 表示将当前图形向x轴平移0,向y轴平移-20,向z轴平移-40

  4. 注意如果先旋转在绘制,则是表现为自转;而先绘制在旋转,再移动一定距离,是为了到达绘公转的地方

  5. 我们在变换坐标的时候,使用的是glTranslatef(),glRotaef()等函数来操作,操作的是什么呢?操作的是当前矩阵,我们也知道,这些坐标变换(翻转,旋转也好)都是通过操作矩阵来实现的,而矩阵相乘是会叠加的,当你用完一个变换函数后,当前操作的矩阵就被改变了,当你还停留在变换以前的思维,我在这个地方绘制恰好是我想要的时候,你会发现再绘制出来的不是在你想要的位置,因为你在操作变换的时候,当前矩阵被改变了。

    当你做了一些移动或旋转等变换后,使用glPushMatrix();OpenGL 会把这个变换后的位置和角度保存起来。然后你再随便做第二次移动或旋转变换,再用glPopMatrix();OpenGL 就把刚刚保存的那个位置和角度恢复。

实验截图

这里写图片描述

代码如下
#include "GL\glut.h"

static int year = 
  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值