private void FillData()
        {
            NChart chart = nChartControl1.Charts[0];
            NTriangulatedSurfaceSeries surface = (NTriangulatedSurfaceSeries)chart.Series[0];

            Random rand = new Random();

            const int countX = 100;
            const int countZ = 100;

            NRange1DD rangeX = new NRange1DD(-10, 10);
            NRange1DD rangeZ = new NRange1DD(-10, 10);

            double stepX = rangeX.GetLength() / (countX - 1);
            double stepZ = rangeZ.GetLength() / (countZ - 1);

            double cx = -3.0;
            double cz = -5.0;

            NVector3DD[] vectorData = new NVector3DD[countZ * countX];
            int          index      = 0;

            for (int n = 0; n < countZ; n++)
            {
                double z = rangeZ.Begin + n * stepZ;

                for (int m = 0; m < countX; m++)
                {
                    double x        = rangeX.Begin + m * stepX;
                    double dx       = cx - x;
                    double dz       = cz - z;
                    double distance = Math.Sqrt(dx * dx + dz * dz);

                    vectorData[index] = new NVector3DD(x, Math.Sin(distance) * Math.Exp(-distance * 0.1), z);
                    index++;
                }
            }

            if (SimplifySurfaceCheckBox.Checked)
            {
                NPointSetSimplifier3D pointSetSimplifier3D = new NPointSetSimplifier3D();
                pointSetSimplifier3D.DistanceFactor = 0.01f;

                vectorData = pointSetSimplifier3D.Simplify(vectorData);
            }

            surface.Data.Clear();
            surface.Data.AddValues(vectorData);
        }
Пример #2
0
            void INCustomSeriesCallback.GetAxisRanges(out NRange1DD rangeX, out NRange1DD rangeY)
            {
                if ((Points == null) || (Points.Length == 0))
                {
                    rangeX.Begin = Double.NaN;
                    rangeX.End   = Double.NaN;
                    rangeY.Begin = Double.NaN;
                    rangeY.End   = Double.NaN;
                }
                else
                {
                    rangeX.End = rangeX.Begin = Points[0].X;
                    rangeY.End = rangeY.Begin = Points[0].Y;

                    for (int i = 1; i < Points.Length; i++)
                    {
                        NPointF point = Points[i];

                        if (point.X > rangeX.End)
                        {
                            rangeX.End = point.X;
                        }
                        else if (point.X < rangeX.Begin)
                        {
                            rangeX.Begin = point.X;
                        }

                        if (point.Y > rangeY.End)
                        {
                            rangeY.End = point.Y;
                        }
                        else if (point.Y < rangeY.Begin)
                        {
                            rangeY.Begin = point.Y;
                        }
                    }

                    rangeX.Inflate(0.1 * rangeX.GetLength());
                    rangeY.Inflate(0.1 * rangeY.GetLength());
                }
            }
Пример #3
0
        private void FillData()
        {
            if (nChartControl1 == null)
            {
                return;
            }

            NChart chart = nChartControl1.Charts[0];
            NTriangulatedSurfaceSeries surface     = (NTriangulatedSurfaceSeries)chart.Series[0];
            NTriangulatedSurfaceData   surfaceData = surface.Data;

            if (m_SurfaceVectorData == null)
            {
                Random rand = new Random();

                const int countX = 100;
                const int countZ = 100;

                NRange1DD rangeX = new NRange1DD(-10, 10);
                NRange1DD rangeZ = new NRange1DD(-10, 10);

                double stepX = rangeX.GetLength() / (countX - 1);
                double stepZ = rangeZ.GetLength() / (countZ - 1);

                double cx = -3.0;
                double cz = -5.0;

                NVector3DD[] vectorData = new NVector3DD[countZ * countX];
                int          index      = 0;

                for (int n = 0; n < countZ; n++)
                {
                    double z = rangeZ.Begin + n * stepZ;

                    for (int m = 0; m < countX; m++)
                    {
                        double x        = rangeX.Begin + m * stepX;
                        double dx       = cx - x;
                        double dz       = cz - z;
                        double distance = Math.Sqrt(dx * dx + dz * dz);

                        vectorData[index++] = new NVector3DD(x, Math.Sin(distance) * Math.Exp(-distance * 0.1), z);
                    }
                }

                m_SurfaceVectorData = vectorData;
            }

            NVector3DD[] newSurfaceVectorData = m_SurfaceVectorData;;

            if (SimplifySurfaceCheckBox.IsChecked.Value)
            {
                NPointSetSimplifier3D simplifier = new NPointSetSimplifier3D();
                simplifier.DistanceFactor = 0.01;

                newSurfaceVectorData = simplifier.Simplify(newSurfaceVectorData);
            }

            surfaceData.Clear();
            surfaceData.AddValues(newSurfaceVectorData);

            nChartControl1.Refresh();
        }
Пример #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected virtual void OnTimerTick(object sender, EventArgs e)
        {
            Random random = new Random();

            for (int i = 0; i < m_Bar.Values.Count; i++)
            {
                double value = (m_AxisRange.Begin + m_AxisRange.End) / 2.0 + Math.Sin(m_IndicatorPhase[i] * NMath.Degree2Rad) * m_AxisRange.GetLength() / 2 + random.Next(20);
                value = m_AxisRange.GetValueInRange(value);

                m_Bar.Values[i]      = value;
                m_IndicatorPhase[i] += 10;
            }

            nChartControl1.Refresh();
        }