Exemplo n.º 1
0
        private DynamicParticle StworzCzasteczke(int i) //i pomocnicza
        {
            DynamicParticle czasteczka;
            Random          rand = new Random();
            float           kat  = MathHelper.Lerp(MinObrot, MaxObrot, (float)(i + 1) / (float)Ilosc);
            float           Sin  = (float)Math.Sin(kat);
            float           Cos  = (float)Math.Cos(kat);
            float           DoR  = MathHelper.Lerp(MinDoR, MaxDoR, (float)(rand.Next(0, 100) / 100f));
            float           OdR  = MathHelper.Lerp(MinOdR, MaxOdR, (float)(rand.Next(0, 100) / 100f));

            czasteczka = new DynamicParticle((int)(Sin * OdR + (float)X), (int)(-Cos * OdR + (float)Y), rand.Next(MinSzer, MaxSzer), rand.Next(MinWys, MaxWys),
                                             Color.Lerp(MinSKolor, MaxSKolor, ((float)rand.Next(0, 1000)) / 1000f),
                                             Color.Lerp(MinKKolor, MaxKKolor, ((float)rand.Next(0, 1000)) / 1000f), rand.Next(MinT, MaxT));
            czasteczka.Vmax = 10f; //moze poruszac sie z ogromna predkoscia

            //wpierw oblcize dokad ma doleciec nastepna czasteczka

            Vector2 dokad = new Vector2(Sin * DoR + (float)X, -Cos * DoR + (float)Y);


            switch (Ruch)
            {
            case Rodzaj_Ruchu.RuchJednostajny:
                czasteczka.RuchJednostajny(dokad);
                break;

            case Rodzaj_Ruchu.RuchPrzyspieszony:
                czasteczka.RuchJednostajny(dokad);
                break;
            }
            if (Przyczepiaj)
            {
                czasteczka.Przyczep(PrzyczepienieKto);
            }
            return(czasteczka);
        }
Exemplo n.º 2
0
        private DynamicParticle StworzCzasteczke(int i) //i pomocnicza
        {
            DynamicParticle czasteczka;
            Random          rand = new Random();

            czasteczka = new DynamicParticle(X, Y, rand.Next(MinSzer, MaxSzer), rand.Next(MinWys, MaxWys),
                                             Color.Lerp(MinSKolor, MaxSKolor, ((float)rand.Next(0, 100)) / 100f),
                                             Color.Lerp(MinKKolor, MaxKKolor, ((float)rand.Next(0, 100)) / 100f), rand.Next(MinT, MaxT));
            czasteczka.Vmax = 100f;


            float helpX = 0f, helpY = 0f;
            float helpobrot = Obrot - (float)Math.PI;


            switch (Ulozenie)
            {
            case Rodzaj_Dziala.Cosinusowe:
            {
                float ile   = (float)(i + 1) / (float)Ilosc * (float)Math.PI;
                float obrot = (float)Math.Sin(ile) * MathHelper.Lerp(MinObrot, MaxObrot, (float)(rand.Next(0, 100) / 100f)) + helpobrot;
                helpX  = (float)Math.Sin(obrot) * MathHelper.Lerp(MinR, MaxR, (float)rand.Next(0, 100) / 100f);
                helpY -= (float)Math.Cos(obrot) * MathHelper.Lerp(MinR, MaxR, (float)rand.Next(0, 100) / 100f);
            }
            break;

            case Rodzaj_Dziala.Losowo:
            {
                float ile   = (float)rand.Next(0, 100) / 100f * (float)Math.PI;
                float obrot = (float)Math.Sin(ile) * MathHelper.Lerp(MinObrot, MaxObrot, (float)(rand.Next(0, 100) / 100f)) + helpobrot;
                helpX  = (float)Math.Sin(obrot) * MathHelper.Lerp(MinR, MaxR, (float)rand.Next(0, 100) / 100f);
                helpY -= (float)Math.Cos(obrot) * MathHelper.Lerp(MinR, MaxR, (float)rand.Next(0, 100) / 100f);
            }
            break;

            case Rodzaj_Dziala.Rownomierne:
            {
                float ile   = (float)(i + 1) / (float)Ilosc;
                float obrot = ile * MathHelper.Lerp(MinObrot, MaxObrot, (float)(rand.Next(0, 100) / 100f)) + helpobrot;
                helpX  = (float)Math.Sin(obrot) * MathHelper.Lerp(MinR, MaxR, (float)rand.Next(0, 100) / 100f);
                helpY -= (float)Math.Cos(obrot) * MathHelper.Lerp(MinR, MaxR, (float)rand.Next(0, 100) / 100f);
            }
            break;
            }



            Vector2 dokad = new Vector2(
                helpX + (float)X,
                helpY + (float)Y);


            switch (Ruch)
            {
            case Rodzaj_Ruchu.RuchJednostajny:
                czasteczka.RuchJednostajny(dokad);
                break;

            case Rodzaj_Ruchu.RuchPrzyspieszony:
                czasteczka.RuchJednostajny(dokad);
                break;
            }
            return(czasteczka);
        }