#include “stdafx.h”
#include <stdlib.h>
#include <math.h>
#include <glut.h>
static float angle=0.0, ratio;
static float x=0.0f, y=1.75f, z=5.0f;
static float lx=0.0f, ly=0.0f, lz=-1.0f;
static GLint snowman_Display_list,sun_list;
float deltaAngle=0.0f;
int deltaMove=0;
GLfloat red=1.0, blue=0.0, green=1.0;
void ChangeSize(int w, int h)
{
if (h==0)h=1;
ratio=1.0f+w/h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(0, 0, w, h);
gluPerspective(45, ratio, 1, 1000);
glMatrixMode(GL_MODELVIEW);
gluLookAt(x, y, z, x+lx, y, z+lz, 0.0f, 1.0f, 0.0f);
}
void Drawsun()
{
glPushMatrix();
glTranslatef (0,13,-50);
glColor3f(0.99,0.99,0.20);
glutSolidSphere (4,20,20);
glPopMatrix();
}
void DrawSnowman()
{
glColor3f(1.0f, 1.0f, 1.0f);
glTranslatef(0.0f, 0.5f, 0.0f);
//glutSolidSphere(0.75f, 20, 20);
glutSolidCube (1.0);
glPushMatrix();
glColor3f(0.2f, 0.7f, 0.3f);
glTranslatef(0.0f, 0.0f, 0.50f);
glutSolidSphere (0.03,20,20);
glTranslatef(0.0f, -0.25f, 0.0f);
glutSolidSphere (0.03,20,20);
glTranslatef(0.0f, 0.5f, 0.0f);
glutSolidSphere (0.03,20,20);
glPopMatrix();
glColor3f(1.0f, 1.0f, 1.0f);
glTranslatef(0.0f, 0.75f, 0.0f);
glutSolidSphere(0.25f, 20, 20);
glColor3b (90,50,100);
glTranslatef(0.27f, 0.0f, 0.0f);
glutSolidSphere(0.05f, 20, 20);
glTranslatef(-0.54f, 0.0f, 0.0f);
glutSolidSphere(0.05f, 20, 20);
glTranslatef(0.27f, 0.0f, 0.0f);
glPushMatrix();
glColor3f(0.0f, 0.0f, 0.0f);
glTranslatef(0.05f, 0.10f, 0.18f);
glutSolidSphere(0.05f, 10, 10);
glTranslatef(-0.1f, 0.0f, 0.0f);
glutSolidSphere(0.05f, 10, 10);
glPopMatrix();
glColor3f(1.0f, 0.5f, 0.2f);
glRotatef(0.0f, 1.0f, 0.0f, 0.0f);
glutSolidCone(0.08, 0.5f, 10, 2);
}
void OrientMe(float ang)
{
lx=sin(ang);
lz=-cos(ang);
glLoadIdentity();
gluLookAt(x, y, z, x+lx, y, z+lz, 0.0f, 1.0f, 0.0f);
}
void MoveMeFlat(int i)
{
x=x+i*(lx)*0.1;
z=z+i*(lz)*0.1;
glLoadIdentity();
gluLookAt(x, y, z, x+lx, y, z+lz, 0.0f, 1.0f, 0.0f);
}
|
دیدگاهتان را بنویسید