private static double GetKey(ExperimentEntityDataItemViewModel dataItem)
        {
            var key = dataItem.Distance;

            if (dataItem.IsNoise)
            {
                key = -Math.PI;
            }
            if (dataItem.IsNormalize)
            {
                key = -Math.E;
            }
            return(key * (dataItem.IsFiltred?-1:1));
        }
Пример #2
0
 public static ExperimentEntityDataItem ToEntity([NotNull] this ExperimentEntityDataItemViewModel vm)
 {
     return(new ExperimentEntityDataItem
     {
         IsNoise = vm.IsNoise,
         Distance = vm.Distance,
         IsBase = vm.IsBase,
         IsNormalize = vm.IsNormalize,
         IntensityArray = vm.IntensityArray,
         IsShow = vm.IsShow,
         IsAppliedNormalizing = vm.IsAppliedNormalizing,
         IsNoiseRemoved = vm.IsNoiseRemoved
     });
 }
        private void ProcessDataItem(ExperimentEntityDataViewModel data, ExperimentEntityDataItemViewModel dataItem, int width,
                                     int height, double maxX, double maxY, double minX, double minY, int number)
        {
            if (data.WaveLengthArray.Length != dataItem.IntensityArray.Length || data.WaveLengthArray.Length < 2)
            {
                return;
            }
            if (_isDivideToBase)
            {
                if (dataItem.IsNoise || dataItem.IsNormalize)
                {
                    return;
                }
            }


            var key            = GetKey(dataItem);
            var intensityArray = dataItem.IntensityArray;

            if (_isDivideToBase)
            {
                intensityArray = (double[])intensityArray.Clone();
                for (int i = 0; i < intensityArray.Length; i++)
                {
                    intensityArray[i] /= _base[i];
                }
            }
            var pointsForShow = CalculatePoints(data.WaveLengthArray, intensityArray, width, height, maxX, maxY, minX,
                                                minY);


            Application.Current.Dispatcher.Invoke((Action) delegate()
            {
                var segmentsList = new PathSegmentCollection();
                for (int i = 1; i < pointsForShow.Count(); i++)
                {
                    var lineSegment = new LineSegment()
                    {
                        Point = pointsForShow[i].Item1,
                    };

                    //lineSegment.IsSmoothJoin = true;
                    segmentsList.Add(lineSegment);
                }
                PathFigure pathFigure = new PathFigure()
                {
                    StartPoint = pointsForShow[0].Item1,
                    Segments   = segmentsList,
                    IsClosed   = false,
                    IsFilled   = false
                };
                var geometry = new PathGeometry()
                {
                    Figures = new PathFigureCollection()
                    {
                        pathFigure
                    }
                };
                geometry.Freeze();
                var stroke = _brushes[number % _brushes.Length];

                var path = new Path()
                {
                    Data = geometry,

                    StrokeThickness = 1,
                    Stroke          = stroke,
                    Visibility      = dataItem.IsShow ? Visibility.Visible : Visibility.Hidden
                };

                GraphCanvas.Children.Add(path);
                if (_dictionaryPaths.ContainsKey(key))
                {
                    _dictionaryPaths[key] = path;
                }
                else
                {
                    _dictionaryPaths.Add(key, path);
                }
                if (_dictionaryColors.ContainsKey(key))
                {
                    _dictionaryColors[key] = stroke;
                }
                else
                {
                    _dictionaryColors.Add(key, stroke);
                }
            });
            if (_dictionaryOfPointsToshow.ContainsKey(key))
            {
                _dictionaryOfPointsToshow[key] = pointsForShow;
            }
            else
            {
                _dictionaryOfPointsToshow.Add(key, pointsForShow);
            }


            if (_dictionaryViewModels.ContainsKey(key))
            {
                _dictionaryViewModels[key] = dataItem;
            }
            else
            {
                _dictionaryViewModels.Add(key, dataItem);
            }
            //Path.Data = geometry;
        }