1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
typedef struct
{
double Xpos,Ypos,Zpos;
double Xmov,Ymov,Zmov;
double Red,Green,Blue;
double Direction;
double Acceleration;
double Deceleration;
double Scalez;
bool Visible;
}PARTICLES;
PARTICLES Particule[ParticleCount];
void Particle::glCreateParticles (void) {
int i;
for (i = 1; i < ParticleCount; i++)
{
Particule[i].Xpos = -2.5;
Particule[i].Ypos = 0.8;
Particule[i].Zpos = 2.5;
Particule[i].Xmov = (((((((2 - 1 + 1) * rand()%11) + 1) - 1 + 1) * rand()%11) + 1) * 0.005) - (((((((2 - 1 + 1) * rand()%11) + 1) - 1 + 1) * rand()%11) + 1)* 0.005);
Particule[i].Ymov = 0.8;
Particule[i].Zmov = (((((((2 - 1 + 1) * rand()%11) + 1) - 1 + 1) * rand()%11) + 1) * 0.005) - (((((((2 - 1 + 1) * rand()%11) + 1) - 1 + 1) * rand()%11) + 1) * 0.005);
Particule[i].Red = 1;
Particule[i].Green = 1;
Particule[i].Blue = 1;
Particule[i].Scalez = 0.25;
Particule[i].Acceleration = ((((((8 - 5 + 2) * rand()%11) + 5) - 1 + 1) * rand()%11) + 1) * 0.02;
Particule[i].Deceleration = 0.0500;
}
}
void Particle::glUpdateParticles (void) {
int i;
for (i = 1; i < ParticleCount; i++)
{
glColor3f (Particule[i].Red, Particule[i].Green, Particule[i].Blue);
Particule[i].Deceleration = Particule[i].Deceleration + 0.0025;
Particule[i].Ypos = Particule[i].Ypos + Particule[i].Acceleration - Particule[i].Deceleration;
//L'eau se disperse a l'altitude 0.8
if(Particule[i].Ypos > 0.8) {
Particule[i].Xpos = Particule[i].Xpos + Particule[i].Xmov;
Particule[i].Zpos = Particule[i].Zpos + Particule[i].Zmov;
}
if (Particule[i].Ypos < 0 || Particule[i].Ypos > 3)
{
Particule[i].Xpos = -2.5;
Particule[i].Ypos = 0.8;
Particule[i].Zpos = 2.5;
Particule[i].Red = 1;
Particule[i].Green = 1;
Particule[i].Blue = 1;
Particule[i].Acceleration = ((((((8 - 5 + 2) * rand()%11) + 5) - 1 + 1) * rand()%11) + 1) * 0.02;
Particule[i].Deceleration = 0.0500;
}
}
} |
Partager