コード例 #1
0
ファイル: TD_GL_5_1.c プロジェクト: JulieNguyenD/2016-IG
/* Fonction de gestion du clavier spetial */
void Special_key(int key, int x, int y) 
{

  switch (key) 
  {
	case GLUT_KEY_RIGHT:  		
		left_right+= 0.03;
		rotate_camera(left_right);
		break; 

	case GLUT_KEY_LEFT:  		
		left_right-= 0.03;
		rotate_camera(left_right);
		break; 
	
	case GLUT_KEY_UP:  		 
		move_camera(0.02);
		break; 
        
 	case GLUT_KEY_DOWN:  		    
		move_camera(-0.02);
		break;    

  default:
    break;
  }   

   glutPostRedisplay();
   glutSwapBuffers();

}
コード例 #2
0
ファイル: billard.c プロジェクト: JulieNguyenD/2016-IG
/* Fonction de gestion du clavier spetial */
void Special_key(int key, int x, int y)
{
  switch (key)
  {
	case GLUT_KEY_RIGHT:
		left_right+= 0.03;
		rotate_camera(left_right);
		break;

	case GLUT_KEY_LEFT:
		left_right-= 0.03;
		rotate_camera(left_right);
		break;

	case GLUT_KEY_UP:
		move_camera(0.02);
		break;

 	case GLUT_KEY_DOWN:
		move_camera(-0.02);
		break;

    case GLUT_KEY_PAGE_DOWN:
        QueueRot+=1.0;

        queue_p[0] = Ecart * sin(DEGTORAD(QueueRot)) + (sphere_p[0][0]);
        queue_p[1] = sphere_p[1][0];
        queue_p[2] = Ecart * cos(DEGTORAD(QueueRot)) + (sphere_p[2][0]);

        queue_ip[0] = Ecart * sin(DEGTORAD(QueueRot)) + (sphere_p[0][0]);
        queue_ip[1] = sphere_ip[1][0];
        queue_ip[2] = Ecart * cos(DEGTORAD(QueueRot)) + (sphere_p[2][0]);

        break;

    case GLUT_KEY_PAGE_UP:
        QueueRot-=1.0;


        queue_p[0] = Ecart * sin(DEGTORAD(QueueRot)) + (sphere_p[0][0]);
        queue_p[1] = sphere_p[1][0];
        queue_p[2] = Ecart * cos(DEGTORAD(QueueRot)) + (sphere_p[2][0]);

        queue_ip[0] = Ecart * sin(DEGTORAD(QueueRot)) + (sphere_p[0][0]);
        queue_ip[1] = sphere_ip[1][0];
        queue_ip[2] = Ecart * cos(DEGTORAD(QueueRot)) + (sphere_p[2][0]);

        break;

  default:
    break;
  }

   glutPostRedisplay();
   glutSwapBuffers();

}
コード例 #3
0
ファイル: rotate_object.c プロジェクト: osoliver/raytracer
int				rotate_object(t_env *env, int axis, int more_less)
{
	t_mov		mov[3];

	mov[0] = rotate_y;
	mov[1] = rotate_x;
	mov[2] = rotate_z;
	if (!env->selected)
		rotate_camera(env, axis, more_less);
	mov[axis](env, axis, more_less);
	return (1);
}
コード例 #4
0
ファイル: main.cpp プロジェクト: nestori/aery32-lcd
int main()
{
	set_perspective(1, 100.0);
	
	init();
	//clear the screen
	draw_rect(0,0,320,240,0x0);
	flush_to_lcd();
	
	uint32_t count = 1;
	char str[10];
	
	uint16_t colors[] = {0xF800, 0xF600, 0x7E0, 0x1F, 0xFFFF,0xF800, 0xF600, 0x7E0, 0x1F, 0xFFFF,0xF800, 0xF600, 0x7E0, 0x1F, 0xFFFF};

	//int16_t centerx = 320/2;
	//int16_t centery = 240/2;
	
	//int16_t polysize = 30;
	
	
	int16_t rot = 0;
	
	polygon poly;
	
	#ifdef FORAERY
	for (;;)
	#endif
	{
		count = 0;
		START_MEASURING_CYCLES();
		rot++;
		if (rot >= 360) rot = 0;
		
		/*
		for (int i = 0; i < 15; i++)
		{
			poly.x0 = (i-7)*20+centerx+lcd_cos(rot+120)*polysize;
			poly.y0 = centery+lcd_sin(rot+120)*polysize;
			poly.x1 = (i-7)*20+centerx+lcd_cos(rot+120*2)*polysize;
			poly.y1 = centery+lcd_sin(rot+120*2)*polysize;
			poly.x2 = (i-7)*20+centerx+lcd_cos(rot+120*3)*polysize;
			poly.y2 = centery+lcd_sin(rot+120*3)*polysize;
			draw_b_poly(poly, colors[i]);
		}
		for (int i = 0; i < 15; i++)
		{
			poly.x0 = (i-7)*20+centerx+lcd_cos(rot+120)*polysize;
			poly.y0 = 20+centery+lcd_sin(rot+120)*polysize;
			poly.x1 = (i-7)*20+centerx+lcd_cos(rot+120*2)*polysize;
			poly.y1 = 20+centery+lcd_sin(rot+120*2)*polysize;
			poly.x2 = (i-7)*20+centerx+lcd_cos(rot+120*3)*polysize;
			poly.y2 = 20+centery+lcd_sin(rot+120*3)*polysize;
			draw_b_poly(poly, colors[i]);
		}
		*/
 
				translate_camera(Vector3D(0,1,4));		
		rotate_camera(20,lcd_sin(rot)*180.0, 0);
		
		Polygon3D p;
		
		//front
		p.p0 = Vector3D(-1, 1, 1);
		p.p1 = Vector3D(-1,-1, 1);
		p.p2 = Vector3D( 1,-1, 1);
		draw_poly3D(p, colors[0]);
		
		p.p0 = Vector3D(-1, 1, 1);
		p.p1 = Vector3D( 1,-1, 1);
		p.p2 = Vector3D( 1, 1, 1);
		draw_poly3D(p, colors[0]);
		
		//left side
		p.p0 = Vector3D(-1, 1, -1);
		p.p1 = Vector3D(-1,-1, -1);
		p.p2 = Vector3D(-1,-1, 1);
		draw_poly3D(p, colors[1]);
		
		p.p0 = Vector3D(-1, 1,-1);
		p.p1 = Vector3D(-1,-1, 1);
		p.p2 = Vector3D(-1, 1, 1);
		draw_poly3D(p, colors[1]);
		
		//right side
		
		p.p0 = Vector3D( 1, 1, 1);
		p.p1 = Vector3D( 1,-1, 1);
		p.p2 = Vector3D( 1,-1,-1);
		draw_poly3D(p, colors[2]);
		
		p.p0 = Vector3D( 1, 1, 1);
		p.p1 = Vector3D( 1,-1,-1);
		p.p2 = Vector3D( 1, 1,-1);
		draw_poly3D(p, colors[2]);
		
		//backside
		
		p.p0 = Vector3D( 1, 1,-1);
		p.p1 = Vector3D( 1,-1,-1);
		p.p2 = Vector3D(-1,-1,-1);
		draw_poly3D(p, colors[3]);
		
		p.p0 = Vector3D( 1, 1,-1);
		p.p1 = Vector3D(-1,-1,-1);
		p.p2 = Vector3D(-1, 1,-1);
		draw_poly3D(p,colors[3]);
		
		//top
		
		p.p0 = Vector3D(-1, 1,-1);
		p.p1 = Vector3D(-1, 1, 1);
		p.p2 = Vector3D( 1, 1, 1);
		draw_poly3D(p, colors[4]);
		
		p.p0 = Vector3D(-1, 1,-1);
		p.p1 = Vector3D( 1, 1, 1);
		p.p2 = Vector3D( 1, 1,-1);
		draw_poly3D(p, colors[4]);
		
		
		draw_poly_buffer();
		draw_text(str,0,220,0xF800);
		flush_to_lcd();
		
		END_MEASURING_CYCLES(count);
		#ifdef FORAERY
		itoa(66000000/count,str);
		#endif
	}

	#ifdef FORPC
	while (sfmlwindow.isOpen())
	{
		//input
		sf::Vector2i localPosition = sf::Mouse::getPosition(sfmlwindow);
		
		if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
		{
			//std::cout<<"x: " <<localPosition.x << " y: " << localPosition.y <<"\n";
		}
		sf::Event eventti;
		while (sfmlwindow.pollEvent(eventti))
		{
			switch(eventti.type)
			{
				case sf::Event::Closed:
					sfmlwindow.close();
					break;
				default:
					break;
			}
			
		}
		//logic
		
		rot++;
		if (rot >= 360) rot = 0;
		
		translate_camera(Vector3D(0,1,4));		
		rotate_camera(20,lcd_sin(rot)*180.0, 0);
		
		Polygon3D p;
		
		//front
		p.p0 = Vector3D(-1, 1, 1);
		p.p1 = Vector3D(-1,-1, 1);
		p.p2 = Vector3D( 1,-1, 1);
		draw_poly3D(p, colors[0]);
		
		p.p0 = Vector3D(-1, 1, 1);
		p.p1 = Vector3D( 1,-1, 1);
		p.p2 = Vector3D( 1, 1, 1);
		draw_poly3D(p, colors[0]);
		
		//left side
		p.p0 = Vector3D(-1, 1, -1);
		p.p1 = Vector3D(-1,-1, -1);
		p.p2 = Vector3D(-1,-1, 1);
		draw_poly3D(p, colors[1]);
		
		p.p0 = Vector3D(-1, 1,-1);
		p.p1 = Vector3D(-1,-1, 1);
		p.p2 = Vector3D(-1, 1, 1);
		draw_poly3D(p, colors[1]);
		
		//right side
		
		p.p0 = Vector3D( 1, 1, 1);
		p.p1 = Vector3D( 1,-1, 1);
		p.p2 = Vector3D( 1,-1,-1);
		draw_poly3D(p, colors[2]);
		
		p.p0 = Vector3D( 1, 1, 1);
		p.p1 = Vector3D( 1,-1,-1);
		p.p2 = Vector3D( 1, 1,-1);
		draw_poly3D(p, colors[2]);
		
		//backside
		
		p.p0 = Vector3D( 1, 1,-1);
		p.p1 = Vector3D( 1,-1,-1);
		p.p2 = Vector3D(-1,-1,-1);
		draw_poly3D(p, colors[3]);
		
		p.p0 = Vector3D( 1, 1,-1);
		p.p1 = Vector3D(-1,-1,-1);
		p.p2 = Vector3D(-1, 1,-1);
		draw_poly3D(p,colors[3]);
		
		//top
		
		p.p0 = Vector3D(-1, 1,-1);
		p.p1 = Vector3D(-1, 1, 1);
		p.p2 = Vector3D( 1, 1, 1);
		draw_poly3D(p, colors[4]);
		
		p.p0 = Vector3D(-1, 1,-1);
		p.p1 = Vector3D( 1, 1, 1);
		p.p2 = Vector3D( 1, 1,-1);
		draw_poly3D(p, colors[4]);
		
		
		draw_poly_buffer();
		draw_text(str,0,220,0xF800);
		
		flush_to_lcd();

		
		//render
		simscreen_render();
		sfmlwindow.display();
		//sleep
		sf::sleep(sf::milliseconds(33));
	}
	#endif
	return 0;
}