Advertisement
KeithS

Untitled

Jan 4th, 2012
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.59 KB | None | 0 0
  1. #define _USE_MATH_DEFINES
  2. #include <allegro5/allegro.h>
  3. #include <allegro5/allegro_primitives.h>
  4. #include <math.h>
  5.  
  6. void matrix_2D_handler(float _angle, float _Matrix_2D[][2], float &_x_pos, float &_y_pos)
  7. {
  8.     float New_X = 0.0f;
  9.     float New_Y = 0.0f;
  10.  
  11.     // X axis
  12.     _Matrix_2D[0][0] = cosf(_angle);
  13.     _Matrix_2D[0][1] = -sinf(_angle);
  14.     New_X = (_Matrix_2D[0][0] * _x_pos) + (_Matrix_2D[0][1] * _y_pos);
  15.  
  16.     // Y axis
  17.     _Matrix_2D[1][0] = sinf(_angle);
  18.     _Matrix_2D[1][1] = cos(_angle);
  19.     New_Y = (_Matrix_2D[1][0] * _x_pos) + (_Matrix_2D[1][1] * _y_pos);
  20.  
  21.     _x_pos = New_X;
  22.     _y_pos = New_Y;
  23. }
  24.  
  25. // Needs to be radians.
  26. float deg_to_rad(float deg)
  27. {
  28.     return deg * ((float)M_PI / 180.0f);
  29. }
  30.  
  31. int main(int argc, char *argv[])
  32. {
  33.     int SCREEN_X = 800;
  34.     int SCREEN_Y = 600;
  35.  
  36.     float FPS = 60.0f;
  37.  
  38.     float degree_rotate_angle = 0.5f;
  39.  
  40.     bool loop = true;
  41.     bool draw = false;
  42.  
  43.     float x_pos = 175.0f;
  44.     float y_pos = 25.0f;
  45.  
  46.     float Matrix_2D[2][2] = {{0.0f,0.0f}, {0.0f,0.0f}};
  47.  
  48.     ALLEGRO_DISPLAY *display = NULL;
  49.     ALLEGRO_EVENT_QUEUE *event_queue = NULL;
  50.     ALLEGRO_TIMER *timer = NULL;
  51.  
  52.     al_init();
  53.     al_init_primitives_addon();
  54.    
  55.     //al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_SUGGEST);
  56.     display = al_create_display(SCREEN_X, SCREEN_Y);
  57.     event_queue = al_create_event_queue();
  58.     timer = al_create_timer(1.0f / FPS);
  59.  
  60.     al_register_event_source(event_queue, al_get_display_event_source(display));
  61.     al_register_event_source(event_queue, al_get_timer_event_source(timer));
  62.    
  63.     al_start_timer(timer);
  64.  
  65.     while(loop)
  66.     {
  67.         ALLEGRO_EVENT event;
  68.         al_wait_for_event(event_queue, &event);
  69.  
  70.         switch(event.type)
  71.         {
  72.             case ALLEGRO_EVENT_DISPLAY_CLOSE:
  73.                 loop = false;
  74.                 break;
  75.  
  76.             case ALLEGRO_EVENT_TIMER:
  77.                 draw = true;
  78.                 break;
  79.  
  80.             default:
  81.                 break;
  82.         }
  83.  
  84.         if(draw == true)
  85.         {
  86.             draw = false;
  87.             al_clear_to_color(al_map_rgb(0,0,0));
  88.             matrix_2D_handler(deg_to_rad(degree_rotate_angle), Matrix_2D, x_pos, y_pos);
  89.             al_draw_circle(x_pos  + ((float)SCREEN_X / 2.0f), y_pos + ((float)SCREEN_Y / 2.0f), 10.0f, al_map_rgb(200,0,50), 0.0f);
  90.             al_flip_display();
  91.         }
  92.  
  93.     }
  94.  
  95.     // Clean up...
  96.     al_stop_timer(timer);
  97.     al_destroy_timer(timer);
  98.     al_flush_event_queue(event_queue);
  99.     al_destroy_event_queue(event_queue);
  100.     al_destroy_display(display);
  101.  
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement