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); }
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]); }