private void OnReset() { _timer.Stop(); StartButton.IsChecked = false; PauseButton.IsChecked = false; ResetButton.IsChecked = true; using (sciChart.SuspendUpdates()) { ScatterRenderableSeries3D.DataSeries = null; sciChart.InvalidateElement(); ScatterRenderableSeries3D.GetSceneEntity().Update(); ScatterRenderableSeries3D.GetSceneEntity().RootSceneEntity.Update(); } }
private void AddSeriesButton_OnClick(object sender, RoutedEventArgs e) { if (sciChart.RenderableSeries.Count >= MaxSeriesAmount) { return; } var renderSerias = new ScatterRenderableSeries3D(); var xyzDataSeries3D = new XyzDataSeries3D <double>() { SeriesName = "Series " + ++_currentSeries }; int dataPointsCount = 15; var random = new Random(0); for (int i = 0; i < dataPointsCount; i++) { double x = DataManager.Instance.GetGaussianRandomNumber(5, 1.5); double y = DataManager.Instance.GetGaussianRandomNumber(5, 1.5); double z = DataManager.Instance.GetGaussianRandomNumber(5, 1.5); // Scale is a multiplier used to increase/decrease ScatterRenderableSeries3D.ScatterPointSize float scale = (float)((random.NextDouble() + 0.5) * 3.0); // Color is applied to PointMetadata3D and overrides the default ScatterRenderableSeries.Stroke property Color?randomColor = Color.FromArgb(0xFF, (byte)random.Next(50, 255), (byte)random.Next(50, 255), (byte)random.Next(50, 255)); // To declare scale and colour, add a VertextData class as the w (fourth) parameter. // The PointMetadata3D class also has other properties defining the behaviour of the XYZ point xyzDataSeries3D.Append(x, y, z, new PointMetadata3D(randomColor, scale)); } var randomPicker = new Random(); int randValue = randomPicker.Next(0, 6); switch (randValue) { case 0: renderSerias.PointMarker = new CubePointMarker3D(); break; case 1: renderSerias.PointMarker = new EllipsePointMarker3D(); break; case 2: renderSerias.PointMarker = new PyramidPointMarker3D(); break; case 3: renderSerias.PointMarker = new QuadPointMarker3D(); break; case 4: renderSerias.PointMarker = new SpherePointMarker3D(); break; case 5: renderSerias.PointMarker = new TrianglePointMarker3D(); break; } renderSerias.DataSeries = xyzDataSeries3D; sciChart.RenderableSeries.Add(renderSerias); var index = sciChart.RenderableSeries.IndexOf(renderSerias); xyzDataSeries3D.SeriesName = String.Format("Series #{0}", index); OnPropertyChanged("CanAddSeries"); OnPropertyChanged("CanRemoveSeries"); sciChart.ZoomExtents(); }
private void Paint() { switch (_selectChart) { case (int)Chart.PointChart3D: var grath_3D = new XyzDataSeries3D <int>(); for (int x = 0; x < CA.Length; x++) { for (int y = 0; y < CA.Length; y++) { for (int z = 0; z < CA.Length; z++) { if (CA[x, y, z]) { grath_3D.Append(x, y, z); } } } } var scatterSeries3D = new ScatterRenderableSeries3D { DataSeries = grath_3D, PointMarker = _selectPointMarker }; scatterSeries3D.PointMarker.Fill = Color.FromArgb(_selectAlpha, _selectColor.R, _selectColor.G, _selectColor.B); SciChart3D.RenderableSeries.Clear(); SciChart3D.RenderableSeries.Add(scatterSeries3D); SetName("Клеточный автомат; Итерация =" + CA.Iterator); break; case Chart.MeshChart: var meshGrath_3D = new UniformGridDataSeries3D <double>(CA.Length, CA.Length); double[,] pollution = CA.GetPollution(_selectIndex, _selectAxis); for (int i = 0; i < CA.Length; i++) { for (int j = 0; j < CA.Length; j++) { meshGrath_3D[i, j] = pollution[i, j]; } } var meshRenderableSeries = new SurfaceMeshRenderableSeries3D() { MeshColorPalette = _gradientColor, DrawMeshAs = DrawMeshAs.SolidWithContours, DataSeries = meshGrath_3D }; SciChart3D.RenderableSeries.Clear(); SciChart3D.RenderableSeries.Add(meshRenderableSeries); SetName("Осреднение по плоскости " + CA_Model.GetNameAxis(_selectAxis) + "; Слой = " + _selectIndex + "; Итерация =" + CA.Iterator); break; case Chart.PointChart2D: var dataGraph_2D = new XyDataSeries <int, int>(); for (int i = 0; i < CA.Length; i++) { for (int j = 0; j < CA.Length; j++) { if (CA.GetPointPollution(_selectAxis, _selectIndex, i, j)) { dataGraph_2D.Append(i, j); } } } var xyScatter = new XyScatterRenderableSeries() { DataSeries = dataGraph_2D, PointMarker = _selectPointMarker2D }; xyScatter.PointMarker.Fill = Color.FromArgb(_selectAlpha, _selectColor.R, _selectColor.G, _selectColor.B); SciChart2D.RenderableSeries.Clear(); SciChart2D.RenderableSeries.Add(xyScatter); SetName("Клеточный автомат; Плоскость " + CA_Model.GetNameAxis(_selectAxis) + "; Слой = " + _selectIndex + "; Итерация =" + CA.Iterator); break; } GetUpdating = false; }