コード例 #1
0
        public static ChernoffFace[] GetFaces(PieChart chart, StatisticsData[] datas,
                                              StatisticsData minData, StatisticsData maxData)
        {
            double[] sectionsData = new double[datas.Length];

            for (int i = 0; i < datas.Length; i++)
            {
                sectionsData[i] = datas[i].Sections;
            }

            Point[]        facePoints = chart.GetMiddleAnglePoints();
            ChernoffFace[] faces      = new ChernoffFace[facePoints.Length];

            for (int i = 0; i < faces.Length; i++)
            {
                double pieAngle   = (chart.PieAngles[i] > 45) ? 45 : chart.PieAngles[i];
                int    faceRadius = (int)((pieAngle * (2 * Math.PI * chart.Radius) / 360) * 0.6);

                if (faceRadius > chart.Radius)
                {
                    faceRadius = chart.Radius;
                }

                Point facePoint = getPointAwayFromA(facePoints[i], chart.CentrePoint, -(faceRadius + 10));

                faces[i] = new ChernoffFace(facePoint, faceRadius, datas[i], minData, maxData);
            }

            return(faces);
        }
コード例 #2
0
        public ChernoffFace(Point centrePoint, int radius, ChernoffFace chernoffFace)
        {
            CentrePoint = centrePoint;
            Radius      = radius;
            Data        = chernoffFace.Data;
            bkgColor    = chernoffFace.bkgColor;

            facePartTypes = new int[Enum.GetNames(typeof(FacePartNames)).Length];
            Array.Copy(chernoffFace.facePartTypes, facePartTypes, facePartTypes.Length);

            Shapes = new Path[Enum.GetNames(typeof(FacePartNames)).Length][];
            Shapes[(int)FacePartNames.Face]     = getFace();
            Shapes[(int)FacePartNames.Eyes]     = getEyes(facePartTypes[(int)FacePartNames.Eyes]);
            Shapes[(int)FacePartNames.Mustache] = getMustache(facePartTypes[(int)FacePartNames.Mustache]);
            Shapes[(int)FacePartNames.Lips]     = getLips(facePartTypes[(int)FacePartNames.Lips]);
        }