Esempio n. 1
0
 void MainView_CalculateFireTestSound(CalculateFireTestNoiseEventArgs e)
 {
     if (fireTestNoiseCalculation.FirstCalculation)
     {
         fireTestNoiseCalculation.InputDataChanged = true;
         fireTestNoiseCalculation.FirstCalculation = false;
     }
     else
     {
         if ((fireTestNoiseCalculation.RadiusInterval.Initial != e.RadiusInterval.Initial) ||
             (fireTestNoiseCalculation.RadiusInterval.Final != e.RadiusInterval.Final) ||
             (fireTestNoiseCalculation.RadiusInterval.Step != e.RadiusInterval.Step))
         {
             fireTestNoiseCalculation.InputDataChanged = true;
         }
         if (fireTestNoiseCalculation.FrequencyBand != e.FrequencyBand)
         {
             fireTestNoiseCalculation.InputDataChanged = true;
         }
     }
     fireTestNoiseCalculation.RadiusInterval = e.RadiusInterval;
     fireTestNoiseCalculation.FrequencyBand  = e.FrequencyBand;
     if (fireTestNoiseCalculation.InputDataChanged)
     {
         if (fireTestNoiseCalculation.SoundLevels.Count != 0)
         {
             fireTestNoiseCalculation.FireTestSoundContours = Model.CalculateFireTestNoise(
                 new FireTestNoiseCalculationInputData(
                     fireTestNoiseCalculation.Thrust,
                     fireTestNoiseCalculation.FlowParameters,
                     fireTestNoiseCalculation.WeatherParameters,
                     e.RadiusInterval,
                     e.FrequencyBand),
                 fireTestNoiseCalculation.SoundLevels);
         }
     }
     fireTestNoiseCalculation.InputDataChanged = false;
     e.FireTestSoundContours = fireTestNoiseCalculation.FireTestSoundContours;
 }
Esempio n. 2
0
        private async void CalculatFireTestNoiseMenuItem_Click()
        {
            FrequencyBand frequencyBand;

            if (FireTestInfraBandRadioButton.Checked)
            {
                frequencyBand = FrequencyBand.Infra;
            }
            else if (FireTestUltraBandRadioButton.Checked)
            {
                frequencyBand = FrequencyBand.Ultra;
            }
            else
            {
                frequencyBand = FrequencyBand.Normal;
            }
            var CalculateArgs = new CalculateFireTestNoiseEventArgs(
                frequencyBand,
                new RadiusInterval(
                    Convert.ToDouble(FireTestStartRadiusTextBox.Text),
                    Convert.ToDouble(FireTestFinalRadiusTextBox.Text),
                    Convert.ToDouble(FireTestRadiusStepTextBox.Text)));
            await Task.Run(() => CalculateFireTestNoise(CalculateArgs));

            var Contours = CalculateArgs.FireTestSoundContours;

            FireTestGraphPane.CurveList.Clear();
            for (int i = 0; i < FireTestNoiseSoundLevelContainer.SoundLevels.Count; i++)
            {
                FireTestGraphPane.AddCurve(
                    FireTestNoiseSoundLevelContainer.SoundLevels[i].SoundLevel.ToString(),
                    Contours[i].Points.Select(p => p.X).ToArray(),
                    Contours[i].Points.Select(p => p.Y).ToArray(),
                    FireTestNoiseSoundLevelContainer.SoundLevels[i].Color,
                    SymbolType.None);
            }
            FireTestGraphPane.AxisChange();
            zedGraphControl2.Invalidate();
            var PointsGrid = FireTestNoiseSoundLevelPointsGrid;

            PointsGrid.Columns.Clear();
            foreach (var circle in Contours)
            {
                var s = circle.SoundLevel.ToString() + " дБ";
                if (FireTestNormalBandRadioButton.Checked)
                {
                    s += "A";
                }
                PointsGrid.Columns.Add("", s);
                PointsGrid.Columns.Add("", "");
            }
            foreach (var column in PointsGrid.Columns.Cast <DataGridViewColumn>())
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            PointsGrid.Rows.Add();
            PointsGrid.Rows[0].Frozen = true;
            for (int i = 0; i < PointsGrid.Columns.Count; i++)
            {
                PointsGrid.Rows[0].Cells[i].Value = i % 2 == 0 ? "X, м" : "Y, м";
            }
            PointsGrid.Rows.Add(Contours[0].Points.Count);
            for (int CircleIndex = 0; CircleIndex < Contours.Count; CircleIndex++)
            {
                var contour = Contours[CircleIndex];
                for (int i = 0; i < contour.Points.Count; i++)
                {
                    PointsGrid.Rows[i + 1].Cells[2 * CircleIndex + 0].Value = FormatConvert.ToString(contour.Points[i].X);
                    PointsGrid.Rows[i + 1].Cells[2 * CircleIndex + 1].Value = FormatConvert.ToString(contour.Points[i].Y);
                }
            }
        }