private void NextStep() { CA.Next(); if (_isDynamicPaint) { GetUpdating = true; Dispatcher.BeginInvoke((Action)(() => { Paint(); })); } else { Dispatcher.BeginInvoke((Action)(() => { switch (_selectChart) { case Chart.PointChart3D: SetName("Клеточный автомат; Итерация =" + CA.Iterator); break; case Chart.MeshChart: SetName("Осреднение по оси " + CA_Model.GetNameAxis(_selectAxis) + "; Слой = " + _selectIndex + "; Итерация =" + CA.Iterator); break; case Chart.PointChart2D: SetName("Клеточный автомат; Разрез по оси " + CA_Model.GetNameAxis(_selectAxis) + "; Слой = " + _selectIndex + "; Итерация =" + CA.Iterator); break; } })); } while (GetUpdating) { } _manualResetEvent.WaitOne(); }
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; }