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()); } }
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; } }
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; }