Advertisement
xerpi

parable C

Apr 2nd, 2012
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.07 KB | None | 0 0
  1. #include <oslib/oslib.h>
  2. #include "methods.h"
  3.  
  4. PSP_MODULE_INFO("Test", 0, 1, 1);
  5. PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
  6.  
  7.  
  8. float gravity, angle, speed;
  9. float x, y;
  10. void oslDrawParable(float x0, float y0, float speed, float angle, float gravity, int length, OSL_COLOR color);
  11.  
  12. int main(void) {
  13.     oslInit(0);
  14.     oslInitGfx(OSL_PF_8888, 1);
  15.     oslIntraFontInit(INTRAFONT_CACHE_MED); 
  16.    
  17.     x = 20;
  18.     y = 262;
  19.    
  20.     gravity = 9.8;
  21.     speed = 45;
  22.     angle = 340;
  23.    
  24.     while(!osl_quit){
  25.         CleanRead();
  26.         oslDrawLine(0, 262, 480, 262, RGB(255, 0, 0));
  27.        
  28.         //if(osl_keys->pressed.cross)
  29.             //drawParable(x, y, speed, angle, gravity);
  30.             oslDrawParable(x, y, speed, angle, gravity, 50, RGB(0, 0, 255));
  31.         //Angle
  32.             if(osl_keys->held.L)   angle -= 1;
  33.             if(osl_keys->held.R)   angle += 1;
  34.         //X,Y
  35.             if(abs(osl_keys->analogY) > 50){
  36.                 y = y +osl_keys->analogY/50 ;  
  37.             }
  38.             if(abs(osl_keys->analogX) > 50){
  39.                 x = x + osl_keys->analogX/50 ; 
  40.             }
  41.         //Speed
  42.             if(osl_keys->held.right)    speed += 0.1;
  43.             if(osl_keys->held.left)     speed -= 0.1;  
  44.         //Gravity
  45.             if(osl_keys->held.up)    gravity += 0.05;
  46.             if(osl_keys->held.down)  gravity -= 0.05;      
  47.        
  48.         oslDrawLine(x, y-10, x, y+10, RGB(0, 0, 0));
  49.         oslDrawLine(x-10, y, x+10, y, RGB(0, 0, 0));
  50.         oslDrawLine(x , y, x + cos( toRad(angle) )* 40, y + sin( toRad(angle) )* 40, RGB(255, 0, 255));
  51.        
  52.         oslDrawStringf(5, 5, "angle: %i", (int)angle);
  53.         oslDrawStringf(5, 15, "x: %i  y: %i ", (int)x, (int)y);
  54.         oslDrawStringf(5, 25, "speed: %f   gravity: %f", speed, gravity);
  55.         Render();
  56.     }
  57.  
  58.     oslEndGfx();
  59.     oslQuit();
  60.     return 0;
  61. }
  62.  
  63. void oslDrawParable(float x0, float y0, float speed, float angle, float gravity, int length, OSL_COLOR color){
  64.     if(speed == 0.0f) return;
  65.     int i;
  66.     float x, y, oldx, oldy, speed_x, speed_y;
  67.     speed_x = oslCosf( toRad(angle) ) * speed;
  68.     speed_y = oslSinf( toRad(angle) ) * speed;
  69.     oldx = x0;
  70.     oldy = y0;
  71.     for(i = 0; i < length; i++){
  72.         x = x0 + speed_x*i;
  73.         y = y0 + speed_y*i + (gravity/2) * (i*i);
  74.         oslDrawLine(oldx, oldy, x, y, color);
  75.         oldx = x;
  76.         oldy = y;
  77.  
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement