public void Tessellate(IRenderPackage package, double tol = -1, int maxGridLines = 512) { if (!Values.Any() || Values == null) { return; } var min = Values.Min(); var max = Values.Max(); var normalizedValues = Values.Select(v => (v - min) / (max - min)); var colorRange = Utils.CreateAnalyticalColorRange(); var data = ValueLocations.Zip( normalizedValues, (p, v) => new Tuple <Point, double>(p, v)); foreach (var d in data) { var pt = d.Item1; var color = colorRange.GetColorAtParameter(d.Item2); package.AddPointVertex(pt.X, pt.Y, pt.Z); package.AddPointVertexColor(color.Red, color.Green, color.Blue, color.Alpha); } }
private Color[,] CreateColorMap() { if (Values == null) { return(null); } // Find the minimum and the maximum for results var max = Values.Max(); var min = Values.Min(); var colorRange = Utils.CreateAnalyticalColorRange(); // If the values are all the same, ex. max-min == 0.0, // then return the color at the top of the range. Otherwise, // return the color value at the specified parameter. var analysisColors = Values.Select(v => ((max - min) == 0.0 ? colorRange.GetColorAtParameter(1): colorRange.GetColorAtParameter((v - min) / (max - min)))).ToList(); var colorRange2D = ColorRange2D.ByColorsAndParameters(analysisColors, ValueLocations.ToList()); return(colorRange2D.CreateColorMap(COLOR_MAP_WIDTH, COLOR_MAP_HEIGHT)); }