/// <summary> /// Helper method to set up frequency plots (does frequency transform) /// </summary> /// <param name="freqSettings"> Settings for frequency transform. </param> private void FreqPlotSetup(FreqPlotSettings freqSettings) { double xAxisRange = xAxisMax - xAxisMin; freqTransVals = new List <List <PointD> >(); List <double> transformTempRowIn = new List <double>(); IList <double> transformTempRowOut = new List <double>(); foreach (PointD point in plotData[0].Points()) { transformTempRowIn.Add(point.Y); } while (true) { transformTempRowIn = new List <double>(freqSettings.WaveOption .Transform(transformTempRowIn, out transformTempRowOut)); if (transformTempRowIn.Count == 0) { break; } freqTransVals.Add(new List <PointD>()); double xPosition = xAxisMin + xAxisRange / (2.0d * transformTempRowOut.Count); foreach (double freqVal in transformTempRowOut) { freqTransVals.Last().Add(new PointD(xPosition, freqVal)); xPosition += xAxisRange / transformTempRowOut.Count; } } }
/// <summary> /// Method to set up this form and GUI elements based on the supplied PlotSettings /// </summary> /// <param name="plotSettings"> Input PlotSettings. </param> /// <param name="plotMode"> Plotting mode. </param> public void Configure(List <PlotSettings> plotSettings, int plotMode) { this.plotMode = plotMode; // Read in general 2D data plotData = new List <PlottableData>(); plotColors = new List <Color>(); foreach (PlotSettings settings in plotSettings) { plotData.Add(new PlottableData(settings)); if (plotData.Last().XMin < xAxisMin) { xAxisMin = plotData.Last().XMin; } if (plotData.Last().XMax > xAxisMax) { xAxisMax = plotData.Last().XMax; } if (plotData.Last().YMin < yAxisMin) { yAxisMin = plotData.Last().YMin; } if (plotData.Last().YMax > yAxisMax) { yAxisMax = plotData.Last().YMax; } } // Perform additional mode-specific behavior if (plotMode == 0) { IEnumerator <PlotSettings> settingsEnumerator = plotSettings.GetEnumerator(); DataPlotSetup(settingsEnumerator); } else if (plotMode == 1) { FreqPlotSettings freqSettings = (FreqPlotSettings)plotSettings[0]; FreqPlotSetup(freqSettings); } }