예제 #1
0
        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);
            }
        }
예제 #2
0
        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));
        }