Advertisement
claudiusmarius

BouncingColoredBalls

Jan 5th, 2022
782
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. // Ce sketch, n'est pas de moi, je le poste juste pour une question
  2.  
  3.  
  4.  
  5. void BouncingColoredBalls(int BallCount, byte colors[][3])
  6.    
  7.   {
  8.   float Gravity = -9.81;
  9.   int StartHeight = 1;
  10.   float Height[BallCount];
  11.   float ImpactVelocityStart = sqrt( -2 * Gravity * StartHeight );
  12.   float ImpactVelocity[BallCount];
  13.   float TimeSinceLastBounce[BallCount];
  14.   int   Position[BallCount];
  15.   long  ClockTimeSinceLastBounce[BallCount];
  16.  
  17.   float Dampening[BallCount];
  18.  
  19.  
  20.   for (int i = 0 ; i < BallCount ; i++)
  21.   {  
  22.  
  23.   TestBP ();
  24.    
  25.   ClockTimeSinceLastBounce[i] = millis();
  26.   Height[i] = StartHeight;
  27.   Position[i] = 0;
  28.   ImpactVelocity[i] = ImpactVelocityStart;
  29.   TimeSinceLastBounce[i] = 0;
  30.   Dampening[i] = 0.90 - float(i)/pow(BallCount,2);
  31.   }
  32.  
  33.   while (true)
  34.  
  35.   {
  36.   for (int i = 0 ; i < BallCount ; i++)
  37.   {
  38.   TimeSinceLastBounce[i] =  millis() - ClockTimeSinceLastBounce[i];
  39.   Height[i] = 0.5 * Gravity * pow( TimeSinceLastBounce[i]/1000 , 2.0 ) + ImpactVelocity[i] * TimeSinceLastBounce[i]/1000;
  40.  
  41.   if ( Height[i] < 0 )
  42.   {                      
  43.   Height[i] = 0;
  44.   ImpactVelocity[i] = Dampening[i] * ImpactVelocity[i];
  45.   ClockTimeSinceLastBounce[i] = millis();
  46.   if ( ImpactVelocity[i] < 0.01 )
  47.   {
  48.   ImpactVelocity[i] = ImpactVelocityStart;
  49.   }
  50.   }
  51.  
  52.   Position[i] = round( Height[i] * (NUM_LEDS1 - 1) / StartHeight);
  53.   }
  54.   for (int i = 0 ; i < BallCount ; i++)
  55.   {
  56.   setPixel(Position[i],colors[i][0],colors[i][1],colors[i][2]);
  57.   }
  58.   showStrip();
  59.    
  60.   TestBP ();
  61.    
  62.   setAll(0,0,0);
  63.   }
  64.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement