コード例 #1
0
        public void InitializeRandomWaves1(int nbWaves)
        {
            // Aucune vague n'est liée à une autre = toutes les vagues sont indépendantes
            // frequence = 2 * PI / wavelength
            // phase = speed * frequence

            NBWAVES = nbWaves;
            wave    = new WaveOptions[nbWaves];

            for (int w = 0; w < nbWaves; w++)
            {
                //mRand.Initialize();

                float t = mRand.NextFloatPositive();
                wave[w]       = new WaveOptions();
                wave[w].Len   = 15f * t * mRand.NextFloatPositive();
                wave[w].Amp   = wave[w].Len * 0.025f;
                wave[w].Speed = wave[w].Len * mRand.NextFloatPositive();
                wave[w].Angle = 30f * mRand.NextFloat() * Math.Sign(mRand.Next(-2, 2));
                wave[w].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[w].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[w].Angle)));
                wave[w].Freq  = 2f * (float)Math.PI / wave[w].Len;
                wave[w].Phase = wave[w].Speed * wave[w].Freq;
                System.Diagnostics.Debug.WriteLine("{" + w + "} " + wave[w].ToString());
            }
        }
コード例 #2
0
        public void InitializeRandomWaves2(int nbWaves)
        {
            // Les vagues sont liées à une première vague = toutes les vagues ne sont pas indépendantes
            // frequence = 2 * PI / wavelength
            // phase = speed * frequence

            NBWAVES = nbWaves;
            wave    = new WaveOptions[nbWaves];

            float t = mRand.NextFloatPositive();

            wave[0]       = new WaveOptions();
            wave[0].Len   = 15f;                 // +5f * mRand.NextFloatPositive();
            wave[0].Amp   = wave[0].Len * 0.025f;
            wave[0].Speed = 0.15f * wave[0].Len; // wave[0].len * mRand.NextFloatPositive();
            wave[0].Angle = 30f * mRand.NextFloat() * Math.Sign(mRand.Next(-2, 2));
            wave[0].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[0].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[0].Angle)));
            wave[0].Freq  = 2f * (float)Math.PI / wave[0].Len;
            wave[0].Phase = wave[0].Speed * wave[0].Freq;

            //NBWAVES = nbWaves = 1; return;
            for (int w = 1; w < nbWaves; w++)
            {
                t             = mRand.NextFloatPositive();
                wave[w]       = new WaveOptions();
                wave[w].Len   = (float)w + mRand.NextFloatPositive();
                wave[w].Amp   = wave[w].Len * 0.025f;
                wave[w].Speed = 0.15f * wave[w].Len;// wave[w].len * mRand.NextFloatPositive();
                wave[w].Angle = 30f * mRand.NextFloat() * Math.Sign(mRand.Next(-2, 2));
                wave[w].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[w].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[w].Angle)));
                wave[w].Freq  = 2f * (float)Math.PI / wave[w].Len;
                wave[w].Phase = wave[w].Speed * wave[w].Freq;
            }
        }
コード例 #3
0
        private void Initialize6Waves()
        {
            // frequence = 2 * PI / wavelength
            // phase = speed * frequence

            NBWAVES = 6;
            wave    = new WaveOptions[NBWAVES];

            wave[0]       = new WaveOptions();
            wave[0].Len   = 3.46f;
            wave[0].Amp   = 0.09f;
            wave[0].Speed = 1.5f;
            wave[0].Angle = -18.37f;

            wave[0].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[0].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[0].Angle)));
            wave[0].Freq  = 2f * (float)Math.PI / wave[0].Len;
            wave[0].Phase = wave[0].Speed * wave[0].Freq;

            wave[1]       = new WaveOptions();
            wave[1].Len   = 2.38f;
            wave[1].Amp   = 0.06f;
            wave[1].Speed = 0.98f;
            wave[1].Angle = 11.31f;

            wave[1].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[1].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[1].Angle)));
            wave[1].Freq  = 2f * (float)Math.PI / wave[1].Len;
            wave[1].Phase = wave[1].Speed * wave[1].Freq;

            wave[2]       = new WaveOptions();
            wave[2].Len   = 5.93f;
            wave[2].Amp   = 0.15f;
            wave[2].Speed = 0.49f;
            wave[2].Angle = 1.03f;

            wave[2].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[2].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[2].Angle)));
            wave[2].Freq  = 2f * (float)Math.PI / wave[2].Len;
            wave[2].Phase = wave[2].Speed * wave[2].Freq;

            wave[3]       = new WaveOptions();
            wave[3].Len   = 6.2f;
            wave[3].Amp   = 0.15f;
            wave[3].Speed = 1.75f;
            wave[3].Angle = 21.47f;

            wave[3].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[3].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[3].Angle)));
            wave[3].Freq  = 2f * (float)Math.PI / wave[3].Len;
            wave[3].Phase = wave[3].Speed * wave[3].Freq;

            wave[4]       = new WaveOptions();
            wave[4].Len   = 3.78f;
            wave[4].Amp   = 0.09f;
            wave[4].Speed = 1.06f;
            wave[4].Angle = 24.05f;

            wave[4].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[4].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[4].Angle)));
            wave[4].Freq  = 2f * (float)Math.PI / wave[4].Len;
            wave[4].Phase = wave[4].Speed * wave[4].Freq;

            wave[5]       = new WaveOptions();
            wave[5].Len   = 8.82f;
            wave[5].Amp   = 0.22f;
            wave[5].Speed = 0.00f;
            wave[5].Angle = 12.55f;

            wave[5].Dir   = new Vector2((float)Math.Cos(MathHelper.ToRadians(wave[5].Angle)), (float)Math.Sin(MathHelper.ToRadians(wave[5].Angle)));
            wave[5].Freq  = 2f * (float)Math.PI / wave[5].Len;
            wave[5].Phase = wave[5].Speed * wave[5].Freq;
        }