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


Anmelden zum Antworten