Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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;
        }