Wie position von Partikel berechnen??
-
Hi.
Ich möchte gerne Funken haben, weiß aber nicht wie ich die Positionen berechen.Hab mal'n bischen runmprobiert, hab aber nicht wirklich sinnvolles zustande gebracht:
static int value = 101; value--; funken[i].y += rand()%3; funken[i].x += cos(value + rand()%10);
(Alle werte, berechnungen, und Opperationen sind durch Testen und ausprobieren zustande gekommen.)
ps.: fals es interessiert: zum Testen benutze ich SDL, später möchte ich das aber mit SetPixel (GDI) in meinem Fenster anzeigen
-
particle
z.b.
class CParticle { CVector4 m_Position; CVector3 m_Direction; public: . . . };
dazu kannst du dir ein paar wichtige werte für das particlesystem definieren z.b.
StartSpeed=... Gravitation=...
dann gibst du den particlen beim start einen zufälligen wert nach oben
for(jeden particle a im vector) m_Particles[a] = CParticle(CVector4(0.f,0.f,0.f,1.f),CVector3(cos(13*a),1.f,sin(3*a)).Normalise()*StartSpeed);
und in jedem durchlauf
for(jeden particle a im vector) { m_Particles[a].Directions() += CVector3(0.f,-1.f,0.f)*Gravitation; m_Particles[a].Position() += m_Particles[a].Direction(); }
und als kleine zusatz für funken kann man natürlich noch einbauen dass sie vom boden wieder hochprallen
for(jeden particle a im vector) { if(m_Particles[a].Position().Y()+m_Particles[a].Direction()<GroundHeight) m_Particles[a].Direction() = -m_Particles[a].Direction();
nicht schön, aber sollte vom logischen her verständlich sein
rapso->greets();
-
danke