#define GLUT_DISABLE_ATEXIT
#include <windows.h>
#include "GL/glut.h"
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
static int slices=16;
static int stacks=16;
static void resize(int width,int height)
{
const float ar=(float)width/(float)height;
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-ar,ar,-1.0,1.0,2.0,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}//窗口
static void display(void)
{
static double a=0;//定义a为每次旋转的角度
a=a+0.15;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清除颜色缓冲区和深度缓冲区
//绘制第一个立方体
glColor3d(0,1,1);//画图颜色为浅蓝
glPushMatrix();
glTranslated(3,1.5,-4);//z值取负才可显示
glRotated(0,1,0,0);
glRotated(a,0,0,0);//每次调用display时角度a的值都增加了0.08,实现了跳动
glutSolidCube(0.5); //实心立方体
glPopMatrix();
//绘制第二个立方体
glColor3d(0,1,1);//画图颜色为浅蓝
glPushMatrix();
glTranslated(-3,-1.5,-4);//z值取负才可显示
glRotated(0,1,0,0);
glRotated(a,0,0,0);//每次调用display时角度a的值都增加了0.08,实现了跳动
glutSolidCube(0.5); //实心立方体
glPopMatrix();
//绘制第三个立方体
glColor3d(0,1,1);//画图颜色为浅蓝
glPushMatrix();
glTranslated(-3,1.5,-4);//z值取负才可显示
glRotated(0,1,0,0);//绕x轴1旋转,角度0,不动点为原点
glRotated(a,0,0,0);//每次调用display时角度a的值都增加了0.08,实现了跳动
glutSolidCube(0.5); //实心立方体
glPopMatrix();
//绘制第四个立方体
glColor3d(0,1,1);//画图颜色为浅蓝
glPushMatrix();
glTranslated(3,-1.5,-4);//z值取负才可显示
glRotated(0,1,0,0);//绕x轴1旋转,角度0,不动点为原点
glRotated(a,0,0,0);//每次调用display时角度a的值都增加了0.08,实现了跳动
glutSolidCube(0.5); //实心立方体
glPopMatrix();
//绘制第五个立方体
glColor3d(0,1,1);//画图颜色为浅蓝
glPushMatrix();
glTranslated(3,0,-4);//z值取负才可显示
glRotated(0,1,0,0);//绕x轴1旋转,角度0,不动点为原点
glRotated(a,0,0,0);//每次调用display时角度a的值都增加了0.08,实现了跳动
glutSolidCube(0.5); //实心立方体
glPopMatrix();
//绘制第六个立方体
glColor3d(0,1,1);//画图颜色为浅蓝
glPushMatrix();
glTranslated(-3,0,-4);//z值取负才可显示
glRotated(0,1,0,0);//绕x轴1旋转,角0,不动点为原点
glRotated(a,0,0,0);//每次调用display时角度a的值都增加了0.08,实现了跳动
glutSolidCube(0.5); //实心立方体
glPopMatrix();
//绘制第7个立方体
glColor3d(0,1,1);//画图颜色为浅蓝
glPushMatrix();
glTranslated(0,-1.5,-4);//z值取负才可显示
glRotated(0,1,0,0);//绕x轴1旋转,角度0,不动点为原点
glRotated(a,0,0,0);//每次调用display时角度a的值都增加了0.08,实现了跳动
glutSolidCube(0.5); //实心立方体
glPopMatrix();
//绘制第8个立方体
glColor3d(0,1,1);//画图颜色为浅蓝
glPushMatrix();
glTranslated(0,1.5,-4);//z值取负才可显示
glRotated(0,1,0,0);//绕x轴1旋转,角度0,不动点为原点
glRotated(a,0,0,0);//每次调用display时角度a的值都增加了0.08,实现了跳动
glutSolidCube(0.5); //实心立方体
glPopMatrix();
//绘制第一个小圆
glColor3d(1,0,0);//画图颜色为红色
glPushMatrix();
glTranslated(3,1.5,-3.75);//z值取负才可显示
glRotated(60,1,0,0);//绕x轴1旋转,角度60,不动点为原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现了旋转
glutSolidSphere(0.25,slices,stacks);
glPopMatrix();
//绘制第二个小圆
glColor3d(1,0,0);//画图颜色为红色
glPushMatrix();
glTranslated(-3,-1.5,-3.75);//z值取负才可显示
glRotated(60,1,0,0);//绕x轴1旋转,角度60,不动点为原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现了旋转
glutSolidSphere(0.25,slices,stacks);
glPopMatrix();
//绘制第三个小圆
glColor3d(1,0,0);//画图颜色为红色
glPushMatrix();
glTranslated(3,-1.5,-3.75);//z值取负才可显示
glRotated(60,1,0,0);//绕x轴1旋转,角度60,不动点为原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现了旋转
glutSolidSphere(0.25,slices,stacks);
glPopMatrix();
//绘制第四个小圆
glColor3d(1,0,0);//画图颜色为红色
glPushMatrix();
glTranslated(-3,1.5,-3.75);//z值取负才可显示
glRotated(60,1,0,0);//绕x轴1旋转,角度60,不动点为原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现了旋转
glutSolidSphere(0.25,slices,stacks);
glPopMatrix();
//绘制第6个小圆
glColor3d(1,0,0);//画图颜色为红色
glPushMatrix();
glTranslated(3,0,-3.75);//z值取负才可显示
glRotated(60,1,0,0);//绕x轴1旋转,角度60,不动点为原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现了旋转
glutSolidSphere(0.25,slices,stacks);
glPopMatrix();
//绘制第七个小圆
glColor3d(1,0,0);//画图颜色为红色
glPushMatrix();
glTranslated(-3,0,-3.75);//z值取负才可显示
glRotated(60,1,0,0);//绕x轴1旋转,角度60,不动点为原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现了旋转
glutSolidSphere(0.25,slices,stacks);
glPopMatrix();
//绘制第八个小圆
glColor3d(1,0,0);//画图颜色为红色
glPushMatrix();
glTranslated(0,-1.5,-3.75);//z值取负才可显示
glRotated(60,1,0,0);//绕x轴1旋转,角度60,不动点为原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现了旋转
glutSolidSphere(0.25,slices,stacks);
glPopMatrix();
//绘制第九个小圆
glColor3d(1,0,0);//画图颜色为红色
glPushMatrix();
glTranslated(0,1.5,-3.75);//z值取负才可显示
glRotated(60,1,0,0);//绕x轴1旋转,角度60,不动点为原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现了旋转
glutSolidSphere(0.25,slices,stacks);
glPopMatrix();
//画第一个大圆
glColor3d(0,1,1);//画图的颜色为浅蓝
glPushMatrix();
glTranslated(0,0,-5);//x中为0,y值为0,z为-5,z值取负值才可以显示
glRotated(60,1,0,0);//绕x轴转动,角度60,不动点原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display 时角度a的值都增加了0.08,实现了旋转.
glutSolidSphere(0.3,slices,stacks);//画圆球半径是1,经度数,纬度数分别为16
glPopMatrix();//跳转画下一个
//画第2个大圆
glColor3d(0,1,1);//画图的颜色为浅蓝
glPushMatrix();
glTranslated(0,-0.35,-5);//x中为0,y值为0,z为-5,z值取负值才可以显示
glRotated(60,1,0,0);//绕x轴转动,角度60,不动点原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display 时角度a的值都增加了0.08,实现了旋转.
glutSolidSphere(0.3,slices,stacks);//画圆球半径是1,经度数,纬度数分别为16
glPopMatrix();//跳转画下一个
//画第一个小球
glColor3d(1,1,0);//画图的颜色为黄色
glPushMatrix();
glTranslated(0.125,0.125,-3);//x中为0。5,y值为0.5,z为-3,z值取负值才可以显示设定位置
glRotated(60,1,0,0);//绕x轴转动,角度60,不动点原点
glRotated(a,1,0,0);//x轴旋转,每次调用display 时角度a的值都增加了0.15,实现了旋转。
glutSolidSphere(0.05,slices,stacks);//画圆球半径是1,经度数,纬度数分别为16
glPopMatrix();
//画第二个小球
glColor3d(1,1,0);//画图的颜色为黄色
glPushMatrix();
glTranslated(-0.125,0.125,-3);//x中为0,y值为0,z为-6,z值取负值才可以显示
glRotated(60,1,0,0);//绕x轴转动,角度60,不动点原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现丁旋转
glutSolidSphere(0.05,slices,stacks);//画圆球半径是1,经度数,纬度数分别为16
glPopMatrix();
//画第三个小球
glColor3d(1,1,0);//画图的颜色为黄色
glPushMatrix();
glTranslated(-0.20,-0.15,-3);//x中为0,y值为0,z为-6,z值取负值才可以显示
glRotated(60,1,0,0);//绕x轴转动,角度60,不动点原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现丁旋转
glutSolidSphere(0.05,slices,stacks);//画圆球半径是1,经度数,纬度数分别为16
glPopMatrix();
//画第四个小球
glColor3d(1,1,0);//画图的颜色为黄色
glPushMatrix();
glTranslated(0.20,-0.15,-3);
glRotated(60,1,0,0);//绕x轴转动,角度60,不动点原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现丁旋转
glutSolidSphere(0.05,slices,stacks);//画圆球半径是1,经度数,纬度数分别为16
glPopMatrix();
//画第五个小球
glColor3d(1,1,0);//画图的颜色为黄色
glPushMatrix();
glTranslated(0.1,-0.38,-3);//x中为0,y值为0,z为-6,z值取负值才可以显示
glRotated(60,1,0,0);//绕x轴转动,角度60,不动点原点
glRotated(a,0,0,1);//绕z轴旋转,每次调用display时角度a的值都增加了0.08,实现丁旋转
glutSolidSphere(0.05,slices,stacks);//画圆球半径是1,经度数,纬度数分别为16
glPopMatrix();
//画第六个小球
glColor3d(1,1,0);//画图的颜色为黄色
glPushMatrix();
glTranslated(-0.1,-0.38,-3);//x中为0,y值�
评论3