コード例 #1
0
        public void AddPolar(ChartStylePolar csp)
        {
            double xc = csp.ChartCanvas.Width / 2;
            double yc = csp.ChartCanvas.Height / 2;
            int    j  = 0;

            foreach (DataSeries ds in DataList)
            {
                if (ds.SeriesName == "Default Name")
                {
                    ds.SeriesName = "DataSeries" + j.ToString();
                }
                ds.AddLinePattern();
                for (int i = 0; i < ds.LineSeries.Points.Count; i++)
                {
                    double r      = ds.LineSeries.Points[i].Y;
                    var    angle  = ds.LineSeries.Points[i].X;
                    var    offset = csp.AngleOffset;
                    if (csp.AngleDirection == ChartStylePolar.AngleDirectionEnum.CounterClockWise)
                    {
                        angle  = -angle;
                        offset = -csp.AngleOffset;
                    }
                    double theta = (angle + offset) * Math.PI / 180;
                    double x     = xc + csp.RNormalize(r) * Math.Cos(theta);
                    double y     = yc + csp.RNormalize(r) * Math.Sin(theta);
                    ds.LineSeries.Points[i] = new Point(x, y);
                }
                csp.ChartCanvas.Children.Add(ds.LineSeries);
                j++;
            }
        }
コード例 #2
0
 public void AddPolar(ChartStylePolar csp)
 {
     double xc = csp.ChartCanvas.Width / 2;
     double yc = csp.ChartCanvas.Height / 2;
     int j = 0;
     foreach (DataSeries ds in DataList)
     {
         if (ds.SeriesName == "Default Name")
         {
             ds.SeriesName = "DataSeries" + j.ToString();
         }
         ds.AddLinePattern();
         for (int i = 0; i < ds.LineSeries.Points.Count; i++)
         {
             double r = ds.LineSeries.Points[i].Y;
             var angle = ds.LineSeries.Points[i].X;
             var offset = csp.AngleOffset;
             if (csp.AngleDirection == ChartStylePolar.AngleDirectionEnum.CounterClockWise)
             {
                 angle = -angle;
                 offset = -csp.AngleOffset;
             }
             double theta = (angle + offset) * Math.PI / 180;
             double x = xc + csp.RNormalize(r) * Math.Cos(theta);
             double y = yc + csp.RNormalize(r) * Math.Sin(theta);
             ds.LineSeries.Points[i] = new Point(x, y);
         }
         csp.ChartCanvas.Children.Add(ds.LineSeries);
         j++;
     }
 }
コード例 #3
0
        private void AddChart1()
        {
            var cs = new ChartStylePolar();
            var dc = new DataCollectionPolar();
            cs.ChartCanvas = chartCanvas;
            cs.Rmin = -7.0;
            cs.Rmax = 3.0;
            cs.NTicks = 4;
            cs.AngleStep = 15;
            cs.AngleOffset = -90;
            cs.AngleDirection = ChartStylePolar.AngleDirectionEnum.ClockWise;
            cs.LinePattern = ChartStylePolar.LinePatternEnum.Dot;
            cs.LineColor = Brushes.Black;
            cs.SetPolarAxes();

            var ds1 = new DataSeries();
            ds1.LineColor = Brushes.Red;
            for (int i = 0; i < 360; i++)
            {
                double theta = 1.0 * i;
                double r = Math.Log(1.001 + Math.Sin(2 * theta * Math.PI / 180));
                ds1.LineSeries.Points.Add(new Point(theta, r));
            }
            dc.DataList.Add(ds1);

            var ds2 = new DataSeries();
            ds2.LineColor = Brushes.Blue;
            for (int i = 0; i < 360; i++)
            {
                double theta = 1.0 * i;
                double r = Math.Log(1.001 + Math.Cos(2 * theta * Math.PI / 180));
                ds2.LineSeries.Points.Add(new Point(theta, r));
            }
            //dc.DataList.Add(ds2);

            var ds3 = new DataSeries();
            ds3.LineColor = Brushes.Green;
            //ds3.LineSeries.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Unspecified);
            ds3.LineSeries.Points.Add(new Point(0, -7));
            var fill = new SolidColorBrush(Colors.Red);
            fill.Opacity = .5;
            ds3.LineSeries.Fill = fill;
            //ds3.LineSeries.Points.Add(new Point(-15, 1));

            for (int i = -15; i <= 15; i++)
            {
                double theta = 1.0 * i;
                //double r = Math.Log(1.001 + Math.Cos(2 * theta * Math.PI / 180));
                ds3.LineSeries.Points.Add(new Point(theta, 1));
            }
            //ds3.LineSeries.Points.Add(new Point(15, 1));
            ds3.LineSeries.Points.Add(new Point(0, -7));
            dc.DataList.Add(ds3);

            dc.AddPolar(cs);
        }
コード例 #4
0
ファイル: MainWindow.xaml.cs プロジェクト: gzt200361/offwind
        private void AddChart1()
        {
            var cs = new ChartStylePolar();
            var dc = new DataCollectionPolar();

            cs.ChartCanvas    = chartCanvas;
            cs.Rmin           = -7.0;
            cs.Rmax           = 3.0;
            cs.NTicks         = 4;
            cs.AngleStep      = 15;
            cs.AngleOffset    = -90;
            cs.AngleDirection = ChartStylePolar.AngleDirectionEnum.ClockWise;
            cs.LinePattern    = ChartStylePolar.LinePatternEnum.Dot;
            cs.LineColor      = Brushes.Black;
            cs.SetPolarAxes();

            var ds1 = new DataSeries();

            ds1.LineColor = Brushes.Red;
            for (int i = 0; i < 360; i++)
            {
                double theta = 1.0 * i;
                double r     = Math.Log(1.001 + Math.Sin(2 * theta * Math.PI / 180));
                ds1.LineSeries.Points.Add(new Point(theta, r));
            }
            dc.DataList.Add(ds1);

            var ds2 = new DataSeries();

            ds2.LineColor = Brushes.Blue;
            for (int i = 0; i < 360; i++)
            {
                double theta = 1.0 * i;
                double r     = Math.Log(1.001 + Math.Cos(2 * theta * Math.PI / 180));
                ds2.LineSeries.Points.Add(new Point(theta, r));
            }
            //dc.DataList.Add(ds2);

            var ds3 = new DataSeries();

            ds3.LineColor = Brushes.Green;
            //ds3.LineSeries.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Unspecified);
            ds3.LineSeries.Points.Add(new Point(0, -7));
            var fill = new SolidColorBrush(Colors.Red);

            fill.Opacity        = .5;
            ds3.LineSeries.Fill = fill;
            //ds3.LineSeries.Points.Add(new Point(-15, 1));

            for (int i = -15; i <= 15; i++)
            {
                double theta = 1.0 * i;
                //double r = Math.Log(1.001 + Math.Cos(2 * theta * Math.PI / 180));
                ds3.LineSeries.Points.Add(new Point(theta, 1));
            }
            //ds3.LineSeries.Points.Add(new Point(15, 1));
            ds3.LineSeries.Points.Add(new Point(0, -7));
            dc.DataList.Add(ds3);

            dc.AddPolar(cs);
        }