void drawBouquet(float r, float g, float b)
{
	
	mvstack.push(model_view);
		model_view *= RotateX(-90);
		set_colour(r,g,b);
		drawCone();

		model_view *= RotateX(90);
		model_view *= Translate(0.0f, 2.0f, 0.0f);
		drawFlower();

		mvstack.push(model_view);
			model_view *= RotateZ(25);
			model_view *= Translate(-1.0f, 0.25f, 0.0f);
			drawFlower();
		model_view = mvstack.pop();

		mvstack.push(model_view);
			model_view *= RotateZ(-25);
			model_view *= Translate(1.0f, 0.25f, 0.0f);
			drawFlower();
		model_view = mvstack.pop();
	model_view = mvstack.pop();
}
/*********************************************************
**********************************************************
**********************************************************

    PROC: display()
    DOES: this gets called by the event handler to draw
          the scene, so this is where you need to build
          your ROBOT --  
      
        MAKE YOUR CHANGES AND ADDITIONS HERE

    Add other procedures if you like.

**********************************************************
**********************************************************
**********************************************************/
void display(void)
{
    // Clear the screen with the background colour (set in myinit)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    model_view = mat4(1.0f);
    
    model_view *= Translate(0.0f, -5.0f, -15.0f);
    HMatrix r;
    Ball_Value(Arcball,r);

    mat4 mat_arcball_rot(
        r[0][0], r[0][1], r[0][2], r[0][3],
        r[1][0], r[1][1], r[1][2], r[1][3],
        r[2][0], r[2][1], r[2][2], r[2][3],
        r[3][0], r[3][1], r[3][2], r[3][3]);
    model_view *= mat_arcball_rot;
        
    glUniformMatrix4fv( uView, 1, GL_TRUE, model_view );


    // Previously glScalef(Zoom, Zoom, Zoom);
    model_view *= Scale(Zoom);

    //draw objects
    drawGround();
    drawBee();
    drawFlower();

    glutSwapBuffers();
    if(Recording == 1)
        FrSaver.DumpPPM(Width, Height);
}
Exemple #3
0
/*********************************************************
**********************************************************
**********************************************************
 
    PROC: display()
    DOES: this gets called by the event handler to draw
          the scene, so this is where you need to build
          your ROBOT --  
      
        MAKE YOUR CHANGES AND ADDITIONS HERE
 
    Add other procedures if you like.
 
**********************************************************
**********************************************************
**********************************************************/
void display(void)
{
	// Clear the screen with the background colour (set in myinit)
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	mat4 model_trans(1.0f);
	mat4 view_trans(1.0f);

	view_trans *= Translate(0.0f, 0.0f, -15.0f);
	HMatrix r;
	Ball_Value(Arcball, r);

	mat4 mat_arcball_rot(
		r[0][0], r[0][1], r[0][2], r[0][3],
		r[1][0], r[1][1], r[1][2], r[1][3],
		r[2][0], r[2][1], r[2][2], r[2][3],
		r[3][0], r[3][1], r[3][2], r[3][3]);
	view_trans *= mat_arcball_rot;
	view_trans *= Scale(Zoom);

	glUniformMatrix4fv(uView, 1, GL_TRUE, model_view);

	model_view = view_trans;

	mvstack.push(model_view);
	drawGround(view_trans);
	model_view = mvstack.top();
	mvstack.pop();

	model_view *= Translate(0, -10, 0);

	drawFlower();
	drawBee();
	glutSwapBuffers();
	if (Recording == 1)
		FrSaver.DumpPPM(Width, Height);
}
	void draw(Pixmap pixmap, XInfo &xinfo){	//NOTE: 'pixmap' is only used for double buffering, if applicable
		if (x>-50 && x<800)
			drawFlower(xinfo, xinfo.gc[0], x,y);
	}
