private void AddChart() { cs = new ChartStylePolar(); dc = new DataCollectionPolar(); cs.ChartCanvas = chartCanvas; cs.Rmax = 0.5; cs.Rmin = 0; cs.NTicks = 4; cs.AngleStep = 30; cs.AngleDirection = ChartStylePolar.AngleDirectionEnum.CounterClockWise; cs.LinePattern = ChartStylePolar.LinePatternEnum.Dot; cs.LineColor = Brushes.Black; cs.SetPolarAxes(); dc.DataList.Clear(); ds = new DataSeries(); ds.LineColor = Brushes.Red; for (int i = 0; i < 360; i++) { double theta = 1.0 * i; double r = Math.Abs(Math.Cos(2.0 * theta * Math.PI / 180) * Math.Sin(2.0 * theta * Math.PI / 180)); ds.LineSeries.Points.Add(new Point(theta, r)); } dc.DataList.Add(ds); dc.AddPolar(cs); }
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; double theta = ds.LineSeries.Points[i].X * Math.PI / 180; if (csp.AngleDirection == ChartStylePolar.AngleDirectionEnum.CounterClockWise) { theta = -theta; } 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++; } }