Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Ce sketch, n'est pas de moi, je le poste juste pour une question
- void BouncingColoredBalls(int BallCount, byte colors[][3])
- {
- float Gravity = -9.81;
- int StartHeight = 1;
- float Height[BallCount];
- float ImpactVelocityStart = sqrt( -2 * Gravity * StartHeight );
- float ImpactVelocity[BallCount];
- float TimeSinceLastBounce[BallCount];
- int Position[BallCount];
- long ClockTimeSinceLastBounce[BallCount];
- float Dampening[BallCount];
- for (int i = 0 ; i < BallCount ; i++)
- {
- TestBP ();
- ClockTimeSinceLastBounce[i] = millis();
- Height[i] = StartHeight;
- Position[i] = 0;
- ImpactVelocity[i] = ImpactVelocityStart;
- TimeSinceLastBounce[i] = 0;
- Dampening[i] = 0.90 - float(i)/pow(BallCount,2);
- }
- while (true)
- {
- for (int i = 0 ; i < BallCount ; i++)
- {
- TimeSinceLastBounce[i] = millis() - ClockTimeSinceLastBounce[i];
- Height[i] = 0.5 * Gravity * pow( TimeSinceLastBounce[i]/1000 , 2.0 ) + ImpactVelocity[i] * TimeSinceLastBounce[i]/1000;
- if ( Height[i] < 0 )
- {
- Height[i] = 0;
- ImpactVelocity[i] = Dampening[i] * ImpactVelocity[i];
- ClockTimeSinceLastBounce[i] = millis();
- if ( ImpactVelocity[i] < 0.01 )
- {
- ImpactVelocity[i] = ImpactVelocityStart;
- }
- }
- Position[i] = round( Height[i] * (NUM_LEDS1 - 1) / StartHeight);
- }
- for (int i = 0 ; i < BallCount ; i++)
- {
- setPixel(Position[i],colors[i][0],colors[i][1],colors[i][2]);
- }
- showStrip();
- TestBP ();
- setAll(0,0,0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement