Ejemplo n.º 1
0
        /// <summary>
        /// Calculate AxisX points for Circular chart
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="axisX"></param>
        /// <param name="maxDataPointsCount"></param>
        internal void CalculateAxisXLabelsPoints4Polar(Double width, Double height, Boolean isAxisLabelsEnabled, List<Double> angles, Double minValue, Double maxValue)
        {
            Double radius = Math.Min(width, height) / 2;

            Double reducedPercent = 10;
            if (isAxisLabelsEnabled)
                reducedPercent = 20;

            Radius = radius - (radius * reducedPercent / 100);

            Center = new Point(width / 2, height / 2);

            AnglesInRadian = new List<Double>();

            Double minValInRadian;

            if (minValue != 0)
                minValInRadian = AxisLabel.GetRadians(minValue - 90);
            else
                minValInRadian = 2 * Math.PI - Math.PI / 2;

            Double minAngle = Graphics.ValueToPixelPosition(minValInRadian, 2 * Math.PI + minValInRadian, AxisLabel.GetRadians(minValue), AxisLabel.GetRadians(maxValue), AxisLabel.GetRadians(minValue));
            MinAngleInDegree = minAngle * 180 / Math.PI;

            for (Int32 i = 0; i < angles.Count; i++)
            {
                Double actualAngle = Graphics.ValueToPixelPosition(minValInRadian, 2 * Math.PI + minValInRadian, AxisLabel.GetRadians(minValue), AxisLabel.GetRadians(maxValue), AxisLabel.GetRadians(angles[i]));

                Double x = Radius * Math.Cos(actualAngle) + Center.X;
                Double y = Radius * Math.Sin(actualAngle) + Center.Y;

                ListOfPoints4CircularAxis.Add(new Point(x, y));
                AnglesInRadian.Add(actualAngle);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Update circular plotdetails
        /// </summary>
        /// <param name="circularLabels"></param>
        /// <param name="radius"></param>
        internal void UpdateCircularPlotDetails(List<CircularAxisLabel> circularLabels, Double radius)
        {
            ListOfPoints4CircularAxis.Clear();
            foreach (CircularAxisLabel label in circularLabels)
            {
                ListOfPoints4CircularAxis.Add(label.Position);
            }

            Radius = radius;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Calculate AxisX points for Circular chart
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="axisX"></param>
        /// <param name="maxDataPointsCount"></param>
        internal void CalculateAxisXLabelsPoints4Radar(Double width, Double height, Boolean isAxisLabelsEnabled, Int32 maxDataPointsCount)
        {
            Int32  noOfSpikes = maxDataPointsCount;
            Double startAngle = -Math.PI / 2;

            Double actualAngle = startAngle;

            Int32 nextIteration = 1;

            Double minAngle = 0;

            Double radius = Math.Min(width, height) / 2;

            Double reducedPercent = 10;

            if (isAxisLabelsEnabled)
            {
                reducedPercent = 20;
            }

            Radius = radius - (radius * reducedPercent / 100);

            Center = new Point(width / 2, height / 2);

            //ListOfPoints4CircularAxis = new List<Point>();
            AnglesInRadian = new List <Double>();

            MinAngleInDegree = 360.0 / noOfSpikes;

            for (Int32 i = 0; i < noOfSpikes; i++)
            {
                Double x = Radius * Math.Cos(actualAngle) + Center.X;
                Double y = Radius * Math.Sin(actualAngle) + Center.Y;

                ListOfPoints4CircularAxis.Add(new Point(x, y));
                AnglesInRadian.Add(actualAngle);

                minAngle    = MinAngleInDegree * nextIteration++;
                actualAngle = AxisLabel.GetRadians(minAngle) - (Math.PI / 2);
            }
        }