void drawDiaoSi(float r, float g, float b)
{
	mvstack.push(model_view);
		model_view *= Translate(0.0f, 1.0f, 0.0f);

		// Draw Head
		mvstack.push(model_view);
			model_view *= RotateY(90);
			if(timeline < 7.0f)
				model_view *= RotateX(-30+timeline*7);

			if(timeline > 8.0f && timeline < 9.0f) {
				model_view *= Translate(0.0f, 3.0f, 0.0f);
				drawExclam();
				model_view *= Translate(0.0f, -3.0f, 0.0f);
			}
			if(timeline > 13.5f && -temp > -90 && timeline < 18.0)
				model_view *= RotateY(-temp);
			else if(timeline > 13.5 && -temp <= -90 && timeline < 18.0)
				model_view *= RotateY(-90);

			if(timeline > 18) {
				if(timeline < 19.75 && -90+temp*1.25 < 0)
					model_view *= RotateY(-90+temp*1.25);
				if(timeline > 24.0)
					if(-temp*30 > -90 && timeline < 27.0)
						model_view *= RotateY(-temp*30);
					else
						model_view *= RotateY(-90);
				if(timeline > 27.25 && timeline < 29.5)
					model_view *= RotateX(temp*30);
				if(timeline > 29.5 && timeline < 30.5) {
					mvstack.push(model_view);
						model_view *= Translate(0.0f, 2.0f, 0.0f);
						model_view *= Scale(0.5f, 0.5f, 0.5f);
						drawBulb();
					model_view = mvstack.pop();
				}
				if(timeline > 36.5 && timeline < 37.0)
				{
					mvstack.push(model_view);
						model_view *= Translate(0.0f, 3.0f, 0.0f);
						drawExclam();
					model_view = mvstack.pop();
				}
				if(timeline > 45.0 && timeline < 48.0) {
					model_view*=RotateX(temp7/2);
				}
				if(timeline > 54.5)
						model_view *= RotateY(temp*2);
			}

			//Draw Hearts
			drawDSHearts();

			set_colour(r, g, b);
			drawSphere();
			set_colour(0.0f, 0.0f, 0.0f);
			model_view *= Translate(0.5f, 0.0f, 0.75f);
			model_view *= Scale(0.25f, 0.25f, 0.25f);
			drawSphere();
			model_view *= Translate(-4.0f, 0.0f, 0.0f);
			drawSphere();
		model_view = mvstack.pop();

		set_colour(r, g, b);
		model_view *= Translate(0.0f, -2.0f, 0.0f);
		model_view *= Scale(1.0f, 1.21f, 1.0f);
		model_view*=RotateX(90);
		drawCylinder();
	model_view = mvstack.pop();

	// Draw Arms
	mvstack.push(model_view);


	    mvstack.push(model_view);
		model_view *= Translate(1.25f, -0.5f, 0.0f);
		if(timeline>30.5&&timeline<55)
			model_view*=RotateY(-60);
		model_view *= RotateY(-90);
		model_view*=Scale(.5,.5,1);
		drawCylinder();
		model_view = mvstack.pop();

		model_view *= Translate(-2.5+1.25f, 0.0-0.5f, 0.0f);
		if(timeline>30.5&&timeline<43)
			model_view*=RotateY(60);
		model_view *= RotateY(90);
		model_view*=Scale(.5,.5,1);
		drawCylinder();

		if(timeline > 30.5) {
			mvstack.push(model_view);
			model_view *= Translate(-1.0f, 2.0f, -1.0f);
			model_view *= RotateX(350);
			model_view *= RotateY(0);
			if(timeline < 55.0)
				drawFlower();
			model_view = mvstack.pop();
		}
	model_view = mvstack.pop();

	// Draw Legs Sitting
	mvstack.push(model_view);

		model_view *= Translate(0.5f, -2.0f, 1.0f);

		if((timeline > 20.0f && timeline < 23.0f) ||
			(timeline > 24.0f && timeline < 27.0f))
			model_view *= RotateX(moveLegs);
		
		if(timeline < 30.5)
			{
				model_view*=RotateX(30);
				model_view*=Scale(1,1,1.7);
				mvstack.push(model_view);
				model_view*=Translate(0,0,0);
				model_view*=Scale(.5,.5,1);
				drawCylinder();
				model_view = mvstack.pop();
		    }


		if((timeline > 20.0f && timeline < 23.0f) ||
			(timeline > 24.0f && timeline < 27.0f))
			model_view *= RotateX(-moveLegs);

		model_view *= Translate(-1.0f, 0.0f, 0.0f);

		if((timeline > 20.0f && timeline < 23.0f) ||
			(timeline > 24.0f && timeline < 27.0f))

			model_view *= RotateX(-moveLegs);

		if(timeline < 30.5)
			{
				model_view*=Scale(.5,.5,1);
				drawCylinder();
		    }

	model_view = mvstack.pop();

	// Draw Legs Standing
	if(timeline >= 30.5f && timeline < 55.0f) 
	{
		set_colour(r,g,b);
		model_view *= Translate(0.5f, -2.6f, 0.0f);
		mvstack.push(model_view);
			if(timeline < 35.0 && temp2 < 520)
				model_view *= RotateX(moveLegs);

			model_view *= RotateX(90);
			model_view*=Scale(.5,.5,1);
			model_view*=Scale(1,1,1);
			drawCylinder();
		model_view = mvstack.pop();
		
		model_view *= Translate(-1.0f, 0.0f, 0.0f);
		
		mvstack.push(model_view);
			if(timeline < 35.0 && temp2 < 520)
				model_view *= RotateX(-moveLegs);
			
			model_view *= RotateX(90);
			model_view*=Scale(.5,.5,1);
			model_view*=Scale(1,1,1);
			drawCylinder();
		model_view = mvstack.pop();
	}
}