From 05c9675d28e325362de352d39fc2fb0c234d0dc4 Mon Sep 17 00:00:00 2001 From: pradeep Date: Sat, 19 Nov 2016 20:17:31 +0530 Subject: [PATCH 1/5] Correct visual spectrum color map values --- include/fg/defines.h | 2 +- src/backend/cmap.hpp | 570 +++++++++++++++++++++++-------------------- 2 files changed, 306 insertions(+), 266 deletions(-) diff --git a/include/fg/defines.h b/include/fg/defines.h index d8cdd140..3e69742a 100644 --- a/include/fg/defines.h +++ b/include/fg/defines.h @@ -126,7 +126,7 @@ typedef enum { */ typedef enum { FG_COLOR_MAP_DEFAULT = 0, ///< Default [0-255] grayscale colormap - FG_COLOR_MAP_SPECTRUM = 1, ///< Spectrum color + FG_COLOR_MAP_SPECTRUM = 1, ///< Visual spectrum (390nm-830nm) in sRGB colorspace FG_COLOR_MAP_COLORS = 2, ///< Pure Colors FG_COLOR_MAP_RED = 3, ///< Red color map FG_COLOR_MAP_MOOD = 4, ///< Mood color map diff --git a/src/backend/cmap.hpp b/src/backend/cmap.hpp index 4a9a346a..9f1c654c 100644 --- a/src/backend/cmap.hpp +++ b/src/backend/cmap.hpp @@ -10,7 +10,8 @@ #pragma once /* grayscale */ -float cmap_default[] = { +float cmap_default[] = +{ 0.0000f, 0.0000f, 0.0000f, 1.0000f, 0.0039f, 0.0039f, 0.0039f, 1.0000f, 0.0078f, 0.0078f, 0.0078f, 1.0000f, @@ -269,268 +270,303 @@ float cmap_default[] = { 1.0000f, 1.0000f, 1.0000f, 1.0000f, }; -/*-- http://micropore.files.wordpress.com/2010/06/colormaps.png */ -float cmap_spectrum[] = { - 3.9215686e-03f, 0.0000000e+00f, 3.9215686e-03f, 1.0000, - 2.3529412e-02f, 0.0000000e+00f, 2.7450980e-02f, 1.0000, - 5.0980392e-02f, 0.0000000e+00f, 6.2745098e-02f, 1.0000, - 8.6274510e-02f, 0.0000000e+00f, 9.8039216e-02f, 1.0000, - 1.2941176e-01f, 0.0000000e+00f, 1.4901961e-01f, 1.0000, - 1.6862745e-01f, 0.0000000e+00f, 1.9607843e-01f, 1.0000, - 2.0392157e-01f, 0.0000000e+00f, 2.3137255e-01f, 1.0000, - 2.3137255e-01f, 0.0000000e+00f, 2.6274510e-01f, 1.0000, - 2.6274510e-01f, 0.0000000e+00f, 2.9803922e-01f, 1.0000, - 3.0588235e-01f, 0.0000000e+00f, 3.4901961e-01f, 1.0000, - 3.4901961e-01f, 0.0000000e+00f, 3.9607843e-01f, 1.0000, - 3.8431373e-01f, 0.0000000e+00f, 4.3529412e-01f, 1.0000, - 4.1176471e-01f, 0.0000000e+00f, 4.6666667e-01f, 1.0000, - 4.3921569e-01f, 0.0000000e+00f, 4.9803922e-01f, 1.0000, - 4.5490196e-01f, 0.0000000e+00f, 5.1372549e-01f, 1.0000, - 4.7058824e-01f, 0.0000000e+00f, 5.3333333e-01f, 1.0000, - 4.8235294e-01f, 0.0000000e+00f, 5.4509804e-01f, 1.0000, - 4.8627451e-01f, 0.0000000e+00f, 5.4901961e-01f, 1.0000, - 4.9411765e-01f, 0.0000000e+00f, 5.5294118e-01f, 1.0000, - 4.9803922e-01f, 0.0000000e+00f, 5.6078431e-01f, 1.0000, - 4.9803922e-01f, 0.0000000e+00f, 5.6470588e-01f, 1.0000, - 5.0588235e-01f, 0.0000000e+00f, 5.7254902e-01f, 1.0000, - 5.0980392e-01f, 0.0000000e+00f, 5.7647059e-01f, 1.0000, - 5.1764706e-01f, 0.0000000e+00f, 5.8431373e-01f, 1.0000, - 5.2156863e-01f, 0.0000000e+00f, 5.8823529e-01f, 1.0000, - 5.2549020e-01f, 0.0000000e+00f, 5.9215686e-01f, 1.0000, - 5.2156863e-01f, 0.0000000e+00f, 5.9607843e-01f, 1.0000, - 4.8627451e-01f, 0.0000000e+00f, 6.0392157e-01f, 1.0000, - 4.4313725e-01f, 0.0000000e+00f, 6.0784314e-01f, 1.0000, - 4.0000000e-01f, 0.0000000e+00f, 6.1568627e-01f, 1.0000, - 3.5294118e-01f, 0.0000000e+00f, 6.1960784e-01f, 1.0000, - 3.0588235e-01f, 0.0000000e+00f, 6.2352941e-01f, 1.0000, - 2.6666667e-01f, 0.0000000e+00f, 6.3137255e-01f, 1.0000, - 2.3529412e-01f, 0.0000000e+00f, 6.3529412e-01f, 1.0000, - 1.9607843e-01f, 0.0000000e+00f, 6.4313725e-01f, 1.0000, - 1.4509804e-01f, 0.0000000e+00f, 6.4705882e-01f, 1.0000, - 9.8039216e-02f, 0.0000000e+00f, 6.5490196e-01f, 1.0000, - 6.2745098e-02f, 0.0000000e+00f, 6.5882353e-01f, 1.0000, - 3.1372549e-02f, 0.0000000e+00f, 6.6274510e-01f, 1.0000, - 7.8431373e-03f, 0.0000000e+00f, 6.7058824e-01f, 1.0000, - 3.9215686e-03f, 0.0000000e+00f, 6.8627451e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 7.0196078e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 7.1764706e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 7.2941176e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 7.4117647e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 7.6078431e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 7.8039216e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 7.9607843e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 8.1568627e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 8.3137255e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 8.4705882e-01f, 1.0000, - 0.0000000e+00f, 0.0000000e+00f, 8.5882353e-01f, 1.0000, - 0.0000000e+00f, 1.5686275e-02f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.8823529e-02f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 1.0196078e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 1.2941176e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 1.6078431e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 1.9215686e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 2.3137255e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 2.7450980e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 3.1764706e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 3.6078431e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 4.0000000e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 4.2745098e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 4.5098039e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 4.7058824e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 4.8627451e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 4.9803922e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.0588235e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.1764706e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.2549020e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.3725490e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.4901961e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.5686275e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.6470588e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.7254902e-01f, 8.6666667e-01f, 1.0000, - 0.0000000e+00f, 5.8431373e-01f, 8.6274510e-01f, 1.0000, - 0.0000000e+00f, 5.9607843e-01f, 8.6274510e-01f, 1.0000, - 0.0000000e+00f, 6.0392157e-01f, 8.4705882e-01f, 1.0000, - 0.0000000e+00f, 6.1176471e-01f, 8.2745098e-01f, 1.0000, - 0.0000000e+00f, 6.1568627e-01f, 8.1176471e-01f, 1.0000, - 0.0000000e+00f, 6.1960784e-01f, 8.0000000e-01f, 1.0000, - 0.0000000e+00f, 6.2352941e-01f, 7.8823529e-01f, 1.0000, - 0.0000000e+00f, 6.2745098e-01f, 7.7254902e-01f, 1.0000, - 0.0000000e+00f, 6.3529412e-01f, 7.5686275e-01f, 1.0000, - 0.0000000e+00f, 6.4313725e-01f, 7.3333333e-01f, 1.0000, - 0.0000000e+00f, 6.4705882e-01f, 7.2549020e-01f, 1.0000, - 0.0000000e+00f, 6.5098039e-01f, 7.0980392e-01f, 1.0000, - 0.0000000e+00f, 6.5882353e-01f, 6.9803922e-01f, 1.0000, - 0.0000000e+00f, 6.5882353e-01f, 6.8235294e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 6.6274510e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 6.5098039e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 6.3921569e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 6.2745098e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 6.1568627e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 6.0784314e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 5.9607843e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 5.8823529e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 5.7254902e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 5.6470588e-01f, 1.0000, - 0.0000000e+00f, 6.6666667e-01f, 5.5686275e-01f, 1.0000, - 0.0000000e+00f, 6.6274510e-01f, 5.4509804e-01f, 1.0000, - 0.0000000e+00f, 6.6274510e-01f, 5.2156863e-01f, 1.0000, - 0.0000000e+00f, 6.5882353e-01f, 4.9411765e-01f, 1.0000, - 0.0000000e+00f, 6.5490196e-01f, 4.5098039e-01f, 1.0000, - 0.0000000e+00f, 6.5098039e-01f, 4.0000000e-01f, 1.0000, - 0.0000000e+00f, 6.4313725e-01f, 3.5686275e-01f, 1.0000, - 0.0000000e+00f, 6.3921569e-01f, 3.2156863e-01f, 1.0000, - 0.0000000e+00f, 6.3529412e-01f, 2.9019608e-01f, 1.0000, - 0.0000000e+00f, 6.3137255e-01f, 2.4313725e-01f, 1.0000, - 0.0000000e+00f, 6.2352941e-01f, 1.9607843e-01f, 1.0000, - 0.0000000e+00f, 6.1960784e-01f, 1.4901961e-01f, 1.0000, - 0.0000000e+00f, 6.1176471e-01f, 1.1764706e-01f, 1.0000, - 0.0000000e+00f, 6.1176471e-01f, 8.6274510e-02f, 1.0000, - 0.0000000e+00f, 6.0784314e-01f, 5.4901961e-02f, 1.0000, - 0.0000000e+00f, 6.1176471e-01f, 3.1372549e-02f, 1.0000, - 0.0000000e+00f, 6.1176471e-01f, 3.9215686e-03f, 1.0000, - 0.0000000e+00f, 6.1960784e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.2745098e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.3529412e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.5098039e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.6274510e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.7450980e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.8235294e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.9411765e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.0588235e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.0980392e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.2156863e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.3333333e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.4509804e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.5686275e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.6470588e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.7647059e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.8823529e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.9607843e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.1176471e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.2352941e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.3137255e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.4313725e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.4705882e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.5882353e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.7450980e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.8235294e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.9411765e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 9.0196078e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 9.0980392e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 9.2549020e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 9.3725490e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 9.4509804e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 9.5294118e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 9.6078431e-01f, 0.0000000e+00f, 1.0000, - 0.0000000e+00f, 9.7254902e-01f, 0.0000000e+00f, 1.0000, - 3.9215686e-03f, 9.8823529e-01f, 0.0000000e+00f, 1.0000, - 3.9215686e-02f, 9.9215686e-01f, 0.0000000e+00f, 1.0000, - 8.2352941e-02f, 9.9607843e-01f, 0.0000000e+00f, 1.0000, - 1.2549020e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 1.7254902e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 2.1568627e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 2.7450980e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 3.4509804e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 4.0392157e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 4.5098039e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 4.9411765e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 5.5294118e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 6.1568627e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 6.8235294e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 7.1764706e-01f, 9.9607843e-01f, 0.0000000e+00f, 1.0000, - 7.4901961e-01f, 9.8823529e-01f, 0.0000000e+00f, 1.0000, - 7.7254902e-01f, 9.8431373e-01f, 0.0000000e+00f, 1.0000, - 7.8431373e-01f, 9.8039216e-01f, 0.0000000e+00f, 1.0000, - 7.9607843e-01f, 9.7647059e-01f, 0.0000000e+00f, 1.0000, - 8.1176471e-01f, 9.7254902e-01f, 0.0000000e+00f, 1.0000, - 8.3137255e-01f, 9.6470588e-01f, 0.0000000e+00f, 1.0000, - 8.4705882e-01f, 9.5686275e-01f, 0.0000000e+00f, 1.0000, - 8.5882353e-01f, 9.5686275e-01f, 0.0000000e+00f, 1.0000, - 8.7058824e-01f, 9.4901961e-01f, 0.0000000e+00f, 1.0000, - 8.8627451e-01f, 9.4509804e-01f, 0.0000000e+00f, 1.0000, - 9.0588235e-01f, 9.4117647e-01f, 0.0000000e+00f, 1.0000, - 9.2156863e-01f, 9.3333333e-01f, 0.0000000e+00f, 1.0000, - 9.2941176e-01f, 9.2156863e-01f, 0.0000000e+00f, 1.0000, - 9.4117647e-01f, 9.0980392e-01f, 0.0000000e+00f, 1.0000, - 9.4509804e-01f, 9.0196078e-01f, 0.0000000e+00f, 1.0000, - 9.4901961e-01f, 8.9411765e-01f, 0.0000000e+00f, 1.0000, - 9.5294118e-01f, 8.8235294e-01f, 0.0000000e+00f, 1.0000, - 9.6078431e-01f, 8.7058824e-01f, 0.0000000e+00f, 1.0000, - 9.6470588e-01f, 8.5882353e-01f, 0.0000000e+00f, 1.0000, - 9.7254902e-01f, 8.4705882e-01f, 0.0000000e+00f, 1.0000, - 9.7647059e-01f, 8.3921569e-01f, 0.0000000e+00f, 1.0000, - 9.8039216e-01f, 8.3529412e-01f, 0.0000000e+00f, 1.0000, - 9.8431373e-01f, 8.2352941e-01f, 0.0000000e+00f, 1.0000, - 9.8823529e-01f, 8.0784314e-01f, 0.0000000e+00f, 1.0000, - 9.9607843e-01f, 7.9607843e-01f, 0.0000000e+00f, 1.0000, - 9.9607843e-01f, 7.8823529e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.7647059e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.6078431e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.4117647e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.1764706e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.0588235e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.9019608e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.7450980e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.6274510e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.4705882e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.2745098e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.0784314e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.8431373e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.4509804e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.0980392e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 4.5882353e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 4.0784314e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 3.4901961e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.9803922e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.4313725e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.0000000e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 1.6078431e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 1.2156863e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.4509804e-02f, 0.0000000e+00f, 1.0000, - 9.9607843e-01f, 2.3529412e-02f, 0.0000000e+00f, 1.0000, - 9.9215686e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.8431373e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.7647059e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.6862745e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.5686275e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.4509804e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.3333333e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.2549020e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.1372549e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.0196078e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.9019608e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.7843137e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.6666667e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.5882353e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.5490196e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.5098039e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.4705882e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.3921569e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.3529412e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.3137255e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.2745098e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.1960784e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.1568627e-01f, 0.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.1176471e-01f, 3.9215686e-03f, 3.9215686e-03f, 1.0000, - 8.0392157e-01f, 2.3529412e-02f, 2.3529412e-02f, 1.0000, - 8.0392157e-01f, 3.9215686e-02f, 3.9215686e-02f, 1.0000, - 8.0000000e-01f, 7.4509804e-02f, 7.4509804e-02f, 1.0000, - 8.0000000e-01f, 1.2549020e-01f, 1.2549020e-01f, 1.0000, - 8.0000000e-01f, 1.8039216e-01f, 1.8039216e-01f, 1.0000, - 8.0000000e-01f, 2.5490196e-01f, 2.5490196e-01f, 1.0000, - 8.0000000e-01f, 3.2549020e-01f, 3.2549020e-01f, 1.0000, - 8.0000000e-01f, 3.8823529e-01f, 3.8823529e-01f, 1.0000, - 8.0000000e-01f, 4.3137255e-01f, 4.3137255e-01f, 1.0000, - 8.0000000e-01f, 4.8235294e-01f, 4.8235294e-01f, 1.0000, - 8.0000000e-01f, 5.5294118e-01f, 5.5294118e-01f, 1.0000, - 8.0000000e-01f, 6.2745098e-01f, 6.2745098e-01f, 1.0000, - 8.0000000e-01f, 6.9411765e-01f, 6.9411765e-01f, 1.0000, - 8.0000000e-01f, 7.4117647e-01f, 7.4117647e-01f, 1.0000, - 7.9607843e-01f, 7.8431373e-01f, 7.8431373e-01f, 1.0000, - 8.7058824e-01f, 8.7058824e-01f, 8.7058824e-01f, 1.0000, +/** + * Reference: https://en.wikipedia.org/wiki/SRGB#The_forward_transformation_.28CIE_xyY_or_CIE_XYZ_to_sRGB.29 + * + * CIE XYZ LMS fundamental values are created using tool at the following URL + * + * http://cvrl.ioo.ucl.ac.uk/cmfs.htm + * + * The following octave script is used to generate the + * spectrum (wavelength range of 390nm to 830nm) color map values. + * + * ``` + * lin2012xyz2e_5_7sf = csvread("lin2012xyz2e_1_7sf.csv"); + * lambda = transpose(lin2012xyz2e_5_7sf(:,1)); + * lms = transpose(lin2012xyz2e_5_7sf(:,2:4)); + * XYZ_to_sRGB = [ 3.2404542, -1.5371385, -0.4985314; + * -0.9692660, 1.8760108, 0.0415560; + * 0.0556434, -0.2040259, 1.0572252]; + * lrgb = XYZ_to_sRGB * lms; + * crgb = lrgb / max(max(lrgb)); + * crgb = (crgb > 0.0) .* crgb; + * bt = (abs(crgb) <= 0.0031308)*12.92.*abs(crgb); + * at = (abs(crgb) > 0.0031308).*(1.055*(abs(crgb).^(1/2.4))-0.055); + * srgb = bt+at; + * + * wvl_2s = 390:1.72:830; + * + * rInter = spline(lambda, srgb(1, :), wvl_2s); + * gInter = spline(lambda, srgb(2, :), wvl_2s); + * bInter = spline(lambda, srgb(3, :), wvl_2s); + * + * rgb = [rInter; gInter; bInter]; + * + * rgb = (rgb > 0.0) .* rgb; + * ``` + * */ +float cmap_spectrum[] = +{ + 0.01127986 , 0 , 0.08038571 , 1.0 , + 0.01541133 , 4.283736e-43 , 0.0994883 , 1.0 , + 0.02097097 , 4.675581e-42 , 0.1211598 , 1.0 , + 0.02837203 , 2.314546e-41 , 0.1455531 , 1.0 , + 0.03811155 , -0 , 0.1727644 , 1.0 , + 0.04989037 , -0 , 0.2028092 , 1.0 , + 0.06264411 , -0 , 0.235596 , 1.0 , + 0.07631406 , -0 , 0.2709367 , 1.0 , + 0.09082561 , 2.530498e-36 , 0.3085978 , 1.0 , + 0.1060682 , 3.623732e-35 , 0.3482384 , 1.0 , + 0.1217975 , 2.164607e-34 , 0.3893565 , 1.0 , + 0.1375286 , -0 , 0.4312382 , 1.0 , + 0.1526427 , -0 , 0.4729976 , 1.0 , + 0.166727 , -0 , 0.5139013 , 1.0 , + 0.1798212 , -0 , 0.5536313 , 1.0 , + 0.192078 , 1.678153e-29 , 0.5919745 , 1.0 , + 0.2032983 , 2.7707e-28 , 0.628283 , 1.0 , + 0.2127799 , 1.928899e-27 , 0.6612911 , 1.0 , + 0.2197537 , -0 , 0.6897002 , 1.0 , + 0.2242968 , -0 , 0.7138056 , 1.0 , + 0.2273781 , -0 , 0.735532 , 1.0 , + 0.2300782 , -0 , 0.7569831 , 1.0 , + 0.2323746 , 1.064461e-22 , 0.7783009 , 1.0 , + 0.2333157 , 2.08705e-21 , 0.7981219 , 1.0 , + 0.2318672 , 1.659222e-20 , 0.8151398 , 1.0 , + 0.2282162 , 0 , 0.8298212 , 1.0 , + 0.2234862 , -0 , 0.8436805 , 1.0 , + 0.2189124 , -0 , 0.857939 , 1.0 , + 0.2139276 , -0 , 0.8711407 , 1.0 , + 0.20688 , 6.308637e-16 , 0.8806263 , 1.0 , + 0.196124 , 1.548245e-14 , 0.8843348 , 1.0 , + 0.1817944 , 1.388462e-13 , 0.8836006 , 1.0 , + 0.1646237 , 2.019828e-13 , 0.8808589 , 1.0 , + 0.1448725 , -0 , 0.87777 , 1.0 , + 0.1206251 , -0 , 0.8730883 , 1.0 , + 0.08744735 , -0 , 0.8649303 , 1.0 , + 0.02884395 , 3.313162e-09 , 0.852481 , 1.0 , + -0 , 1.130061e-07 , 0.8377385 , 1.0 , + -0 , 1.135899e-06 , 0.8230781 , 1.0 , + -0 , 3.104831e-06 , 0.8101432 , 1.0 , + 9.696992e-07 , -0 , 0.7992217 , 1.0 , + 1.623357e-07 , -0 , 0.7904213 , 1.0 , + 1.133611e-08 , 0.03271853 , 0.7830682 , 1.0 , + -0 , 0.1042402 , 0.775201 , 1.0 , + -0 , 0.1493461 , 0.7648243 , 1.0 , + -0 , 0.1862506 , 0.7508291 , 1.0 , + -0 , 0.218295 , 0.7332213 , 1.0 , + 1.036851e-13 , 0.24667 , 0.7121434 , 1.0 , + 2.091245e-14 , 0.2720625 , 0.6880738 , 1.0 , + 1.655202e-15 , 0.2950642 , 0.6617792 , 1.0 , + 0 , 0.316165 , 0.6339956 , 1.0 , + -0 , 0.335616 , 0.6055155 , 1.0 , + -0 , 0.3535343 , 0.5771365 , 1.0 , + -0 , 0.3700778 , 0.5494901 , 1.0 , + 1.03101e-20 , 0.3854382 , 0.5224723 , 1.0 , + 2.651547e-21 , 0.3997472 , 0.4955986 , 1.0 , + 2.356953e-22 , 0.4131009 , 0.4685543 , 1.0 , + 3.785627e-24 , 0.4259492 , 0.4419153 , 1.0 , + -0 , 0.4389883 , 0.4165396 , 1.0 , + -0 , 0.4528801 , 0.39298 , 1.0 , + -0 , 0.4676521 , 0.3708999 , 1.0 , + 9.032476e-28 , 0.4830383 , 0.3497093 , 1.0 , + 3.304511e-28 , 0.4987859 , 0.3288291 , 1.0 , + 3.286476e-29 , 0.5149212 , 0.3074874 , 1.0 , + 9.348463e-31 , 0.5315348 , 0.2848347 , 1.0 , + 3.681496e-31 , 0.5486496 , 0.2600424 , 1.0 , + 1.011684e-29 , 0.5661069 , 0.2324497 , 1.0 , + 7.071628e-29 , 0.5836924 , 0.2011177 , 1.0 , + -0 , 0.6011751 , 0.1647146 , 1.0 , + -0 , 0.6183319 , 0.1210504 , 1.0 , + -0 , 0.6349509 , 0.06055694 , 1.0 , + -0 , 0.6509092 , -0 , 1.0 , + 3.902632e-24 , 0.6662545 , 0.0001858718 , 1.0 , + 7.651746e-23 , 0.6810419 , 3.748884e-05 , 1.0 , + 6.083201e-22 , 0.6950991 , 2.967208e-06 , 1.0 , + 0 , 0.7078848 , 0 , 1.0 , + -0 , 0.7188129 , -0 , 1.0 , + -0 , 0.7277558 , -0 , 1.0 , + -0 , 0.7351898 , -0 , 1.0 , + 2.312934e-17 , 0.7416417 , 1.848247e-11 , 1.0 , + 5.676326e-16 , 0.747321 , 4.753313e-12 , 1.0 , + 5.090515e-15 , 0.7521157 , 4.225207e-13 , 1.0 , + 7.405291e-15 , 0.7559187 , 6.786328e-15 , 1.0 , + -0 , 0.7588835 , -0 , 1.0 , + -0 , 0.7613638 , -0 , 1.0 , + -0 , 0.7636751 , -0 , 1.0 , + 1.214704e-10 , 0.7656616 , 1.619213e-18 , 1.0 , + 4.143139e-09 , 0.7668859 , 5.923872e-19 , 1.0 , + 4.164544e-08 , 0.7669441 , 5.893425e-20 , 1.0 , + 1.138323e-07 , 0.7657159 , 1.72786e-21 , 1.0 , + -0 , 0.763215 , -0 , 1.0 , + -0 , 0.7595283 , -0 , 1.0 , + -0 , 0.7551301 , -0 , 1.0 , + 0.000477086 , 0.7506213 , 1.053369e-25 , 1.0 , + 0.05939901 , 0.7463866 , 7.241023e-26 , 1.0 , + 0.202861 , 0.7419336 , 8.074312e-27 , 1.0 , + 0.2856093 , 0.7365457 , 3.290042e-28 , 1.0 , + 0.3508833 , 0.729783 , -0 , 1.0 , + 0.4059397 , 0.7220666 , -0 , 1.0 , + 0.453527 , 0.7139808 , -0 , 1.0 , + 0.4956772 , 0.7058158 , 0 , 1.0 , + 0.5347564 , 0.6971628 , 8.653073e-33 , 1.0 , + 0.5723221 , 0.6875168 , 1.088426e-33 , 1.0 , + 0.6088265 , 0.676611 , 5.551314e-35 , 1.0 , + 0.6436856 , 0.6646189 , -0 , 1.0 , + 0.6764169 , 0.6517598 , -0 , 1.0 , + 0.7069315 , 0.638036 , -0 , 1.0 , + 0.7354506 , 0.6231365 , -0 , 1.0 , + 0.7620698 , 0.6067575 , 1.005948e-39 , 1.0 , + 0.7871517 , 0.5889929 , 1.444958e-40 , 1.0 , + 0.8115048 , 0.5703457 , 8.751802e-42 , 1.0 , + 0.8359523 , 0.5512596 , -0 , 1.0 , + 0.8601499 , 0.5318565 , -0 , 1.0 , + 0.882742 , 0.5120416 , -0 , 1.0 , + 0.9025234 , 0.4917644 , -0 , 1.0 , + 0.9195204 , 0.470838 , 1.128873e-46 , 1.0 , + 0.9345009 , 0.4489329 , 1.889827e-47 , 1.0 , + 0.9480608 , 0.4257168 , 1.31969e-48 , 1.0 , + 0.9601983 , 0.4011625 , -0 , 1.0 , + 0.9706579 , 0.3754125 , -0 , 1.0 , + 0.9792892 , 0.3485489 , -0 , 1.0 , + 0.9862737 , 0.3203481 , -0 , 1.0 , + 0.9918932 , 0.2903512 , 1.207048e-53 , 1.0 , + 0.9963008 , 0.257945 , 2.434517e-54 , 1.0 , + 0.9991509 , 0.2225878 , 1.926899e-55 , 1.0 , + 1 , 0.1833567 , 0 , 1.0 , + 0.9985792 , 0.1379186 , -0 , 1.0 , + 0.9950785 , 0.07789979 , -0 , 1.0 , + 0.9897852 , -0 , -0 , 1.0 , + 0.9829172 , 0.0002535774 , 1.200248e-60 , 1.0 , + 0.9745285 , 6.521493e-05 , 3.086791e-61 , 1.0 , + 0.9646424 , 5.796938e-06 , 2.743841e-62 , 1.0 , + 0.9533994 , 9.310768e-08 , 4.407027e-64 , 1.0 , + 0.9411956 , -0 , -0 , 1.0 , + 0.9284233 , -0 , -0 , 1.0 , + 0.9150054 , -0 , -0 , 1.0 , + 0.9001256 , 2.221542e-11 , 1.051513e-67 , 1.0 , + 0.8830108 , 8.127488e-12 , 3.846951e-68 , 1.0 , + 0.8636108 , 8.085714e-13 , 3.827178e-69 , 1.0 , + 0.8427338 , 2.370605e-14 , 1.122069e-70 , 1.0 , + 0.8211542 , -0 , -0 , 1.0 , + 0.7993154 , -0 , -0 , 1.0 , + 0.7773565 , -0 , -0 , 1.0 , + 0.7553974 , 1.44521e-18 , 6.840554e-75 , 1.0 , + 0.733615 , 9.934605e-19 , 4.702305e-75 , 1.0 , + 0.7122149 , 1.107787e-19 , 5.243442e-76 , 1.0 , + 0.6913219 , 4.513902e-21 , 2.136547e-77 , 1.0 , + 0.6704993 , -0 , -0 , 1.0 , + 0.6490373 , -0 , -0 , 1.0 , + 0.6264233 , -0 , -0 , 1.0 , + 0.6029169 , 0 , 0 , 1.0 , + 0.5790875 , 1.187192e-25 , 5.619288e-82 , 1.0 , + 0.555396 , 1.493308e-26 , 7.068214e-83 , 1.0 , + 0.5320582 , 7.616342e-28 , 3.605012e-84 , 1.0 , + 0.5091932 , -0 , -0 , 1.0 , + 0.4868896 , -0 , -0 , 1.0 , + 0.4651525 , -0 , -0 , 1.0 , + 0.4439647 , -0 , -0 , 1.0 , + 0.4233143 , 1.380149e-32 , 6.532603e-89 , 1.0 , + 0.4031979 , 1.982467e-33 , 9.38353e-90 , 1.0 , + 0.3836147 , 1.200738e-34 , 5.683402e-91 , 1.0 , + 0.364568 , -0 , -0 , 1.0 , + 0.3460668 , -0 , -0 , 1.0 , + 0.328118 , -0 , -0 , 1.0 , + 0.31072 , -0 , -0 , 1.0 , + 0.2938603 , 1.548801e-39 , 7.330877e-96 , 1.0 , + 0.2775262 , 2.592822e-40 , 1.22725e-96 , 1.0 , + 0.2617186 , 1.8106e-41 , 8.57004e-98 , 1.0 , + 0.2464574 , -0 , -0 , 1.0 , + 0.2317579 , -0 , -0 , 1.0 , + 0.2175854 , -0 , -0 , 1.0 , + 0.2038544 , -0 , -0 , 1.0 , + 0.1904974 , 1.656057e-46 , 7.838545e-103 , 1.0 , + 0.1776063 , 3.340131e-47 , 1.580971e-103 , 1.0 , + 0.1653964 , 2.643684e-48 , 1.251324e-104 , 1.0 , + 0.154031 , 0 , 0 , 1.0 , + 0.1434617 , -0 , -0 , 1.0 , + 0.1335096 , -0 , -0 , 1.0 , + 0.1240279 , -0 , -0 , 1.0 , + 0.1149732 , 1.646727e-53 , 7.794384e-110 , 1.0 , + 0.1063548 , 4.235044e-54 , 2.004556e-110 , 1.0 , + 0.09817205 , 3.76452e-55 , 1.781845e-111 , 1.0 , + 0.09037656 , 6.046394e-57 , 2.861915e-113 , 1.0 , + 0.08290515 , -0 , -0 , 1.0 , + 0.07571368 , -0 , -0 , 1.0 , + 0.06881608 , -0 , -0 , 1.0 , + 0.06224029 , 1.442665e-60 , 6.828506e-117 , 1.0 , + 0.05600614 , 5.277974e-61 , 2.498202e-117 , 1.0 , + 0.05012488 , 5.250846e-62 , 2.485361e-118 , 1.0 , + 0.04460194 , 1.539466e-63 , 7.286692e-120 , 1.0 , + 0.03941653 , -0 , -0 , 1.0 , + 0.03471122 , -0 , -0 , 1.0 , + 0.03057 , -0 , -0 , 1.0 , + 0.02691357 , 9.385166e-68 , 4.442242e-124 , 1.0 , + 0.02369874 , 6.451512e-68 , 3.053667e-124 , 1.0 , + 0.0208857 , 7.193945e-69 , 3.40508e-125 , 1.0 , + 0.01842852 , 2.931319e-70 , 1.387469e-126 , 1.0 , + 0.01627408 , -0 , -0 , 1.0 , + 0.01437737 , -0 , -0 , 1.0 , + 0.01270179 , -0 , -0 , 1.0 , + 0.01121754 , 0 , 0 , 1.0 , + 0.009899972 , 7.709602e-75 , 3.649154e-131 , 1.0 , + 0.008734158 , 9.697513e-76 , 4.590084e-132 , 1.0 , + 0.007712007 , 4.946037e-77 , 2.341087e-133 , 1.0 , + 0.006823059 , -0 , -0 , 1.0 , + 0.006048222 , -0 , -0 , 1.0 , + 0.005364949 , -0 , -0 , 1.0 , + 0.004756176 , -0 , -0 , 1.0 , + 0.004213659 , 8.96266e-82 , 4.242259e-138 , 1.0 , + 0.003733352 , 1.28741e-82 , 6.093645e-139 , 1.0 , + 0.003310483 , 7.797566e-84 , 3.69079e-140 , 1.0 , + 0.002938437 , -0 , -0 , 1.0 , + 0.00261044 , -0 , -0 , 1.0 , + 0.002320674 , -0 , -0 , 1.0 , + 0.002063942 , -0 , -0 , 1.0 , + 0.001835774 , 1.005788e-88 , 4.760656e-145 , 1.0 , + 0.001632613 , 1.683773e-89 , 7.969734e-146 , 1.0 , + 0.001452329 , 1.1758e-90 , 5.565367e-147 , 1.0 , + 0.001293112 , -0 , -0 , 1.0 , + 0.001152818 , -0 , -0 , 1.0 , + 0.001028356 , -0 , -0 , 1.0 , + 0.0009169919 , -0 , -0 , 1.0 , + 0.0008169642 , 1.07544e-95 , 5.090335e-152 , 1.0 , + 0.0007278915 , 2.169074e-96 , 1.026679e-152 , 1.0 , + 0.0006493738 , 1.716803e-97 , 8.126072e-154 , 1.0 , + 0.0005804669 , 0 , 0 , 1.0 , + 0.0005195018 , -0 , -0 , 1.0 , + 0.0004650555 , -0 , -0 , 1.0 , + 0.0004161944 , -0 , -0 , 1.0 , + 0.0003724622 , 1.069381e-102 , 5.061657e-159 , 1.0 , + 0.0003334429 , 2.750229e-103 , 1.301755e-159 , 1.0 , + 0.0002986586 , 2.444671e-104 , 1.157126e-160 , 1.0 , + 0.0002675824 , 3.926516e-106 , 1.858521e-162 , 1.0 , + 0.0002397598 , -0 , -0 , 1.0 , + 0.000214852 , -0 , -0 , 1.0 , + 0.0001926076 , -0 , -0 , 1.0 , + 0.0001727859 , 9.368637e-110 , 4.434418e-166 , 1.0 , + 0.0001551329 , 3.427506e-110 , 1.622327e-166 , 1.0 , + 0.0001393986 , 3.409889e-111 , 1.613989e-167 , 1.0 , + 0.0001253597 , 9.997262e-113 , 4.731963e-169 , 1.0 , + 0.0001127865 , -0 , -0 , 1.0 , + 0.0001014646 , -0 , -0 , 1.0 , + 9.122623e-05 , -0 , -0 , 1.0 , + 8.19908e-05 , 6.094707e-117 , 2.884783e-173 , 1.0 , + 7.370771e-05 , 4.189599e-117 , 1.983045e-173 , 1.0 , + 6.631398e-05 , 4.671733e-118 , 2.211252e-174 , 1.0 , + 5.972128e-05 , 1.903592e-119 , 9.010195e-176 , 1.0 , + 5.384015e-05 , -0 , -0 , 1.0 , + 4.858824e-05 , -0 , -0 , 1.0 , + 4.387946e-05 , -0 , -0 , 1.0 , + 3.963764e-05 , 0 , 0 , 1.0 , + 3.580377e-05 , 5.0066e-124 , 2.369753e-180 , 1.0 , + 3.234196e-05 , 6.297548e-125 , 2.980792e-181 , 1.0 , + 2.92219e-05 , 3.212085e-126 , 1.520363e-182 , 1.0 , + 2.641456e-05 , -0 , -0 , 1.0 , + 2.389238e-05 , -0 , -0 , 1.0 , }; -float cmap_colors[] = { +float cmap_colors[] = +{ 1.0000000e+00f, 0.0000000e+00f, 1.6470588e-01f, 1.0000, 1.0000000e+00f, 0.0000000e+00f, 1.6078431e-01f, 1.0000, 1.0000000e+00f, 0.0000000e+00f, 1.4509804e-01f, 1.0000, @@ -792,7 +828,8 @@ float cmap_colors[] = { 1.0000000e+00f, 6.9411765e-01f, 9.4117647e-01f, 1.0000, }; -float cmap_red[] = { +float cmap_red[] = +{ 1.0000000000f, 1.0000000000f, 1.0000000000f, 1.0000f, 1.0000000000f, 1.0000000000f, 0.9921568627f, 1.0000f, 1.0000000000f, 0.9960784314f, 0.9843137255f, 1.0000f, @@ -1050,7 +1087,8 @@ float cmap_red[] = { }; /*-- http://mycarta.wordpress.com/2013/03/06/perceptual-rainbow-palette-the-goodies/ */ -float cmap_mood[] = { +float cmap_mood[] = +{ 0.5151f, 0.0482f, 0.6697f, 1.0000, 0.5159f, 0.0561f, 0.6785f, 1.0000, 0.5166f, 0.0639f, 0.6872f, 1.0000, @@ -1309,7 +1347,8 @@ float cmap_mood[] = { 0.8000f, 0.9255f, 0.3529f, 1.0000, }; -float cmap_heat[] = { +float cmap_heat[] = +{ 0.0000000e+00f, 0.0000000e+00f, 0.0000000e+00f, 1.0000f, 0.0000000e+00f, 0.0000000e+00f, 1.1909524e-01f, 1.0000f, 0.0000000e+00f, 0.0000000e+00f, 2.4069524e-01f, 1.0000f, @@ -1376,7 +1415,8 @@ float cmap_heat[] = { 1.0000000e+00f, 1.0000000e+00f, 1.0000000e+00f, 1.0000f, }; -float cmap_blue[] = { +float cmap_blue[] = +{ 1.0000000000f, 1.0000000000f, 1.0000000000f, 1.0000f, 0.9960784314f, 1.0000000000f, 1.0000000000f, 1.0000f, 0.9921568627f, 0.9960784314f, 1.0000000000f, 1.0000f, From b0ea574ba9064c8119a555edf692b98c3e281873 Mon Sep 17 00:00:00 2001 From: pradeep Date: Sat, 19 Nov 2016 22:55:48 +0530 Subject: [PATCH 2/5] New colormaps: inferno, magma, plasma and viridis --- include/fg/defines.h | 18 +- src/backend/cmap.hpp | 1059 ++++++++++++++++++++++++++ src/backend/opengl/colormap_impl.cpp | 130 ++-- src/backend/opengl/colormap_impl.hpp | 30 +- src/backend/opengl/window_impl.cpp | 37 +- 5 files changed, 1141 insertions(+), 133 deletions(-) diff --git a/include/fg/defines.h b/include/fg/defines.h index 3e69742a..66d954d4 100644 --- a/include/fg/defines.h +++ b/include/fg/defines.h @@ -125,13 +125,17 @@ typedef enum { \image html gfx_palette.png */ typedef enum { - FG_COLOR_MAP_DEFAULT = 0, ///< Default [0-255] grayscale colormap - FG_COLOR_MAP_SPECTRUM = 1, ///< Visual spectrum (390nm-830nm) in sRGB colorspace - FG_COLOR_MAP_COLORS = 2, ///< Pure Colors - FG_COLOR_MAP_RED = 3, ///< Red color map - FG_COLOR_MAP_MOOD = 4, ///< Mood color map - FG_COLOR_MAP_HEAT = 5, ///< Heat color map - FG_COLOR_MAP_BLUE = 6 ///< Blue color map + FG_COLOR_MAP_DEFAULT = 0, ///< Default [0-255] grayscale colormap + FG_COLOR_MAP_SPECTRUM = 1, ///< Visual spectrum (390nm-830nm) in sRGB colorspace + FG_COLOR_MAP_COLORS = 2, ///< Pure Colors + FG_COLOR_MAP_RED = 3, ///< Red color map + FG_COLOR_MAP_MOOD = 4, ///< Mood color map + FG_COLOR_MAP_HEAT = 5, ///< Heat color map + FG_COLOR_MAP_BLUE = 6, ///< Blue color map + FG_COLOR_MAP_INFERNO = 7, ///< perceptually uniform shades of black-red-yellow + FG_COLOR_MAP_MAGMA = 8, ///< perceptually uniform shades of black-red-white + FG_COLOR_MAP_PLASMA = 9, ///< perceptually uniform shades of blue-red-yellow + FG_COLOR_MAP_VIRIDIS = 10, ///< perceptually uniform shades of blue-green-yellow } fg_color_map; typedef enum { diff --git a/src/backend/cmap.hpp b/src/backend/cmap.hpp index 9f1c654c..2c1265de 100644 --- a/src/backend/cmap.hpp +++ b/src/backend/cmap.hpp @@ -1672,3 +1672,1062 @@ float cmap_blue[] = 0.1058823529f, 0.1803921569f, 0.3960784314f, 1.0000f, 0.1058823529f, 0.1725490196f, 0.3843137255f, 1.0000f, }; + +/// Next four colormaps: inferno, magma, plasma and viridis are matplotlib +/// colormaps by Nathaniel J. Smith, Stefan van der Walt, and +/// (in the case of viridis) Eric Firing. +/// +/// These colormaps are released under the CC0 license / public domain dedication. +/// We would appreciate credit if you use or redistribute these colormaps, +/// but do not impose any legal restrictions. +/// +/// To the extent possible under law, the persons who associated CC0 with +/// mpl-colormaps have waived all copyright and related or neighboring rights +/// to mpl-colormaps. +/// +/// You should have received a copy of the CC0 legalcode along with this +/// work. If not, see . + +/// inferno perceptually uniform shades of black-red-yellow +float cmap_inferno[] = +{ + 0.001462, 0.000466, 0.013866, 1.0, + 0.002267, 0.001270, 0.018570, 1.0, + 0.003299, 0.002249, 0.024239, 1.0, + 0.004547, 0.003392, 0.030909, 1.0, + 0.006006, 0.004692, 0.038558, 1.0, + 0.007676, 0.006136, 0.046836, 1.0, + 0.009561, 0.007713, 0.055143, 1.0, + 0.011663, 0.009417, 0.063460, 1.0, + 0.013995, 0.011225, 0.071862, 1.0, + 0.016561, 0.013136, 0.080282, 1.0, + 0.019373, 0.015133, 0.088767, 1.0, + 0.022447, 0.017199, 0.097327, 1.0, + 0.025793, 0.019331, 0.105930, 1.0, + 0.029432, 0.021503, 0.114621, 1.0, + 0.033385, 0.023702, 0.123397, 1.0, + 0.037668, 0.025921, 0.132232, 1.0, + 0.042253, 0.028139, 0.141141, 1.0, + 0.046915, 0.030324, 0.150164, 1.0, + 0.051644, 0.032474, 0.159254, 1.0, + 0.056449, 0.034569, 0.168414, 1.0, + 0.061340, 0.036590, 0.177642, 1.0, + 0.066331, 0.038504, 0.186962, 1.0, + 0.071429, 0.040294, 0.196354, 1.0, + 0.076637, 0.041905, 0.205799, 1.0, + 0.081962, 0.043328, 0.215289, 1.0, + 0.087411, 0.044556, 0.224813, 1.0, + 0.092990, 0.045583, 0.234358, 1.0, + 0.098702, 0.046402, 0.243904, 1.0, + 0.104551, 0.047008, 0.253430, 1.0, + 0.110536, 0.047399, 0.262912, 1.0, + 0.116656, 0.047574, 0.272321, 1.0, + 0.122908, 0.047536, 0.281624, 1.0, + 0.129285, 0.047293, 0.290788, 1.0, + 0.135778, 0.046856, 0.299776, 1.0, + 0.142378, 0.046242, 0.308553, 1.0, + 0.149073, 0.045468, 0.317085, 1.0, + 0.155850, 0.044559, 0.325338, 1.0, + 0.162689, 0.043554, 0.333277, 1.0, + 0.169575, 0.042489, 0.340874, 1.0, + 0.176493, 0.041402, 0.348111, 1.0, + 0.183429, 0.040329, 0.354971, 1.0, + 0.190367, 0.039309, 0.361447, 1.0, + 0.197297, 0.038400, 0.367535, 1.0, + 0.204209, 0.037632, 0.373238, 1.0, + 0.211095, 0.037030, 0.378563, 1.0, + 0.217949, 0.036615, 0.383522, 1.0, + 0.224763, 0.036405, 0.388129, 1.0, + 0.231538, 0.036405, 0.392400, 1.0, + 0.238273, 0.036621, 0.396353, 1.0, + 0.244967, 0.037055, 0.400007, 1.0, + 0.251620, 0.037705, 0.403378, 1.0, + 0.258234, 0.038571, 0.406485, 1.0, + 0.264810, 0.039647, 0.409345, 1.0, + 0.271347, 0.040922, 0.411976, 1.0, + 0.277850, 0.042353, 0.414392, 1.0, + 0.284321, 0.043933, 0.416608, 1.0, + 0.290763, 0.045644, 0.418637, 1.0, + 0.297178, 0.047470, 0.420491, 1.0, + 0.303568, 0.049396, 0.422182, 1.0, + 0.309935, 0.051407, 0.423721, 1.0, + 0.316282, 0.053490, 0.425116, 1.0, + 0.322610, 0.055634, 0.426377, 1.0, + 0.328921, 0.057827, 0.427511, 1.0, + 0.335217, 0.060060, 0.428524, 1.0, + 0.341500, 0.062325, 0.429425, 1.0, + 0.347771, 0.064616, 0.430217, 1.0, + 0.354032, 0.066925, 0.430906, 1.0, + 0.360284, 0.069247, 0.431497, 1.0, + 0.366529, 0.071579, 0.431994, 1.0, + 0.372768, 0.073915, 0.432400, 1.0, + 0.379001, 0.076253, 0.432719, 1.0, + 0.385228, 0.078591, 0.432955, 1.0, + 0.391453, 0.080927, 0.433109, 1.0, + 0.397674, 0.083257, 0.433183, 1.0, + 0.403894, 0.085580, 0.433179, 1.0, + 0.410113, 0.087896, 0.433098, 1.0, + 0.416331, 0.090203, 0.432943, 1.0, + 0.422549, 0.092501, 0.432714, 1.0, + 0.428768, 0.094790, 0.432412, 1.0, + 0.434987, 0.097069, 0.432039, 1.0, + 0.441207, 0.099338, 0.431594, 1.0, + 0.447428, 0.101597, 0.431080, 1.0, + 0.453651, 0.103848, 0.430498, 1.0, + 0.459875, 0.106089, 0.429846, 1.0, + 0.466100, 0.108322, 0.429125, 1.0, + 0.472328, 0.110547, 0.428334, 1.0, + 0.478558, 0.112764, 0.427475, 1.0, + 0.484789, 0.114974, 0.426548, 1.0, + 0.491022, 0.117179, 0.425552, 1.0, + 0.497257, 0.119379, 0.424488, 1.0, + 0.503493, 0.121575, 0.423356, 1.0, + 0.509730, 0.123769, 0.422156, 1.0, + 0.515967, 0.125960, 0.420887, 1.0, + 0.522206, 0.128150, 0.419549, 1.0, + 0.528444, 0.130341, 0.418142, 1.0, + 0.534683, 0.132534, 0.416667, 1.0, + 0.540920, 0.134729, 0.415123, 1.0, + 0.547157, 0.136929, 0.413511, 1.0, + 0.553392, 0.139134, 0.411829, 1.0, + 0.559624, 0.141346, 0.410078, 1.0, + 0.565854, 0.143567, 0.408258, 1.0, + 0.572081, 0.145797, 0.406369, 1.0, + 0.578304, 0.148039, 0.404411, 1.0, + 0.584521, 0.150294, 0.402385, 1.0, + 0.590734, 0.152563, 0.400290, 1.0, + 0.596940, 0.154848, 0.398125, 1.0, + 0.603139, 0.157151, 0.395891, 1.0, + 0.609330, 0.159474, 0.393589, 1.0, + 0.615513, 0.161817, 0.391219, 1.0, + 0.621685, 0.164184, 0.388781, 1.0, + 0.627847, 0.166575, 0.386276, 1.0, + 0.633998, 0.168992, 0.383704, 1.0, + 0.640135, 0.171438, 0.381065, 1.0, + 0.646260, 0.173914, 0.378359, 1.0, + 0.652369, 0.176421, 0.375586, 1.0, + 0.658463, 0.178962, 0.372748, 1.0, + 0.664540, 0.181539, 0.369846, 1.0, + 0.670599, 0.184153, 0.366879, 1.0, + 0.676638, 0.186807, 0.363849, 1.0, + 0.682656, 0.189501, 0.360757, 1.0, + 0.688653, 0.192239, 0.357603, 1.0, + 0.694627, 0.195021, 0.354388, 1.0, + 0.700576, 0.197851, 0.351113, 1.0, + 0.706500, 0.200728, 0.347777, 1.0, + 0.712396, 0.203656, 0.344383, 1.0, + 0.718264, 0.206636, 0.340931, 1.0, + 0.724103, 0.209670, 0.337424, 1.0, + 0.729909, 0.212759, 0.333861, 1.0, + 0.735683, 0.215906, 0.330245, 1.0, + 0.741423, 0.219112, 0.326576, 1.0, + 0.747127, 0.222378, 0.322856, 1.0, + 0.752794, 0.225706, 0.319085, 1.0, + 0.758422, 0.229097, 0.315266, 1.0, + 0.764010, 0.232554, 0.311399, 1.0, + 0.769556, 0.236077, 0.307485, 1.0, + 0.775059, 0.239667, 0.303526, 1.0, + 0.780517, 0.243327, 0.299523, 1.0, + 0.785929, 0.247056, 0.295477, 1.0, + 0.791293, 0.250856, 0.291390, 1.0, + 0.796607, 0.254728, 0.287264, 1.0, + 0.801871, 0.258674, 0.283099, 1.0, + 0.807082, 0.262692, 0.278898, 1.0, + 0.812239, 0.266786, 0.274661, 1.0, + 0.817341, 0.270954, 0.270390, 1.0, + 0.822386, 0.275197, 0.266085, 1.0, + 0.827372, 0.279517, 0.261750, 1.0, + 0.832299, 0.283913, 0.257383, 1.0, + 0.837165, 0.288385, 0.252988, 1.0, + 0.841969, 0.292933, 0.248564, 1.0, + 0.846709, 0.297559, 0.244113, 1.0, + 0.851384, 0.302260, 0.239636, 1.0, + 0.855992, 0.307038, 0.235133, 1.0, + 0.860533, 0.311892, 0.230606, 1.0, + 0.865006, 0.316822, 0.226055, 1.0, + 0.869409, 0.321827, 0.221482, 1.0, + 0.873741, 0.326906, 0.216886, 1.0, + 0.878001, 0.332060, 0.212268, 1.0, + 0.882188, 0.337287, 0.207628, 1.0, + 0.886302, 0.342586, 0.202968, 1.0, + 0.890341, 0.347957, 0.198286, 1.0, + 0.894305, 0.353399, 0.193584, 1.0, + 0.898192, 0.358911, 0.188860, 1.0, + 0.902003, 0.364492, 0.184116, 1.0, + 0.905735, 0.370140, 0.179350, 1.0, + 0.909390, 0.375856, 0.174563, 1.0, + 0.912966, 0.381636, 0.169755, 1.0, + 0.916462, 0.387481, 0.164924, 1.0, + 0.919879, 0.393389, 0.160070, 1.0, + 0.923215, 0.399359, 0.155193, 1.0, + 0.926470, 0.405389, 0.150292, 1.0, + 0.929644, 0.411479, 0.145367, 1.0, + 0.932737, 0.417627, 0.140417, 1.0, + 0.935747, 0.423831, 0.135440, 1.0, + 0.938675, 0.430091, 0.130438, 1.0, + 0.941521, 0.436405, 0.125409, 1.0, + 0.944285, 0.442772, 0.120354, 1.0, + 0.946965, 0.449191, 0.115272, 1.0, + 0.949562, 0.455660, 0.110164, 1.0, + 0.952075, 0.462178, 0.105031, 1.0, + 0.954506, 0.468744, 0.099874, 1.0, + 0.956852, 0.475356, 0.094695, 1.0, + 0.959114, 0.482014, 0.089499, 1.0, + 0.961293, 0.488716, 0.084289, 1.0, + 0.963387, 0.495462, 0.079073, 1.0, + 0.965397, 0.502249, 0.073859, 1.0, + 0.967322, 0.509078, 0.068659, 1.0, + 0.969163, 0.515946, 0.063488, 1.0, + 0.970919, 0.522853, 0.058367, 1.0, + 0.972590, 0.529798, 0.053324, 1.0, + 0.974176, 0.536780, 0.048392, 1.0, + 0.975677, 0.543798, 0.043618, 1.0, + 0.977092, 0.550850, 0.039050, 1.0, + 0.978422, 0.557937, 0.034931, 1.0, + 0.979666, 0.565057, 0.031409, 1.0, + 0.980824, 0.572209, 0.028508, 1.0, + 0.981895, 0.579392, 0.026250, 1.0, + 0.982881, 0.586606, 0.024661, 1.0, + 0.983779, 0.593849, 0.023770, 1.0, + 0.984591, 0.601122, 0.023606, 1.0, + 0.985315, 0.608422, 0.024202, 1.0, + 0.985952, 0.615750, 0.025592, 1.0, + 0.986502, 0.623105, 0.027814, 1.0, + 0.986964, 0.630485, 0.030908, 1.0, + 0.987337, 0.637890, 0.034916, 1.0, + 0.987622, 0.645320, 0.039886, 1.0, + 0.987819, 0.652773, 0.045581, 1.0, + 0.987926, 0.660250, 0.051750, 1.0, + 0.987945, 0.667748, 0.058329, 1.0, + 0.987874, 0.675267, 0.065257, 1.0, + 0.987714, 0.682807, 0.072489, 1.0, + 0.987464, 0.690366, 0.079990, 1.0, + 0.987124, 0.697944, 0.087731, 1.0, + 0.986694, 0.705540, 0.095694, 1.0, + 0.986175, 0.713153, 0.103863, 1.0, + 0.985566, 0.720782, 0.112229, 1.0, + 0.984865, 0.728427, 0.120785, 1.0, + 0.984075, 0.736087, 0.129527, 1.0, + 0.983196, 0.743758, 0.138453, 1.0, + 0.982228, 0.751442, 0.147565, 1.0, + 0.981173, 0.759135, 0.156863, 1.0, + 0.980032, 0.766837, 0.166353, 1.0, + 0.978806, 0.774545, 0.176037, 1.0, + 0.977497, 0.782258, 0.185923, 1.0, + 0.976108, 0.789974, 0.196018, 1.0, + 0.974638, 0.797692, 0.206332, 1.0, + 0.973088, 0.805409, 0.216877, 1.0, + 0.971468, 0.813122, 0.227658, 1.0, + 0.969783, 0.820825, 0.238686, 1.0, + 0.968041, 0.828515, 0.249972, 1.0, + 0.966243, 0.836191, 0.261534, 1.0, + 0.964394, 0.843848, 0.273391, 1.0, + 0.962517, 0.851476, 0.285546, 1.0, + 0.960626, 0.859069, 0.298010, 1.0, + 0.958720, 0.866624, 0.310820, 1.0, + 0.956834, 0.874129, 0.323974, 1.0, + 0.954997, 0.881569, 0.337475, 1.0, + 0.953215, 0.888942, 0.351369, 1.0, + 0.951546, 0.896226, 0.365627, 1.0, + 0.950018, 0.903409, 0.380271, 1.0, + 0.948683, 0.910473, 0.395289, 1.0, + 0.947594, 0.917399, 0.410665, 1.0, + 0.946809, 0.924168, 0.426373, 1.0, + 0.946392, 0.930761, 0.442367, 1.0, + 0.946403, 0.937159, 0.458592, 1.0, + 0.946903, 0.943348, 0.474970, 1.0, + 0.947937, 0.949318, 0.491426, 1.0, + 0.949545, 0.955063, 0.507860, 1.0, + 0.951740, 0.960587, 0.524203, 1.0, + 0.954529, 0.965896, 0.540361, 1.0, + 0.957896, 0.971003, 0.556275, 1.0, + 0.961812, 0.975924, 0.571925, 1.0, + 0.966249, 0.980678, 0.587206, 1.0, + 0.971162, 0.985282, 0.602154, 1.0, + 0.976511, 0.989753, 0.616760, 1.0, + 0.982257, 0.994109, 0.631017, 1.0, + 0.988362, 0.998364, 0.644924, 1.0, +}; + +/// magma perceptually uniform shades of black-red-white +float cmap_magma[] = +{ + 0.001462, 0.000466, 0.013866, 1.0, + 0.002258, 0.001295, 0.018331, 1.0, + 0.003279, 0.002305, 0.023708, 1.0, + 0.004512, 0.003490, 0.029965, 1.0, + 0.005950, 0.004843, 0.037130, 1.0, + 0.007588, 0.006356, 0.044973, 1.0, + 0.009426, 0.008022, 0.052844, 1.0, + 0.011465, 0.009828, 0.060750, 1.0, + 0.013708, 0.011771, 0.068667, 1.0, + 0.016156, 0.013840, 0.076603, 1.0, + 0.018815, 0.016026, 0.084584, 1.0, + 0.021692, 0.018320, 0.092610, 1.0, + 0.024792, 0.020715, 0.100676, 1.0, + 0.028123, 0.023201, 0.108787, 1.0, + 0.031696, 0.025765, 0.116965, 1.0, + 0.035520, 0.028397, 0.125209, 1.0, + 0.039608, 0.031090, 0.133515, 1.0, + 0.043830, 0.033830, 0.141886, 1.0, + 0.048062, 0.036607, 0.150327, 1.0, + 0.052320, 0.039407, 0.158841, 1.0, + 0.056615, 0.042160, 0.167446, 1.0, + 0.060949, 0.044794, 0.176129, 1.0, + 0.065330, 0.047318, 0.184892, 1.0, + 0.069764, 0.049726, 0.193735, 1.0, + 0.074257, 0.052017, 0.202660, 1.0, + 0.078815, 0.054184, 0.211667, 1.0, + 0.083446, 0.056225, 0.220755, 1.0, + 0.088155, 0.058133, 0.229922, 1.0, + 0.092949, 0.059904, 0.239164, 1.0, + 0.097833, 0.061531, 0.248477, 1.0, + 0.102815, 0.063010, 0.257854, 1.0, + 0.107899, 0.064335, 0.267289, 1.0, + 0.113094, 0.065492, 0.276784, 1.0, + 0.118405, 0.066479, 0.286321, 1.0, + 0.123833, 0.067295, 0.295879, 1.0, + 0.129380, 0.067935, 0.305443, 1.0, + 0.135053, 0.068391, 0.315000, 1.0, + 0.140858, 0.068654, 0.324538, 1.0, + 0.146785, 0.068738, 0.334011, 1.0, + 0.152839, 0.068637, 0.343404, 1.0, + 0.159018, 0.068354, 0.352688, 1.0, + 0.165308, 0.067911, 0.361816, 1.0, + 0.171713, 0.067305, 0.370771, 1.0, + 0.178212, 0.066576, 0.379497, 1.0, + 0.184801, 0.065732, 0.387973, 1.0, + 0.191460, 0.064818, 0.396152, 1.0, + 0.198177, 0.063862, 0.404009, 1.0, + 0.204935, 0.062907, 0.411514, 1.0, + 0.211718, 0.061992, 0.418647, 1.0, + 0.218512, 0.061158, 0.425392, 1.0, + 0.225302, 0.060445, 0.431742, 1.0, + 0.232077, 0.059889, 0.437695, 1.0, + 0.238826, 0.059517, 0.443256, 1.0, + 0.245543, 0.059352, 0.448436, 1.0, + 0.252220, 0.059415, 0.453248, 1.0, + 0.258857, 0.059706, 0.457710, 1.0, + 0.265447, 0.060237, 0.461840, 1.0, + 0.271994, 0.060994, 0.465660, 1.0, + 0.278493, 0.061978, 0.469190, 1.0, + 0.284951, 0.063168, 0.472451, 1.0, + 0.291366, 0.064553, 0.475462, 1.0, + 0.297740, 0.066117, 0.478243, 1.0, + 0.304081, 0.067835, 0.480812, 1.0, + 0.310382, 0.069702, 0.483186, 1.0, + 0.316654, 0.071690, 0.485380, 1.0, + 0.322899, 0.073782, 0.487408, 1.0, + 0.329114, 0.075972, 0.489287, 1.0, + 0.335308, 0.078236, 0.491024, 1.0, + 0.341482, 0.080564, 0.492631, 1.0, + 0.347636, 0.082946, 0.494121, 1.0, + 0.353773, 0.085373, 0.495501, 1.0, + 0.359898, 0.087831, 0.496778, 1.0, + 0.366012, 0.090314, 0.497960, 1.0, + 0.372116, 0.092816, 0.499053, 1.0, + 0.378211, 0.095332, 0.500067, 1.0, + 0.384299, 0.097855, 0.501002, 1.0, + 0.390384, 0.100379, 0.501864, 1.0, + 0.396467, 0.102902, 0.502658, 1.0, + 0.402548, 0.105420, 0.503386, 1.0, + 0.408629, 0.107930, 0.504052, 1.0, + 0.414709, 0.110431, 0.504662, 1.0, + 0.420791, 0.112920, 0.505215, 1.0, + 0.426877, 0.115395, 0.505714, 1.0, + 0.432967, 0.117855, 0.506160, 1.0, + 0.439062, 0.120298, 0.506555, 1.0, + 0.445163, 0.122724, 0.506901, 1.0, + 0.451271, 0.125132, 0.507198, 1.0, + 0.457386, 0.127522, 0.507448, 1.0, + 0.463508, 0.129893, 0.507652, 1.0, + 0.469640, 0.132245, 0.507809, 1.0, + 0.475780, 0.134577, 0.507921, 1.0, + 0.481929, 0.136891, 0.507989, 1.0, + 0.488088, 0.139186, 0.508011, 1.0, + 0.494258, 0.141462, 0.507988, 1.0, + 0.500438, 0.143719, 0.507920, 1.0, + 0.506629, 0.145958, 0.507806, 1.0, + 0.512831, 0.148179, 0.507648, 1.0, + 0.519045, 0.150383, 0.507443, 1.0, + 0.525270, 0.152569, 0.507192, 1.0, + 0.531507, 0.154739, 0.506895, 1.0, + 0.537755, 0.156894, 0.506551, 1.0, + 0.544015, 0.159033, 0.506159, 1.0, + 0.550287, 0.161158, 0.505719, 1.0, + 0.556571, 0.163269, 0.505230, 1.0, + 0.562866, 0.165368, 0.504692, 1.0, + 0.569172, 0.167454, 0.504105, 1.0, + 0.575490, 0.169530, 0.503466, 1.0, + 0.581819, 0.171596, 0.502777, 1.0, + 0.588158, 0.173652, 0.502035, 1.0, + 0.594508, 0.175701, 0.501241, 1.0, + 0.600868, 0.177743, 0.500394, 1.0, + 0.607238, 0.179779, 0.499492, 1.0, + 0.613617, 0.181811, 0.498536, 1.0, + 0.620005, 0.183840, 0.497524, 1.0, + 0.626401, 0.185867, 0.496456, 1.0, + 0.632805, 0.187893, 0.495332, 1.0, + 0.639216, 0.189921, 0.494150, 1.0, + 0.645633, 0.191952, 0.492910, 1.0, + 0.652056, 0.193986, 0.491611, 1.0, + 0.658483, 0.196027, 0.490253, 1.0, + 0.664915, 0.198075, 0.488836, 1.0, + 0.671349, 0.200133, 0.487358, 1.0, + 0.677786, 0.202203, 0.485819, 1.0, + 0.684224, 0.204286, 0.484219, 1.0, + 0.690661, 0.206384, 0.482558, 1.0, + 0.697098, 0.208501, 0.480835, 1.0, + 0.703532, 0.210638, 0.479049, 1.0, + 0.709962, 0.212797, 0.477201, 1.0, + 0.716387, 0.214982, 0.475290, 1.0, + 0.722805, 0.217194, 0.473316, 1.0, + 0.729216, 0.219437, 0.471279, 1.0, + 0.735616, 0.221713, 0.469180, 1.0, + 0.742004, 0.224025, 0.467018, 1.0, + 0.748378, 0.226377, 0.464794, 1.0, + 0.754737, 0.228772, 0.462509, 1.0, + 0.761077, 0.231214, 0.460162, 1.0, + 0.767398, 0.233705, 0.457755, 1.0, + 0.773695, 0.236249, 0.455289, 1.0, + 0.779968, 0.238851, 0.452765, 1.0, + 0.786212, 0.241514, 0.450184, 1.0, + 0.792427, 0.244242, 0.447543, 1.0, + 0.798608, 0.247040, 0.444848, 1.0, + 0.804752, 0.249911, 0.442102, 1.0, + 0.810855, 0.252861, 0.439305, 1.0, + 0.816914, 0.255895, 0.436461, 1.0, + 0.822926, 0.259016, 0.433573, 1.0, + 0.828886, 0.262229, 0.430644, 1.0, + 0.834791, 0.265540, 0.427671, 1.0, + 0.840636, 0.268953, 0.424666, 1.0, + 0.846416, 0.272473, 0.421631, 1.0, + 0.852126, 0.276106, 0.418573, 1.0, + 0.857763, 0.279857, 0.415496, 1.0, + 0.863320, 0.283729, 0.412403, 1.0, + 0.868793, 0.287728, 0.409303, 1.0, + 0.874176, 0.291859, 0.406205, 1.0, + 0.879464, 0.296125, 0.403118, 1.0, + 0.884651, 0.300530, 0.400047, 1.0, + 0.889731, 0.305079, 0.397002, 1.0, + 0.894700, 0.309773, 0.393995, 1.0, + 0.899552, 0.314616, 0.391037, 1.0, + 0.904281, 0.319610, 0.388137, 1.0, + 0.908884, 0.324755, 0.385308, 1.0, + 0.913354, 0.330052, 0.382563, 1.0, + 0.917689, 0.335500, 0.379915, 1.0, + 0.921884, 0.341098, 0.377376, 1.0, + 0.925937, 0.346844, 0.374959, 1.0, + 0.929845, 0.352734, 0.372677, 1.0, + 0.933606, 0.358764, 0.370541, 1.0, + 0.937221, 0.364929, 0.368567, 1.0, + 0.940687, 0.371224, 0.366762, 1.0, + 0.944006, 0.377643, 0.365136, 1.0, + 0.947180, 0.384178, 0.363701, 1.0, + 0.950210, 0.390820, 0.362468, 1.0, + 0.953099, 0.397563, 0.361438, 1.0, + 0.955849, 0.404400, 0.360619, 1.0, + 0.958464, 0.411324, 0.360014, 1.0, + 0.960949, 0.418323, 0.359630, 1.0, + 0.963310, 0.425390, 0.359469, 1.0, + 0.965549, 0.432519, 0.359529, 1.0, + 0.967671, 0.439703, 0.359810, 1.0, + 0.969680, 0.446936, 0.360311, 1.0, + 0.971582, 0.454210, 0.361030, 1.0, + 0.973381, 0.461520, 0.361965, 1.0, + 0.975082, 0.468861, 0.363111, 1.0, + 0.976690, 0.476226, 0.364466, 1.0, + 0.978210, 0.483612, 0.366025, 1.0, + 0.979645, 0.491014, 0.367783, 1.0, + 0.981000, 0.498428, 0.369734, 1.0, + 0.982279, 0.505851, 0.371874, 1.0, + 0.983485, 0.513280, 0.374198, 1.0, + 0.984622, 0.520713, 0.376698, 1.0, + 0.985693, 0.528148, 0.379371, 1.0, + 0.986700, 0.535582, 0.382210, 1.0, + 0.987646, 0.543015, 0.385210, 1.0, + 0.988533, 0.550446, 0.388365, 1.0, + 0.989363, 0.557873, 0.391671, 1.0, + 0.990138, 0.565296, 0.395122, 1.0, + 0.990871, 0.572706, 0.398714, 1.0, + 0.991558, 0.580107, 0.402441, 1.0, + 0.992196, 0.587502, 0.406299, 1.0, + 0.992785, 0.594891, 0.410283, 1.0, + 0.993326, 0.602275, 0.414390, 1.0, + 0.993834, 0.609644, 0.418613, 1.0, + 0.994309, 0.616999, 0.422950, 1.0, + 0.994738, 0.624350, 0.427397, 1.0, + 0.995122, 0.631696, 0.431951, 1.0, + 0.995480, 0.639027, 0.436607, 1.0, + 0.995810, 0.646344, 0.441361, 1.0, + 0.996096, 0.653659, 0.446213, 1.0, + 0.996341, 0.660969, 0.451160, 1.0, + 0.996580, 0.668256, 0.456192, 1.0, + 0.996775, 0.675541, 0.461314, 1.0, + 0.996925, 0.682828, 0.466526, 1.0, + 0.997077, 0.690088, 0.471811, 1.0, + 0.997186, 0.697349, 0.477182, 1.0, + 0.997254, 0.704611, 0.482635, 1.0, + 0.997325, 0.711848, 0.488154, 1.0, + 0.997351, 0.719089, 0.493755, 1.0, + 0.997351, 0.726324, 0.499428, 1.0, + 0.997341, 0.733545, 0.505167, 1.0, + 0.997285, 0.740772, 0.510983, 1.0, + 0.997228, 0.747981, 0.516859, 1.0, + 0.997138, 0.755190, 0.522806, 1.0, + 0.997019, 0.762398, 0.528821, 1.0, + 0.996898, 0.769591, 0.534892, 1.0, + 0.996727, 0.776795, 0.541039, 1.0, + 0.996571, 0.783977, 0.547233, 1.0, + 0.996369, 0.791167, 0.553499, 1.0, + 0.996162, 0.798348, 0.559820, 1.0, + 0.995932, 0.805527, 0.566202, 1.0, + 0.995680, 0.812706, 0.572645, 1.0, + 0.995424, 0.819875, 0.579140, 1.0, + 0.995131, 0.827052, 0.585701, 1.0, + 0.994851, 0.834213, 0.592307, 1.0, + 0.994524, 0.841387, 0.598983, 1.0, + 0.994222, 0.848540, 0.605696, 1.0, + 0.993866, 0.855711, 0.612482, 1.0, + 0.993545, 0.862859, 0.619299, 1.0, + 0.993170, 0.870024, 0.626189, 1.0, + 0.992831, 0.877168, 0.633109, 1.0, + 0.992440, 0.884330, 0.640099, 1.0, + 0.992089, 0.891470, 0.647116, 1.0, + 0.991688, 0.898627, 0.654202, 1.0, + 0.991332, 0.905763, 0.661309, 1.0, + 0.990930, 0.912915, 0.668481, 1.0, + 0.990570, 0.920049, 0.675675, 1.0, + 0.990175, 0.927196, 0.682926, 1.0, + 0.989815, 0.934329, 0.690198, 1.0, + 0.989434, 0.941470, 0.697519, 1.0, + 0.989077, 0.948604, 0.704863, 1.0, + 0.988717, 0.955742, 0.712242, 1.0, + 0.988367, 0.962878, 0.719649, 1.0, + 0.988033, 0.970012, 0.727077, 1.0, + 0.987691, 0.977154, 0.734536, 1.0, + 0.987387, 0.984288, 0.742002, 1.0, + 0.987053, 0.991438, 0.749504, 1.0, +}; + +/// plasma perceptually uniform shades of blue-red-yellow +float cmap_plasma[] = +{ + 0.050383, 0.029803, 0.527975, 1.0, + 0.063536, 0.028426, 0.533124, 1.0, + 0.075353, 0.027206, 0.538007, 1.0, + 0.086222, 0.026125, 0.542658, 1.0, + 0.096379, 0.025165, 0.547103, 1.0, + 0.105980, 0.024309, 0.551368, 1.0, + 0.115124, 0.023556, 0.555468, 1.0, + 0.123903, 0.022878, 0.559423, 1.0, + 0.132381, 0.022258, 0.563250, 1.0, + 0.140603, 0.021687, 0.566959, 1.0, + 0.148607, 0.021154, 0.570562, 1.0, + 0.156421, 0.020651, 0.574065, 1.0, + 0.164070, 0.020171, 0.577478, 1.0, + 0.171574, 0.019706, 0.580806, 1.0, + 0.178950, 0.019252, 0.584054, 1.0, + 0.186213, 0.018803, 0.587228, 1.0, + 0.193374, 0.018354, 0.590330, 1.0, + 0.200445, 0.017902, 0.593364, 1.0, + 0.207435, 0.017442, 0.596333, 1.0, + 0.214350, 0.016973, 0.599239, 1.0, + 0.221197, 0.016497, 0.602083, 1.0, + 0.227983, 0.016007, 0.604867, 1.0, + 0.234715, 0.015502, 0.607592, 1.0, + 0.241396, 0.014979, 0.610259, 1.0, + 0.248032, 0.014439, 0.612868, 1.0, + 0.254627, 0.013882, 0.615419, 1.0, + 0.261183, 0.013308, 0.617911, 1.0, + 0.267703, 0.012716, 0.620346, 1.0, + 0.274191, 0.012109, 0.622722, 1.0, + 0.280648, 0.011488, 0.625038, 1.0, + 0.287076, 0.010855, 0.627295, 1.0, + 0.293478, 0.010213, 0.629490, 1.0, + 0.299855, 0.009561, 0.631624, 1.0, + 0.306210, 0.008902, 0.633694, 1.0, + 0.312543, 0.008239, 0.635700, 1.0, + 0.318856, 0.007576, 0.637640, 1.0, + 0.325150, 0.006915, 0.639512, 1.0, + 0.331426, 0.006261, 0.641316, 1.0, + 0.337683, 0.005618, 0.643049, 1.0, + 0.343925, 0.004991, 0.644710, 1.0, + 0.350150, 0.004382, 0.646298, 1.0, + 0.356359, 0.003798, 0.647810, 1.0, + 0.362553, 0.003243, 0.649245, 1.0, + 0.368733, 0.002724, 0.650601, 1.0, + 0.374897, 0.002245, 0.651876, 1.0, + 0.381047, 0.001814, 0.653068, 1.0, + 0.387183, 0.001434, 0.654177, 1.0, + 0.393304, 0.001114, 0.655199, 1.0, + 0.399411, 0.000859, 0.656133, 1.0, + 0.405503, 0.000678, 0.656977, 1.0, + 0.411580, 0.000577, 0.657730, 1.0, + 0.417642, 0.000564, 0.658390, 1.0, + 0.423689, 0.000646, 0.658956, 1.0, + 0.429719, 0.000831, 0.659425, 1.0, + 0.435734, 0.001127, 0.659797, 1.0, + 0.441732, 0.001540, 0.660069, 1.0, + 0.447714, 0.002080, 0.660240, 1.0, + 0.453677, 0.002755, 0.660310, 1.0, + 0.459623, 0.003574, 0.660277, 1.0, + 0.465550, 0.004545, 0.660139, 1.0, + 0.471457, 0.005678, 0.659897, 1.0, + 0.477344, 0.006980, 0.659549, 1.0, + 0.483210, 0.008460, 0.659095, 1.0, + 0.489055, 0.010127, 0.658534, 1.0, + 0.494877, 0.011990, 0.657865, 1.0, + 0.500678, 0.014055, 0.657088, 1.0, + 0.506454, 0.016333, 0.656202, 1.0, + 0.512206, 0.018833, 0.655209, 1.0, + 0.517933, 0.021563, 0.654109, 1.0, + 0.523633, 0.024532, 0.652901, 1.0, + 0.529306, 0.027747, 0.651586, 1.0, + 0.534952, 0.031217, 0.650165, 1.0, + 0.540570, 0.034950, 0.648640, 1.0, + 0.546157, 0.038954, 0.647010, 1.0, + 0.551715, 0.043136, 0.645277, 1.0, + 0.557243, 0.047331, 0.643443, 1.0, + 0.562738, 0.051545, 0.641509, 1.0, + 0.568201, 0.055778, 0.639477, 1.0, + 0.573632, 0.060028, 0.637349, 1.0, + 0.579029, 0.064296, 0.635126, 1.0, + 0.584391, 0.068579, 0.632812, 1.0, + 0.589719, 0.072878, 0.630408, 1.0, + 0.595011, 0.077190, 0.627917, 1.0, + 0.600266, 0.081516, 0.625342, 1.0, + 0.605485, 0.085854, 0.622686, 1.0, + 0.610667, 0.090204, 0.619951, 1.0, + 0.615812, 0.094564, 0.617140, 1.0, + 0.620919, 0.098934, 0.614257, 1.0, + 0.625987, 0.103312, 0.611305, 1.0, + 0.631017, 0.107699, 0.608287, 1.0, + 0.636008, 0.112092, 0.605205, 1.0, + 0.640959, 0.116492, 0.602065, 1.0, + 0.645872, 0.120898, 0.598867, 1.0, + 0.650746, 0.125309, 0.595617, 1.0, + 0.655580, 0.129725, 0.592317, 1.0, + 0.660374, 0.134144, 0.588971, 1.0, + 0.665129, 0.138566, 0.585582, 1.0, + 0.669845, 0.142992, 0.582154, 1.0, + 0.674522, 0.147419, 0.578688, 1.0, + 0.679160, 0.151848, 0.575189, 1.0, + 0.683758, 0.156278, 0.571660, 1.0, + 0.688318, 0.160709, 0.568103, 1.0, + 0.692840, 0.165141, 0.564522, 1.0, + 0.697324, 0.169573, 0.560919, 1.0, + 0.701769, 0.174005, 0.557296, 1.0, + 0.706178, 0.178437, 0.553657, 1.0, + 0.710549, 0.182868, 0.550004, 1.0, + 0.714883, 0.187299, 0.546338, 1.0, + 0.719181, 0.191729, 0.542663, 1.0, + 0.723444, 0.196158, 0.538981, 1.0, + 0.727670, 0.200586, 0.535293, 1.0, + 0.731862, 0.205013, 0.531601, 1.0, + 0.736019, 0.209439, 0.527908, 1.0, + 0.740143, 0.213864, 0.524216, 1.0, + 0.744232, 0.218288, 0.520524, 1.0, + 0.748289, 0.222711, 0.516834, 1.0, + 0.752312, 0.227133, 0.513149, 1.0, + 0.756304, 0.231555, 0.509468, 1.0, + 0.760264, 0.235976, 0.505794, 1.0, + 0.764193, 0.240396, 0.502126, 1.0, + 0.768090, 0.244817, 0.498465, 1.0, + 0.771958, 0.249237, 0.494813, 1.0, + 0.775796, 0.253658, 0.491171, 1.0, + 0.779604, 0.258078, 0.487539, 1.0, + 0.783383, 0.262500, 0.483918, 1.0, + 0.787133, 0.266922, 0.480307, 1.0, + 0.790855, 0.271345, 0.476706, 1.0, + 0.794549, 0.275770, 0.473117, 1.0, + 0.798216, 0.280197, 0.469538, 1.0, + 0.801855, 0.284626, 0.465971, 1.0, + 0.805467, 0.289057, 0.462415, 1.0, + 0.809052, 0.293491, 0.458870, 1.0, + 0.812612, 0.297928, 0.455338, 1.0, + 0.816144, 0.302368, 0.451816, 1.0, + 0.819651, 0.306812, 0.448306, 1.0, + 0.823132, 0.311261, 0.444806, 1.0, + 0.826588, 0.315714, 0.441316, 1.0, + 0.830018, 0.320172, 0.437836, 1.0, + 0.833422, 0.324635, 0.434366, 1.0, + 0.836801, 0.329105, 0.430905, 1.0, + 0.840155, 0.333580, 0.427455, 1.0, + 0.843484, 0.338062, 0.424013, 1.0, + 0.846788, 0.342551, 0.420579, 1.0, + 0.850066, 0.347048, 0.417153, 1.0, + 0.853319, 0.351553, 0.413734, 1.0, + 0.856547, 0.356066, 0.410322, 1.0, + 0.859750, 0.360588, 0.406917, 1.0, + 0.862927, 0.365119, 0.403519, 1.0, + 0.866078, 0.369660, 0.400126, 1.0, + 0.869203, 0.374212, 0.396738, 1.0, + 0.872303, 0.378774, 0.393355, 1.0, + 0.875376, 0.383347, 0.389976, 1.0, + 0.878423, 0.387932, 0.386600, 1.0, + 0.881443, 0.392529, 0.383229, 1.0, + 0.884436, 0.397139, 0.379860, 1.0, + 0.887402, 0.401762, 0.376494, 1.0, + 0.890340, 0.406398, 0.373130, 1.0, + 0.893250, 0.411048, 0.369768, 1.0, + 0.896131, 0.415712, 0.366407, 1.0, + 0.898984, 0.420392, 0.363047, 1.0, + 0.901807, 0.425087, 0.359688, 1.0, + 0.904601, 0.429797, 0.356329, 1.0, + 0.907365, 0.434524, 0.352970, 1.0, + 0.910098, 0.439268, 0.349610, 1.0, + 0.912800, 0.444029, 0.346251, 1.0, + 0.915471, 0.448807, 0.342890, 1.0, + 0.918109, 0.453603, 0.339529, 1.0, + 0.920714, 0.458417, 0.336166, 1.0, + 0.923287, 0.463251, 0.332801, 1.0, + 0.925825, 0.468103, 0.329435, 1.0, + 0.928329, 0.472975, 0.326067, 1.0, + 0.930798, 0.477867, 0.322697, 1.0, + 0.933232, 0.482780, 0.319325, 1.0, + 0.935630, 0.487712, 0.315952, 1.0, + 0.937990, 0.492667, 0.312575, 1.0, + 0.940313, 0.497642, 0.309197, 1.0, + 0.942598, 0.502639, 0.305816, 1.0, + 0.944844, 0.507658, 0.302433, 1.0, + 0.947051, 0.512699, 0.299049, 1.0, + 0.949217, 0.517763, 0.295662, 1.0, + 0.951344, 0.522850, 0.292275, 1.0, + 0.953428, 0.527960, 0.288883, 1.0, + 0.955470, 0.533093, 0.285490, 1.0, + 0.957469, 0.538250, 0.282096, 1.0, + 0.959424, 0.543431, 0.278701, 1.0, + 0.961336, 0.548636, 0.275305, 1.0, + 0.963203, 0.553865, 0.271909, 1.0, + 0.965024, 0.559118, 0.268513, 1.0, + 0.966798, 0.564396, 0.265118, 1.0, + 0.968526, 0.569700, 0.261721, 1.0, + 0.970205, 0.575028, 0.258325, 1.0, + 0.971835, 0.580382, 0.254931, 1.0, + 0.973416, 0.585761, 0.251540, 1.0, + 0.974947, 0.591165, 0.248151, 1.0, + 0.976428, 0.596595, 0.244767, 1.0, + 0.977856, 0.602051, 0.241387, 1.0, + 0.979233, 0.607532, 0.238013, 1.0, + 0.980556, 0.613039, 0.234646, 1.0, + 0.981826, 0.618572, 0.231287, 1.0, + 0.983041, 0.624131, 0.227937, 1.0, + 0.984199, 0.629718, 0.224595, 1.0, + 0.985301, 0.635330, 0.221265, 1.0, + 0.986345, 0.640969, 0.217948, 1.0, + 0.987332, 0.646633, 0.214648, 1.0, + 0.988260, 0.652325, 0.211364, 1.0, + 0.989128, 0.658043, 0.208100, 1.0, + 0.989935, 0.663787, 0.204859, 1.0, + 0.990681, 0.669558, 0.201642, 1.0, + 0.991365, 0.675355, 0.198453, 1.0, + 0.991985, 0.681179, 0.195295, 1.0, + 0.992541, 0.687030, 0.192170, 1.0, + 0.993032, 0.692907, 0.189084, 1.0, + 0.993456, 0.698810, 0.186041, 1.0, + 0.993814, 0.704741, 0.183043, 1.0, + 0.994103, 0.710698, 0.180097, 1.0, + 0.994324, 0.716681, 0.177208, 1.0, + 0.994474, 0.722691, 0.174381, 1.0, + 0.994553, 0.728728, 0.171622, 1.0, + 0.994561, 0.734791, 0.168938, 1.0, + 0.994495, 0.740880, 0.166335, 1.0, + 0.994355, 0.746995, 0.163821, 1.0, + 0.994141, 0.753137, 0.161404, 1.0, + 0.993851, 0.759304, 0.159092, 1.0, + 0.993482, 0.765499, 0.156891, 1.0, + 0.993033, 0.771720, 0.154808, 1.0, + 0.992505, 0.777967, 0.152855, 1.0, + 0.991897, 0.784239, 0.151042, 1.0, + 0.991209, 0.790537, 0.149377, 1.0, + 0.990439, 0.796859, 0.147870, 1.0, + 0.989587, 0.803205, 0.146529, 1.0, + 0.988648, 0.809579, 0.145357, 1.0, + 0.987621, 0.815978, 0.144363, 1.0, + 0.986509, 0.822401, 0.143557, 1.0, + 0.985314, 0.828846, 0.142945, 1.0, + 0.984031, 0.835315, 0.142528, 1.0, + 0.982653, 0.841812, 0.142303, 1.0, + 0.981190, 0.848329, 0.142279, 1.0, + 0.979644, 0.854866, 0.142453, 1.0, + 0.977995, 0.861432, 0.142808, 1.0, + 0.976265, 0.868016, 0.143351, 1.0, + 0.974443, 0.874622, 0.144061, 1.0, + 0.972530, 0.881250, 0.144923, 1.0, + 0.970533, 0.887896, 0.145919, 1.0, + 0.968443, 0.894564, 0.147014, 1.0, + 0.966271, 0.901249, 0.148180, 1.0, + 0.964021, 0.907950, 0.149370, 1.0, + 0.961681, 0.914672, 0.150520, 1.0, + 0.959276, 0.921407, 0.151566, 1.0, + 0.956808, 0.928152, 0.152409, 1.0, + 0.954287, 0.934908, 0.152921, 1.0, + 0.951726, 0.941671, 0.152925, 1.0, + 0.949151, 0.948435, 0.152178, 1.0, + 0.946602, 0.955190, 0.150328, 1.0, + 0.944152, 0.961916, 0.146861, 1.0, + 0.941896, 0.968590, 0.140956, 1.0, + 0.940015, 0.975158, 0.131326, 1.0, +}; + +/// viridis perceptually uniform shades of blue-green-yellow +float cmap_viridis[] = +{ + 0.267004, 0.004874, 0.329415, 1.0, + 0.268510, 0.009605, 0.335427, 1.0, + 0.269944, 0.014625, 0.341379, 1.0, + 0.271305, 0.019942, 0.347269, 1.0, + 0.272594, 0.025563, 0.353093, 1.0, + 0.273809, 0.031497, 0.358853, 1.0, + 0.274952, 0.037752, 0.364543, 1.0, + 0.276022, 0.044167, 0.370164, 1.0, + 0.277018, 0.050344, 0.375715, 1.0, + 0.277941, 0.056324, 0.381191, 1.0, + 0.278791, 0.062145, 0.386592, 1.0, + 0.279566, 0.067836, 0.391917, 1.0, + 0.280267, 0.073417, 0.397163, 1.0, + 0.280894, 0.078907, 0.402329, 1.0, + 0.281446, 0.084320, 0.407414, 1.0, + 0.281924, 0.089666, 0.412415, 1.0, + 0.282327, 0.094955, 0.417331, 1.0, + 0.282656, 0.100196, 0.422160, 1.0, + 0.282910, 0.105393, 0.426902, 1.0, + 0.283091, 0.110553, 0.431554, 1.0, + 0.283197, 0.115680, 0.436115, 1.0, + 0.283229, 0.120777, 0.440584, 1.0, + 0.283187, 0.125848, 0.444960, 1.0, + 0.283072, 0.130895, 0.449241, 1.0, + 0.282884, 0.135920, 0.453427, 1.0, + 0.282623, 0.140926, 0.457517, 1.0, + 0.282290, 0.145912, 0.461510, 1.0, + 0.281887, 0.150881, 0.465405, 1.0, + 0.281412, 0.155834, 0.469201, 1.0, + 0.280868, 0.160771, 0.472899, 1.0, + 0.280255, 0.165693, 0.476498, 1.0, + 0.279574, 0.170599, 0.479997, 1.0, + 0.278826, 0.175490, 0.483397, 1.0, + 0.278012, 0.180367, 0.486697, 1.0, + 0.277134, 0.185228, 0.489898, 1.0, + 0.276194, 0.190074, 0.493001, 1.0, + 0.275191, 0.194905, 0.496005, 1.0, + 0.274128, 0.199721, 0.498911, 1.0, + 0.273006, 0.204520, 0.501721, 1.0, + 0.271828, 0.209303, 0.504434, 1.0, + 0.270595, 0.214069, 0.507052, 1.0, + 0.269308, 0.218818, 0.509577, 1.0, + 0.267968, 0.223549, 0.512008, 1.0, + 0.266580, 0.228262, 0.514349, 1.0, + 0.265145, 0.232956, 0.516599, 1.0, + 0.263663, 0.237631, 0.518762, 1.0, + 0.262138, 0.242286, 0.520837, 1.0, + 0.260571, 0.246922, 0.522828, 1.0, + 0.258965, 0.251537, 0.524736, 1.0, + 0.257322, 0.256130, 0.526563, 1.0, + 0.255645, 0.260703, 0.528312, 1.0, + 0.253935, 0.265254, 0.529983, 1.0, + 0.252194, 0.269783, 0.531579, 1.0, + 0.250425, 0.274290, 0.533103, 1.0, + 0.248629, 0.278775, 0.534556, 1.0, + 0.246811, 0.283237, 0.535941, 1.0, + 0.244972, 0.287675, 0.537260, 1.0, + 0.243113, 0.292092, 0.538516, 1.0, + 0.241237, 0.296485, 0.539709, 1.0, + 0.239346, 0.300855, 0.540844, 1.0, + 0.237441, 0.305202, 0.541921, 1.0, + 0.235526, 0.309527, 0.542944, 1.0, + 0.233603, 0.313828, 0.543914, 1.0, + 0.231674, 0.318106, 0.544834, 1.0, + 0.229739, 0.322361, 0.545706, 1.0, + 0.227802, 0.326594, 0.546532, 1.0, + 0.225863, 0.330805, 0.547314, 1.0, + 0.223925, 0.334994, 0.548053, 1.0, + 0.221989, 0.339161, 0.548752, 1.0, + 0.220057, 0.343307, 0.549413, 1.0, + 0.218130, 0.347432, 0.550038, 1.0, + 0.216210, 0.351535, 0.550627, 1.0, + 0.214298, 0.355619, 0.551184, 1.0, + 0.212395, 0.359683, 0.551710, 1.0, + 0.210503, 0.363727, 0.552206, 1.0, + 0.208623, 0.367752, 0.552675, 1.0, + 0.206756, 0.371758, 0.553117, 1.0, + 0.204903, 0.375746, 0.553533, 1.0, + 0.203063, 0.379716, 0.553925, 1.0, + 0.201239, 0.383670, 0.554294, 1.0, + 0.199430, 0.387607, 0.554642, 1.0, + 0.197636, 0.391528, 0.554969, 1.0, + 0.195860, 0.395433, 0.555276, 1.0, + 0.194100, 0.399323, 0.555565, 1.0, + 0.192357, 0.403199, 0.555836, 1.0, + 0.190631, 0.407061, 0.556089, 1.0, + 0.188923, 0.410910, 0.556326, 1.0, + 0.187231, 0.414746, 0.556547, 1.0, + 0.185556, 0.418570, 0.556753, 1.0, + 0.183898, 0.422383, 0.556944, 1.0, + 0.182256, 0.426184, 0.557120, 1.0, + 0.180629, 0.429975, 0.557282, 1.0, + 0.179019, 0.433756, 0.557430, 1.0, + 0.177423, 0.437527, 0.557565, 1.0, + 0.175841, 0.441290, 0.557685, 1.0, + 0.174274, 0.445044, 0.557792, 1.0, + 0.172719, 0.448791, 0.557885, 1.0, + 0.171176, 0.452530, 0.557965, 1.0, + 0.169646, 0.456262, 0.558030, 1.0, + 0.168126, 0.459988, 0.558082, 1.0, + 0.166617, 0.463708, 0.558119, 1.0, + 0.165117, 0.467423, 0.558141, 1.0, + 0.163625, 0.471133, 0.558148, 1.0, + 0.162142, 0.474838, 0.558140, 1.0, + 0.160665, 0.478540, 0.558115, 1.0, + 0.159194, 0.482237, 0.558073, 1.0, + 0.157729, 0.485932, 0.558013, 1.0, + 0.156270, 0.489624, 0.557936, 1.0, + 0.154815, 0.493313, 0.557840, 1.0, + 0.153364, 0.497000, 0.557724, 1.0, + 0.151918, 0.500685, 0.557587, 1.0, + 0.150476, 0.504369, 0.557430, 1.0, + 0.149039, 0.508051, 0.557250, 1.0, + 0.147607, 0.511733, 0.557049, 1.0, + 0.146180, 0.515413, 0.556823, 1.0, + 0.144759, 0.519093, 0.556572, 1.0, + 0.143343, 0.522773, 0.556295, 1.0, + 0.141935, 0.526453, 0.555991, 1.0, + 0.140536, 0.530132, 0.555659, 1.0, + 0.139147, 0.533812, 0.555298, 1.0, + 0.137770, 0.537492, 0.554906, 1.0, + 0.136408, 0.541173, 0.554483, 1.0, + 0.135066, 0.544853, 0.554029, 1.0, + 0.133743, 0.548535, 0.553541, 1.0, + 0.132444, 0.552216, 0.553018, 1.0, + 0.131172, 0.555899, 0.552459, 1.0, + 0.129933, 0.559582, 0.551864, 1.0, + 0.128729, 0.563265, 0.551229, 1.0, + 0.127568, 0.566949, 0.550556, 1.0, + 0.126453, 0.570633, 0.549841, 1.0, + 0.125394, 0.574318, 0.549086, 1.0, + 0.124395, 0.578002, 0.548287, 1.0, + 0.123463, 0.581687, 0.547445, 1.0, + 0.122606, 0.585371, 0.546557, 1.0, + 0.121831, 0.589055, 0.545623, 1.0, + 0.121148, 0.592739, 0.544641, 1.0, + 0.120565, 0.596422, 0.543611, 1.0, + 0.120092, 0.600104, 0.542530, 1.0, + 0.119738, 0.603785, 0.541400, 1.0, + 0.119512, 0.607464, 0.540218, 1.0, + 0.119423, 0.611141, 0.538982, 1.0, + 0.119483, 0.614817, 0.537692, 1.0, + 0.119699, 0.618490, 0.536347, 1.0, + 0.120081, 0.622161, 0.534946, 1.0, + 0.120638, 0.625828, 0.533488, 1.0, + 0.121380, 0.629492, 0.531973, 1.0, + 0.122312, 0.633153, 0.530398, 1.0, + 0.123444, 0.636809, 0.528763, 1.0, + 0.124780, 0.640461, 0.527068, 1.0, + 0.126326, 0.644107, 0.525311, 1.0, + 0.128087, 0.647749, 0.523491, 1.0, + 0.130067, 0.651384, 0.521608, 1.0, + 0.132268, 0.655014, 0.519661, 1.0, + 0.134692, 0.658636, 0.517649, 1.0, + 0.137339, 0.662252, 0.515571, 1.0, + 0.140210, 0.665859, 0.513427, 1.0, + 0.143303, 0.669459, 0.511215, 1.0, + 0.146616, 0.673050, 0.508936, 1.0, + 0.150148, 0.676631, 0.506589, 1.0, + 0.153894, 0.680203, 0.504172, 1.0, + 0.157851, 0.683765, 0.501686, 1.0, + 0.162016, 0.687316, 0.499129, 1.0, + 0.166383, 0.690856, 0.496502, 1.0, + 0.170948, 0.694384, 0.493803, 1.0, + 0.175707, 0.697900, 0.491033, 1.0, + 0.180653, 0.701402, 0.488189, 1.0, + 0.185783, 0.704891, 0.485273, 1.0, + 0.191090, 0.708366, 0.482284, 1.0, + 0.196571, 0.711827, 0.479221, 1.0, + 0.202219, 0.715272, 0.476084, 1.0, + 0.208030, 0.718701, 0.472873, 1.0, + 0.214000, 0.722114, 0.469588, 1.0, + 0.220124, 0.725509, 0.466226, 1.0, + 0.226397, 0.728888, 0.462789, 1.0, + 0.232815, 0.732247, 0.459277, 1.0, + 0.239374, 0.735588, 0.455688, 1.0, + 0.246070, 0.738910, 0.452024, 1.0, + 0.252899, 0.742211, 0.448284, 1.0, + 0.259857, 0.745492, 0.444467, 1.0, + 0.266941, 0.748751, 0.440573, 1.0, + 0.274149, 0.751988, 0.436601, 1.0, + 0.281477, 0.755203, 0.432552, 1.0, + 0.288921, 0.758394, 0.428426, 1.0, + 0.296479, 0.761561, 0.424223, 1.0, + 0.304148, 0.764704, 0.419943, 1.0, + 0.311925, 0.767822, 0.415586, 1.0, + 0.319809, 0.770914, 0.411152, 1.0, + 0.327796, 0.773980, 0.406640, 1.0, + 0.335885, 0.777018, 0.402049, 1.0, + 0.344074, 0.780029, 0.397381, 1.0, + 0.352360, 0.783011, 0.392636, 1.0, + 0.360741, 0.785964, 0.387814, 1.0, + 0.369214, 0.788888, 0.382914, 1.0, + 0.377779, 0.791781, 0.377939, 1.0, + 0.386433, 0.794644, 0.372886, 1.0, + 0.395174, 0.797475, 0.367757, 1.0, + 0.404001, 0.800275, 0.362552, 1.0, + 0.412913, 0.803041, 0.357269, 1.0, + 0.421908, 0.805774, 0.351910, 1.0, + 0.430983, 0.808473, 0.346476, 1.0, + 0.440137, 0.811138, 0.340967, 1.0, + 0.449368, 0.813768, 0.335384, 1.0, + 0.458674, 0.816363, 0.329727, 1.0, + 0.468053, 0.818921, 0.323998, 1.0, + 0.477504, 0.821444, 0.318195, 1.0, + 0.487026, 0.823929, 0.312321, 1.0, + 0.496615, 0.826376, 0.306377, 1.0, + 0.506271, 0.828786, 0.300362, 1.0, + 0.515992, 0.831158, 0.294279, 1.0, + 0.525776, 0.833491, 0.288127, 1.0, + 0.535621, 0.835785, 0.281908, 1.0, + 0.545524, 0.838039, 0.275626, 1.0, + 0.555484, 0.840254, 0.269281, 1.0, + 0.565498, 0.842430, 0.262877, 1.0, + 0.575563, 0.844566, 0.256415, 1.0, + 0.585678, 0.846661, 0.249897, 1.0, + 0.595839, 0.848717, 0.243329, 1.0, + 0.606045, 0.850733, 0.236712, 1.0, + 0.616293, 0.852709, 0.230052, 1.0, + 0.626579, 0.854645, 0.223353, 1.0, + 0.636902, 0.856542, 0.216620, 1.0, + 0.647257, 0.858400, 0.209861, 1.0, + 0.657642, 0.860219, 0.203082, 1.0, + 0.668054, 0.861999, 0.196293, 1.0, + 0.678489, 0.863742, 0.189503, 1.0, + 0.688944, 0.865448, 0.182725, 1.0, + 0.699415, 0.867117, 0.175971, 1.0, + 0.709898, 0.868751, 0.169257, 1.0, + 0.720391, 0.870350, 0.162603, 1.0, + 0.730889, 0.871916, 0.156029, 1.0, + 0.741388, 0.873449, 0.149561, 1.0, + 0.751884, 0.874951, 0.143228, 1.0, + 0.762373, 0.876424, 0.137064, 1.0, + 0.772852, 0.877868, 0.131109, 1.0, + 0.783315, 0.879285, 0.125405, 1.0, + 0.793760, 0.880678, 0.120005, 1.0, + 0.804182, 0.882046, 0.114965, 1.0, + 0.814576, 0.883393, 0.110347, 1.0, + 0.824940, 0.884720, 0.106217, 1.0, + 0.835270, 0.886029, 0.102646, 1.0, + 0.845561, 0.887322, 0.099702, 1.0, + 0.855810, 0.888601, 0.097452, 1.0, + 0.866013, 0.889868, 0.095953, 1.0, + 0.876168, 0.891125, 0.095250, 1.0, + 0.886271, 0.892374, 0.095374, 1.0, + 0.896320, 0.893616, 0.096335, 1.0, + 0.906311, 0.894855, 0.098125, 1.0, + 0.916242, 0.896091, 0.100717, 1.0, + 0.926106, 0.897330, 0.104071, 1.0, + 0.935904, 0.898570, 0.108131, 1.0, + 0.945636, 0.899815, 0.112838, 1.0, + 0.955300, 0.901065, 0.118128, 1.0, + 0.964894, 0.902323, 0.123941, 1.0, + 0.974417, 0.903590, 0.130215, 1.0, + 0.983868, 0.904867, 0.136897, 1.0, + 0.993248, 0.906157, 0.143936, 1.0, +}; diff --git a/src/backend/opengl/colormap_impl.cpp b/src/backend/opengl/colormap_impl.cpp index 2c80b6b1..1953874e 100644 --- a/src/backend/opengl/colormap_impl.cpp +++ b/src/backend/opengl/colormap_impl.cpp @@ -27,13 +27,17 @@ colormap_impl::colormap_impl() mBlueMapBuffer(0) { size_t channel_bytes = sizeof(float)*4; /* 4 is for 4 channels */ - mDefMapLen = (GLuint)(sizeof(cmap_default) /channel_bytes); - mSpecMapLen = (GLuint)(sizeof(cmap_spectrum)/channel_bytes); - mColsMapLen = (GLuint)(sizeof(cmap_colors) /channel_bytes); - mRedMapLen = (GLuint)(sizeof(cmap_red) /channel_bytes); - mMoodMapLen = (GLuint)(sizeof(cmap_mood) /channel_bytes); - mHeatMapLen = (GLuint)(sizeof(cmap_heat) /channel_bytes); - mBlueMapLen = (GLuint)(sizeof(cmap_blue) /channel_bytes); + mDefMapLen = (GLuint)(sizeof(cmap_default) / channel_bytes); + mSpecMapLen = (GLuint)(sizeof(cmap_spectrum) / channel_bytes); + mColsMapLen = (GLuint)(sizeof(cmap_colors) / channel_bytes); + mRedMapLen = (GLuint)(sizeof(cmap_red) / channel_bytes); + mMoodMapLen = (GLuint)(sizeof(cmap_mood) / channel_bytes); + mHeatMapLen = (GLuint)(sizeof(cmap_heat) / channel_bytes); + mBlueMapLen = (GLuint)(sizeof(cmap_blue) / channel_bytes); + mInfernoMapLen = (GLuint)(sizeof(cmap_inferno) / channel_bytes); + mMagmaMapLen = (GLuint)(sizeof(cmap_magma) / channel_bytes); + mPlasmaMapLen = (GLuint)(sizeof(cmap_plasma) / channel_bytes); + mViridisMapLen = (GLuint)(sizeof(cmap_viridis) / channel_bytes); mDefaultMapBuffer = CREATE_UNIFORM_BUFFER(cmap_default, mDefMapLen); mSpecMapBuffer = CREATE_UNIFORM_BUFFER(cmap_spectrum, mSpecMapLen); @@ -42,6 +46,10 @@ colormap_impl::colormap_impl() mMoodMapBuffer = CREATE_UNIFORM_BUFFER(cmap_mood, mMoodMapLen); mHeatMapBuffer = CREATE_UNIFORM_BUFFER(cmap_heat, mHeatMapLen); mBlueMapBuffer = CREATE_UNIFORM_BUFFER(cmap_blue, mBlueMapLen); + mInfernoMapBuffer = CREATE_UNIFORM_BUFFER(cmap_inferno, mInfernoMapLen); + mMagmaMapBuffer = CREATE_UNIFORM_BUFFER(cmap_magma, mMagmaMapLen); + mPlasmaMapBuffer = CREATE_UNIFORM_BUFFER(cmap_plasma, mPlasmaMapLen); + mViridisMapBuffer = CREATE_UNIFORM_BUFFER(cmap_viridis, mViridisMapLen); } colormap_impl::~colormap_impl() @@ -53,76 +61,44 @@ colormap_impl::~colormap_impl() glDeleteBuffers(1, &mMoodMapBuffer); glDeleteBuffers(1, &mHeatMapBuffer); glDeleteBuffers(1, &mBlueMapBuffer); -} - -GLuint colormap_impl::defaultMap() const -{ - return mDefaultMapBuffer; -} - -GLuint colormap_impl::spectrum() const -{ - return mSpecMapBuffer; -} - -GLuint colormap_impl::colors() const -{ - return mColorsMapBuffer; -} - -GLuint colormap_impl::red() const -{ - return mRedMapBuffer; -} - -GLuint colormap_impl::mood() const -{ - return mMoodMapBuffer; -} - -GLuint colormap_impl::heat() const -{ - return mHeatMapBuffer; -} - -GLuint colormap_impl::blue() const -{ - return mBlueMapBuffer; -} - -GLuint colormap_impl::defaultLen() const -{ - return mDefMapLen; -} - -GLuint colormap_impl::spectrumLen() const -{ - return mSpecMapLen; -} - -GLuint colormap_impl::colorsLen() const -{ - return mColsMapLen; -} - -GLuint colormap_impl::redLen() const -{ - return mRedMapLen; -} - -GLuint colormap_impl::moodLen() const -{ - return mMoodMapLen; -} - -GLuint colormap_impl::heatLen() const -{ - return mHeatMapLen; -} - -GLuint colormap_impl::blueLen() const -{ - return mBlueMapLen; + glDeleteBuffers(1, &mInfernoMapBuffer); + glDeleteBuffers(1, &mMagmaMapBuffer); + glDeleteBuffers(1, &mPlasmaMapBuffer); + glDeleteBuffers(1, &mViridisMapBuffer); +} + +GLuint colormap_impl::cmapUniformBufferId(forge::ColorMap cmap) const +{ + switch(cmap) { + case FG_COLOR_MAP_DEFAULT : return mDefaultMapBuffer; + case FG_COLOR_MAP_SPECTRUM: return mSpecMapBuffer; + case FG_COLOR_MAP_COLORS : return mColorsMapBuffer; + case FG_COLOR_MAP_RED : return mRedMapBuffer; + case FG_COLOR_MAP_MOOD : return mMoodMapBuffer; + case FG_COLOR_MAP_HEAT : return mHeatMapBuffer; + case FG_COLOR_MAP_BLUE : return mBlueMapBuffer; + case FG_COLOR_MAP_INFERNO : return mInfernoMapBuffer; + case FG_COLOR_MAP_MAGMA : return mMagmaMapBuffer; + case FG_COLOR_MAP_PLASMA : return mPlasmaMapBuffer; + case FG_COLOR_MAP_VIRIDIS : return mViridisMapBuffer; + } +} + +GLuint colormap_impl::cmapLength(forge::ColorMap cmap) const +{ + switch(cmap) { + case FG_COLOR_MAP_DEFAULT : return mDefMapLen; + case FG_COLOR_MAP_SPECTRUM: return mSpecMapLen; + case FG_COLOR_MAP_COLORS : return mColsMapLen; + case FG_COLOR_MAP_RED : return mRedMapLen; + case FG_COLOR_MAP_MOOD : return mMoodMapLen; + case FG_COLOR_MAP_HEAT : return mHeatMapLen; + case FG_COLOR_MAP_BLUE : return mBlueMapLen; + case FG_COLOR_MAP_INFERNO : return mInfernoMapLen; + case FG_COLOR_MAP_MAGMA : return mMagmaMapLen; + case FG_COLOR_MAP_PLASMA : return mPlasmaMapLen; + case FG_COLOR_MAP_VIRIDIS : return mViridisMapLen; + } } } diff --git a/src/backend/opengl/colormap_impl.hpp b/src/backend/opengl/colormap_impl.hpp index f0cfd339..b546d164 100644 --- a/src/backend/opengl/colormap_impl.hpp +++ b/src/backend/opengl/colormap_impl.hpp @@ -25,9 +25,9 @@ class colormap_impl { * each of the following buffers will point * to the data from floating point arrays * defined in cmap.hpp header. Currently, - * the largest colormap is 506 colors(1520 floats). + * the largest colormap is 259 colors(1036 floats). * Hence the shader of internal::image_impl uses - * uniform array of floats with size 1536 (512 color triplets). + * uniform array of vec4 with size 259. * when a new colormap is added, make sure * the size of array declared in the shaders * used by *_impl objects to reflect appropriate @@ -39,6 +39,11 @@ class colormap_impl { gl::GLuint mMoodMapBuffer; gl::GLuint mHeatMapBuffer; gl::GLuint mBlueMapBuffer; + gl::GLuint mInfernoMapBuffer; + gl::GLuint mMagmaMapBuffer; + gl::GLuint mPlasmaMapBuffer; + gl::GLuint mViridisMapBuffer; + /* Current color map lengths */ gl::GLuint mDefMapLen; gl::GLuint mSpecMapLen; @@ -47,27 +52,18 @@ class colormap_impl { gl::GLuint mMoodMapLen; gl::GLuint mHeatMapLen; gl::GLuint mBlueMapLen; + gl::GLuint mInfernoMapLen; + gl::GLuint mMagmaMapLen; + gl::GLuint mPlasmaMapLen; + gl::GLuint mViridisMapLen; public: /* constructors and destructors */ colormap_impl(); ~colormap_impl(); - gl::GLuint defaultMap() const; - gl::GLuint spectrum() const; - gl::GLuint colors() const; - gl::GLuint red() const; - gl::GLuint mood() const; - gl::GLuint heat() const; - gl::GLuint blue() const; - - gl::GLuint defaultLen() const; - gl::GLuint spectrumLen() const; - gl::GLuint colorsLen() const; - gl::GLuint redLen() const; - gl::GLuint moodLen() const; - gl::GLuint heatLen() const; - gl::GLuint blueLen() const; + gl::GLuint cmapUniformBufferId(forge::ColorMap cmap) const; + gl::GLuint cmapLength(forge::ColorMap cmap) const; }; } diff --git a/src/backend/opengl/window_impl.cpp b/src/backend/opengl/window_impl.cpp index 3e5b2635..c86e01e9 100644 --- a/src/backend/opengl/window_impl.cpp +++ b/src/backend/opengl/window_impl.cpp @@ -120,8 +120,8 @@ window_impl::window_impl(int pWidth, int pHeight, const char* pTitle, mWindow->resizePixelBuffers(); /* set the colormap to default */ - mColorMapUBO = mCMap->defaultMap(); - mUBOSize = mCMap->defaultLen(); + mColorMapUBO = mCMap->cmapUniformBufferId(FG_COLOR_MAP_DEFAULT); + mUBOSize = mCMap->cmapLength(FG_COLOR_MAP_DEFAULT); glEnable(GL_MULTISAMPLE); std::vector& mats = mWindow->mViewMatrices; @@ -170,36 +170,9 @@ void window_impl::setSize(unsigned pW, unsigned pH) void window_impl::setColorMap(forge::ColorMap cmap) { - switch(cmap) { - case FG_COLOR_MAP_DEFAULT: - mColorMapUBO = mCMap->defaultMap(); - mUBOSize = mCMap->defaultLen(); - break; - case FG_COLOR_MAP_SPECTRUM: - mColorMapUBO = mCMap->spectrum(); - mUBOSize = mCMap->spectrumLen(); - break; - case FG_COLOR_MAP_COLORS: - mColorMapUBO = mCMap->colors(); - mUBOSize = mCMap->colorsLen(); - break; - case FG_COLOR_MAP_RED: - mColorMapUBO = mCMap->red(); - mUBOSize = mCMap->redLen(); - break; - case FG_COLOR_MAP_MOOD: - mColorMapUBO = mCMap->mood(); - mUBOSize = mCMap->moodLen(); - break; - case FG_COLOR_MAP_HEAT: - mColorMapUBO = mCMap->heat(); - mUBOSize = mCMap->heatLen(); - break; - case FG_COLOR_MAP_BLUE: - mColorMapUBO = mCMap->blue(); - mUBOSize = mCMap->blueLen(); - break; - } + mColorMapUBO = mCMap->cmapUniformBufferId(cmap); + + mUBOSize = mCMap->cmapLength(cmap); } int window_impl::getID() const From 397b5dcbf10d9389ce490598d0aacda2c21c02ac Mon Sep 17 00:00:00 2001 From: pradeep Date: Sun, 20 Nov 2016 19:11:24 +0530 Subject: [PATCH 3/5] Fix color maps: heat, blue and rainbow(known as colors earlier) --- include/fg/defines.h | 2 +- src/backend/cmap.hpp | 1353 +++++++++++++++----------- src/backend/opengl/colormap_impl.cpp | 12 +- src/backend/opengl/colormap_impl.hpp | 4 +- 4 files changed, 784 insertions(+), 587 deletions(-) diff --git a/include/fg/defines.h b/include/fg/defines.h index 66d954d4..68760cfb 100644 --- a/include/fg/defines.h +++ b/include/fg/defines.h @@ -127,7 +127,7 @@ typedef enum { typedef enum { FG_COLOR_MAP_DEFAULT = 0, ///< Default [0-255] grayscale colormap FG_COLOR_MAP_SPECTRUM = 1, ///< Visual spectrum (390nm-830nm) in sRGB colorspace - FG_COLOR_MAP_COLORS = 2, ///< Pure Colors + FG_COLOR_MAP_RAINBOW = 2, ///< Rainbow color map FG_COLOR_MAP_RED = 3, ///< Red color map FG_COLOR_MAP_MOOD = 4, ///< Mood color map FG_COLOR_MAP_HEAT = 5, ///< Heat color map diff --git a/src/backend/cmap.hpp b/src/backend/cmap.hpp index 2c1265de..b54eaacb 100644 --- a/src/backend/cmap.hpp +++ b/src/backend/cmap.hpp @@ -9,6 +9,12 @@ #pragma once +/** + * Color maps: heat, rainbow are pulled from the following resource: + * + * http://www.paraview.org/Wiki/Colormaps + * */ + /* grayscale */ float cmap_default[] = { @@ -565,267 +571,264 @@ float cmap_spectrum[] = 2.389238e-05 , -0 , -0 , 1.0 , }; -float cmap_colors[] = +float cmap_rainbow[] = { - 1.0000000e+00f, 0.0000000e+00f, 1.6470588e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 1.6078431e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 1.4509804e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 1.2549020e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 1.0588235e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 8.6274510e-02f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 6.2745098e-02f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 4.7058824e-02f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 3.1372549e-02f, 1.0000, - 1.0000000e+00f, 7.8431373e-03f, 1.9607843e-02f, 1.0000, - 1.0000000e+00f, 2.7450980e-02f, 1.1764706e-02f, 1.0000, - 1.0000000e+00f, 4.7058824e-02f, 3.9215686e-03f, 1.0000, - 1.0000000e+00f, 5.8823529e-02f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.4509804e-02f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 9.4117647e-02f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 1.1764706e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 1.4117647e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 1.6470588e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 1.8431373e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.0392157e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.2352941e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.3529412e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.5490196e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.7450980e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 2.9803922e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 3.2156863e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 3.4509804e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 3.6862745e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 3.9215686e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 4.1568627e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 4.3921569e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 4.6274510e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 4.8235294e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.0196078e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.1372549e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.3333333e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.5686275e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.8039216e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 5.9607843e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.0784314e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.3137255e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.6274510e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 6.9411765e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.1372549e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.2549020e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.4117647e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.6470588e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 7.8823529e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 8.1176471e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 8.3529412e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 8.5882353e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 8.7450980e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 8.8627451e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 9.0588235e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 9.2549020e-01f, 0.0000000e+00f, 1.0000, - 1.0000000e+00f, 9.4901961e-01f, 0.0000000e+00f, 1.0000, - 9.9607843e-01f, 9.6470588e-01f, 0.0000000e+00f, 1.0000, - 9.9215686e-01f, 9.8039216e-01f, 0.0000000e+00f, 1.0000, - 9.8039216e-01f, 9.9215686e-01f, 0.0000000e+00f, 1.0000, - 9.5686275e-01f, 9.9607843e-01f, 0.0000000e+00f, 1.0000, - 9.2549020e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.0196078e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.7843137e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.5882353e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.4313725e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.2745098e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 8.0784314e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 7.8823529e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 7.6470588e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 7.4901961e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 7.3333333e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 7.1372549e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 6.8627451e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 6.6274510e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 6.3921569e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 6.1960784e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 6.0000000e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 5.7647059e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 5.5294118e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 5.2941176e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 5.0588235e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 4.8627451e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 4.6666667e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 4.5490196e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 4.3529412e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 4.1568627e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 3.9215686e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 3.7254902e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 3.5686275e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 3.4117647e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 3.0980392e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 2.7843137e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 2.5490196e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 2.3137255e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 2.0784314e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 1.8823529e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 1.7254902e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 1.5686275e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 1.3333333e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 1.0980392e-01f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 9.4117647e-02f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 7.8431373e-02f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 6.2745098e-02f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 3.9215686e-02f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 1.5686275e-02f, 1.0000000e+00f, 0.0000000e+00f, 1.0000, - 3.9215686e-03f, 1.0000000e+00f, 1.1764706e-02f, 1.0000, - 3.9215686e-03f, 1.0000000e+00f, 3.9215686e-02f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 6.2745098e-02f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 7.8431373e-02f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 9.4117647e-02f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 1.1372549e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 1.3725490e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 1.5686275e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 1.7647059e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 1.8823529e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 2.0784314e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 2.2745098e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 2.5490196e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 2.7058824e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 2.8627451e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 3.0196078e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 3.2941176e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 3.6470588e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 3.9215686e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 4.1568627e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 4.3529412e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 4.5490196e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 4.6666667e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 4.8627451e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 5.0980392e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 5.3333333e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 5.4901961e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 5.6078431e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 5.8039216e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 6.0392157e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 6.2352941e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 6.5098039e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 6.8235294e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 7.0980392e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 7.2941176e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 7.4509804e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 7.6470588e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 7.8823529e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 8.0784314e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 8.2745098e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 8.4313725e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 8.5882353e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 8.7843137e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 9.0196078e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 9.2549020e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 9.3725490e-01f, 1.0000, - 0.0000000e+00f, 1.0000000e+00f, 9.5294118e-01f, 1.0000, - 0.0000000e+00f, 9.9215686e-01f, 9.7254902e-01f, 1.0000, - 0.0000000e+00f, 9.8431373e-01f, 9.8431373e-01f, 1.0000, - 0.0000000e+00f, 9.6862745e-01f, 9.9607843e-01f, 1.0000, - 0.0000000e+00f, 9.3725490e-01f, 9.9607843e-01f, 1.0000, - 0.0000000e+00f, 9.0980392e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.9019608e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.7450980e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.5882353e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.3529412e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.1176471e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.9607843e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.8039216e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.6470588e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.4117647e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 7.1764706e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.9411765e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.7058824e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.5098039e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.2745098e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.0392157e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 5.7647059e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 5.5294118e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 5.3333333e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 5.1372549e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 5.0196078e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 4.8235294e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 4.6274510e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 4.3921569e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 4.1568627e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 3.9215686e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 3.7254902e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 3.5294118e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 3.3725490e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 3.1764706e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 2.8627451e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 2.5882353e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 2.3529412e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 2.1960784e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 2.0392157e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 1.8039216e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 1.5686275e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 1.4117647e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 1.2549020e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 1.0980392e-01f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 8.6274510e-02f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 6.6666667e-02f, 1.0000000e+00f, 1.0000, - 0.0000000e+00f, 4.3137255e-02f, 1.0000000e+00f, 1.0000, - 3.9215686e-03f, 2.3529412e-02f, 1.0000000e+00f, 1.0000, - 3.9215686e-03f, 3.9215686e-03f, 1.0000000e+00f, 1.0000, - 1.9607843e-02f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 3.5294118e-02f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 5.8823529e-02f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 8.2352941e-02f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 1.0980392e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 1.3333333e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 1.4509804e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 1.6470588e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 1.8039216e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 2.0392157e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 2.2745098e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 2.5098039e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 2.7450980e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 2.9411765e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 3.0588235e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 3.2549020e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 3.4901961e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 3.7647059e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 4.0000000e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 4.1960784e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 4.3921569e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 4.6274510e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 4.8627451e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 5.0588235e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 5.1764706e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 5.3333333e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 5.5294118e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 5.8039216e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 6.0392157e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 6.2745098e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 6.4705882e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 6.6666667e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 6.7843137e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 6.9803922e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 7.2941176e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 7.5686275e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 7.8039216e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 7.9607843e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 8.1176471e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 8.3137255e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 8.5490196e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 8.7843137e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 9.0196078e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 9.2549020e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 9.4117647e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 9.5686275e-01f, 0.0000000e+00f, 1.0000000e+00f, 1.0000, - 9.7254902e-01f, 0.0000000e+00f, 9.9607843e-01f, 1.0000, - 9.8431373e-01f, 0.0000000e+00f, 9.8431373e-01f, 1.0000, - 9.9215686e-01f, 0.0000000e+00f, 9.7254902e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 9.4901961e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 9.2941176e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 9.0196078e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 8.8235294e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 8.5882353e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 8.4313725e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 8.2352941e-01f, 1.0000, - 1.0000000e+00f, 0.0000000e+00f, 8.0392157e-01f, 1.0000, - 1.0000000e+00f, 6.9411765e-01f, 9.4117647e-01f, 1.0000, + 1.000000, 0.000000, 0.164706, 1.0, + 1.000000, 0.000000, 0.142745, 1.0, + 1.000000, 0.000000, 0.124183, 1.0, + 1.000000, 0.000000, 0.105882, 1.0, + 1.000000, 0.000000, 0.084706, 1.0, + 1.000000, 0.000000, 0.065359, 1.0, + 1.000000, 0.000000, 0.047059, 1.0, + 1.000000, 0.000000, 0.026667, 1.0, + 1.000000, 0.009150, 0.008366, 1.0, + 1.000000, 0.029020, 0.000000, 1.0, + 1.000000, 0.049673, 0.000000, 1.0, + 1.000000, 0.069020, 0.000000, 1.0, + 1.000000, 0.090196, 0.000000, 1.0, + 1.000000, 0.108497, 0.000000, 1.0, + 1.000000, 0.127059, 0.000000, 1.0, + 1.000000, 0.149020, 0.000000, 1.0, + 1.000000, 0.167320, 0.000000, 1.0, + 1.000000, 0.185621, 0.000000, 1.0, + 1.000000, 0.207059, 0.000000, 1.0, + 1.000000, 0.226144, 0.000000, 1.0, + 1.000000, 0.247059, 0.000000, 1.0, + 1.000000, 0.266667, 0.000000, 1.0, + 1.000000, 0.284967, 0.000000, 1.0, + 1.000000, 0.305098, 0.000000, 1.0, + 1.000000, 0.333333, 0.000000, 1.0, + 1.000000, 0.364706, 0.000000, 1.0, + 1.000000, 0.385621, 0.000000, 1.0, + 1.000000, 0.404706, 0.000000, 1.0, + 1.000000, 0.426144, 0.000000, 1.0, + 1.000000, 0.444444, 0.000000, 1.0, + 1.000000, 0.462745, 0.000000, 1.0, + 1.000000, 0.484706, 0.000000, 1.0, + 1.000000, 0.503268, 0.000000, 1.0, + 1.000000, 0.524706, 0.000000, 1.0, + 1.000000, 0.543791, 0.000000, 1.0, + 1.000000, 0.562091, 0.000000, 1.0, + 1.000000, 0.582745, 0.000000, 1.0, + 1.000000, 0.602614, 0.000000, 1.0, + 1.000000, 0.620915, 0.000000, 1.0, + 1.000000, 0.640784, 0.000000, 1.0, + 1.000000, 0.669281, 0.000000, 1.0, + 1.000000, 0.703268, 0.000000, 1.0, + 1.000000, 0.721569, 0.000000, 1.0, + 1.000000, 0.740392, 0.000000, 1.0, + 1.000000, 0.762091, 0.000000, 1.0, + 1.000000, 0.780392, 0.000000, 1.0, + 1.000000, 0.798693, 0.000000, 1.0, + 1.000000, 0.820392, 0.000000, 1.0, + 1.000000, 0.839216, 0.000000, 1.0, + 1.000000, 0.860392, 0.000000, 1.0, + 1.000000, 0.879739, 0.000000, 1.0, + 1.000000, 0.898039, 0.000000, 1.0, + 1.000000, 0.918431, 0.000000, 1.0, + 1.000000, 0.938562, 0.000000, 1.0, + 1.000000, 0.956863, 0.000000, 1.0, + 1.000000, 0.976471, 0.000000, 1.0, + 0.989543, 0.994248, 0.000000, 1.0, + 0.956863, 1.000000, 0.000000, 1.0, + 0.938562, 1.000000, 0.000000, 1.0, + 0.920000, 1.000000, 0.000000, 1.0, + 0.898039, 1.000000, 0.000000, 1.0, + 0.879739, 1.000000, 0.000000, 1.0, + 0.861438, 1.000000, 0.000000, 1.0, + 0.840000, 1.000000, 0.000000, 1.0, + 0.820915, 1.000000, 0.000000, 1.0, + 0.800000, 1.000000, 0.000000, 1.0, + 0.780392, 1.000000, 0.000000, 1.0, + 0.762092, 1.000000, 0.000000, 1.0, + 0.741961, 1.000000, 0.000000, 1.0, + 0.721569, 1.000000, 0.000000, 1.0, + 0.701961, 1.000000, 0.000000, 1.0, + 0.681046, 1.000000, 0.000000, 1.0, + 0.658039, 1.000000, 0.000000, 1.0, + 0.620915, 1.000000, 0.000000, 1.0, + 0.602614, 1.000000, 0.000000, 1.0, + 0.584314, 1.000000, 0.000000, 1.0, + 0.562353, 1.000000, 0.000000, 1.0, + 0.543791, 1.000000, 0.000000, 1.0, + 0.522353, 1.000000, 0.000000, 1.0, + 0.503268, 1.000000, 0.000000, 1.0, + 0.484967, 1.000000, 0.000000, 1.0, + 0.464314, 1.000000, 0.000000, 1.0, + 0.444444, 1.000000, 0.000000, 1.0, + 0.426144, 1.000000, 0.000000, 1.0, + 0.406275, 1.000000, 0.000000, 1.0, + 0.385621, 1.000000, 0.000000, 1.0, + 0.366275, 1.000000, 0.000000, 1.0, + 0.345098, 1.000000, 0.000000, 1.0, + 0.323660, 1.000000, 0.000000, 1.0, + 0.284967, 1.000000, 0.000000, 1.0, + 0.266667, 1.000000, 0.000000, 1.0, + 0.248366, 1.000000, 0.000000, 1.0, + 0.226667, 1.000000, 0.000000, 1.0, + 0.207843, 1.000000, 0.000000, 1.0, + 0.186667, 1.000000, 0.000000, 1.0, + 0.167320, 1.000000, 0.000000, 1.0, + 0.149020, 1.000000, 0.000000, 1.0, + 0.128627, 1.000000, 0.000000, 1.0, + 0.108497, 1.000000, 0.000000, 1.0, + 0.088627, 1.000000, 0.000000, 1.0, + 0.067974, 1.000000, 0.000000, 1.0, + 0.049673, 1.000000, 0.000000, 1.0, + 0.030588, 1.000000, 0.000000, 1.0, + 0.010196, 1.000000, 0.000523, 1.0, + 0.000000, 1.000000, 0.006797, 1.0, + 0.000000, 1.000000, 0.047059, 1.0, + 0.000000, 1.000000, 0.065359, 1.0, + 0.000000, 1.000000, 0.087059, 1.0, + 0.000000, 1.000000, 0.105882, 1.0, + 0.000000, 1.000000, 0.124183, 1.0, + 0.000000, 1.000000, 0.145098, 1.0, + 0.000000, 1.000000, 0.164706, 1.0, + 0.000000, 1.000000, 0.183007, 1.0, + 0.000000, 1.000000, 0.203137, 1.0, + 0.000000, 1.000000, 0.223529, 1.0, + 0.000000, 1.000000, 0.243137, 1.0, + 0.000000, 1.000000, 0.264052, 1.0, + 0.000000, 1.000000, 0.282353, 1.0, + 0.000000, 1.000000, 0.301176, 1.0, + 0.000000, 1.000000, 0.322876, 1.0, + 0.000000, 1.000000, 0.341176, 1.0, + 0.000000, 1.000000, 0.381438, 1.0, + 0.000000, 1.000000, 0.401307, 1.0, + 0.000000, 1.000000, 0.422745, 1.0, + 0.000000, 1.000000, 0.441830, 1.0, + 0.000000, 1.000000, 0.460131, 1.0, + 0.000000, 1.000000, 0.480784, 1.0, + 0.000000, 1.000000, 0.500654, 1.0, + 0.000000, 1.000000, 0.518954, 1.0, + 0.000000, 1.000000, 0.538823, 1.0, + 0.000000, 1.000000, 0.559477, 1.0, + 0.000000, 1.000000, 0.578823, 1.0, + 0.000000, 1.000000, 0.600000, 1.0, + 0.000000, 1.000000, 0.618301, 1.0, + 0.000000, 1.000000, 0.636863, 1.0, + 0.000000, 1.000000, 0.658823, 1.0, + 0.000000, 1.000000, 0.677124, 1.0, + 0.000000, 1.000000, 0.715817, 1.0, + 0.000000, 1.000000, 0.737255, 1.0, + 0.000000, 1.000000, 0.758431, 1.0, + 0.000000, 1.000000, 0.777778, 1.0, + 0.000000, 1.000000, 0.796078, 1.0, + 0.000000, 1.000000, 0.816471, 1.0, + 0.000000, 1.000000, 0.836601, 1.0, + 0.000000, 1.000000, 0.856471, 1.0, + 0.000000, 1.000000, 0.877124, 1.0, + 0.000000, 1.000000, 0.895425, 1.0, + 0.000000, 1.000000, 0.914510, 1.0, + 0.000000, 1.000000, 0.935948, 1.0, + 0.000000, 1.000000, 0.954248, 1.0, + 0.000000, 1.000000, 0.972549, 1.0, + 0.000000, 1.000000, 0.994510, 1.0, + 0.000000, 0.983007, 0.999477, 1.0, + 0.000000, 0.945882, 1.000000, 1.0, + 0.000000, 0.922876, 1.000000, 1.0, + 0.000000, 0.901961, 1.000000, 1.0, + 0.000000, 0.882353, 1.000000, 1.0, + 0.000000, 0.864052, 1.000000, 1.0, + 0.000000, 0.843922, 1.000000, 1.0, + 0.000000, 0.823529, 1.000000, 1.0, + 0.000000, 0.803922, 1.000000, 1.0, + 0.000000, 0.783007, 1.000000, 1.0, + 0.000000, 0.764706, 1.000000, 1.0, + 0.000000, 0.745882, 1.000000, 1.0, + 0.000000, 0.724183, 1.000000, 1.0, + 0.000000, 0.705882, 1.000000, 1.0, + 0.000000, 0.683922, 1.000000, 1.0, + 0.000000, 0.665360, 1.000000, 1.0, + 0.000000, 0.647059, 1.000000, 1.0, + 0.000000, 0.611503, 1.000000, 1.0, + 0.000000, 0.586928, 1.000000, 1.0, + 0.000000, 0.566275, 1.000000, 1.0, + 0.000000, 0.546405, 1.000000, 1.0, + 0.000000, 0.526275, 1.000000, 1.0, + 0.000000, 0.505882, 1.000000, 1.0, + 0.000000, 0.487582, 1.000000, 1.0, + 0.000000, 0.468235, 1.000000, 1.0, + 0.000000, 0.447059, 1.000000, 1.0, + 0.000000, 0.428758, 1.000000, 1.0, + 0.000000, 0.410196, 1.000000, 1.0, + 0.000000, 0.388235, 1.000000, 1.0, + 0.000000, 0.369935, 1.000000, 1.0, + 0.000000, 0.348235, 1.000000, 1.0, + 0.000000, 0.329412, 1.000000, 1.0, + 0.000000, 0.311111, 1.000000, 1.0, + 0.000000, 0.277124, 1.000000, 1.0, + 0.000000, 0.250980, 1.000000, 1.0, + 0.000000, 0.230588, 1.000000, 1.0, + 0.000000, 0.210458, 1.000000, 1.0, + 0.000000, 0.190588, 1.000000, 1.0, + 0.000000, 0.169935, 1.000000, 1.0, + 0.000000, 0.151634, 1.000000, 1.0, + 0.000000, 0.132549, 1.000000, 1.0, + 0.000000, 0.111111, 1.000000, 1.0, + 0.000000, 0.092549, 1.000000, 1.0, + 0.000000, 0.070588, 1.000000, 1.0, + 0.000000, 0.052288, 1.000000, 1.0, + 0.000000, 0.033987, 1.000000, 1.0, + 0.000000, 0.012549, 1.000000, 1.0, + 0.005752, 0.002092, 1.000000, 1.0, + 0.020915, 0.000000, 1.000000, 1.0, + 0.053333, 0.000000, 1.000000, 1.0, + 0.083137, 0.000000, 1.000000, 1.0, + 0.103268, 0.000000, 1.000000, 1.0, + 0.121569, 0.000000, 1.000000, 1.0, + 0.141177, 0.000000, 1.000000, 1.0, + 0.162091, 0.000000, 1.000000, 1.0, + 0.180392, 0.000000, 1.000000, 1.0, + 0.199216, 0.000000, 1.000000, 1.0, + 0.220915, 0.000000, 1.000000, 1.0, + 0.239216, 0.000000, 1.000000, 1.0, + 0.261177, 0.000000, 1.000000, 1.0, + 0.279739, 0.000000, 1.000000, 1.0, + 0.298039, 0.000000, 1.000000, 1.0, + 0.319216, 0.000000, 1.000000, 1.0, + 0.338562, 0.000000, 1.000000, 1.0, + 0.356863, 0.000000, 1.000000, 1.0, + 0.387712, 0.000000, 1.000000, 1.0, + 0.418824, 0.000000, 1.000000, 1.0, + 0.439216, 0.000000, 1.000000, 1.0, + 0.457516, 0.000000, 1.000000, 1.0, + 0.476863, 0.000000, 1.000000, 1.0, + 0.498039, 0.000000, 1.000000, 1.0, + 0.516340, 0.000000, 1.000000, 1.0, + 0.534902, 0.000000, 1.000000, 1.0, + 0.556863, 0.000000, 1.000000, 1.0, + 0.575164, 0.000000, 1.000000, 1.0, + 0.596863, 0.000000, 1.000000, 1.0, + 0.615686, 0.000000, 1.000000, 1.0, + 0.633987, 0.000000, 1.000000, 1.0, + 0.654902, 0.000000, 1.000000, 1.0, + 0.674510, 0.000000, 1.000000, 1.0, + 0.694902, 0.000000, 1.000000, 1.0, + 0.724183, 0.000000, 1.000000, 1.0, + 0.754510, 0.000000, 1.000000, 1.0, + 0.775163, 0.000000, 1.000000, 1.0, + 0.793464, 0.000000, 1.000000, 1.0, + 0.812549, 0.000000, 1.000000, 1.0, + 0.833987, 0.000000, 1.000000, 1.0, + 0.852549, 0.000000, 1.000000, 1.0, + 0.874510, 0.000000, 1.000000, 1.0, + 0.892811, 0.000000, 1.000000, 1.0, + 0.911111, 0.000000, 1.000000, 1.0, + 0.932549, 0.000000, 1.000000, 1.0, + 0.951634, 0.000000, 1.000000, 1.0, + 0.969935, 0.000000, 1.000000, 1.0, + 0.990588, 0.000000, 0.997647, 1.0, + 1.000000, 0.000000, 0.985621, 1.0, + 1.000000, 0.000000, 0.965490, 1.0, + 1.000000, 0.000000, 0.937255, 1.0, + 1.000000, 0.000000, 0.905882, 1.0, + 1.000000, 0.000000, 0.884967, 1.0, + 1.000000, 0.000000, 0.866667, 1.0, + 1.000000, 0.000000, 0.847843, 1.0, + 1.000000, 0.000000, 0.826144, 1.0, + 1.000000, 0.000000, 0.807843, 1.0, }; float cmap_red[] = @@ -1349,328 +1352,522 @@ float cmap_mood[] = float cmap_heat[] = { - 0.0000000e+00f, 0.0000000e+00f, 0.0000000e+00f, 1.0000f, - 0.0000000e+00f, 0.0000000e+00f, 1.1909524e-01f, 1.0000f, - 0.0000000e+00f, 0.0000000e+00f, 2.4069524e-01f, 1.0000f, - 0.0000000e+00f, 0.0000000e+00f, 3.0814286e-01f, 1.0000f, - 6.1476190e-03f, 0.0000000e+00f, 3.7949048e-01f, 1.0000f, - 5.3785714e-02f, 0.0000000e+00f, 4.4683810e-01f, 1.0000f, - 1.0137143e-01f, 0.0000000e+00f, 5.1428571e-01f, 1.0000f, - 1.4903333e-01f, 0.0000000e+00f, 5.8173333e-01f, 1.0000f, - 1.9665714e-01f, 0.0000000e+00f, 6.5155714e-01f, 1.0000f, - 2.4425714e-01f, 0.0000000e+00f, 7.0305714e-01f, 1.0000f, - 2.9187143e-01f, 0.0000000e+00f, 7.5851905e-01f, 1.0000f, - 3.3948095e-01f, 0.0000000e+00f, 8.1398095e-01f, 1.0000f, - 3.9104286e-01f, 0.0000000e+00f, 8.6270000e-01f, 1.0000f, - 4.3864286e-01f, 0.0000000e+00f, 8.7691429e-01f, 1.0000f, - 4.8626667e-01f, 0.0000000e+00f, 8.8233333e-01f, 1.0000f, - 5.3392857e-01f, 0.0000000e+00f, 8.4932857e-01f, 1.0000f, - 5.7851905e-01f, 0.0000000e+00f, 8.1153810e-01f, 1.0000f, - 6.1029524e-01f, 0.0000000e+00f, 7.5199048e-01f, 1.0000f, - 6.3864286e-01f, 0.0000000e+00f, 6.9634286e-01f, 1.0000f, - 6.5842857e-01f, 0.0000000e+00f, 6.3679524e-01f, 1.0000f, - 6.8220952e-01f, 0.0000000e+00f, 5.7724762e-01f, 1.0000f, - 7.0200000e-01f, 0.0000000e+00f, 5.1760000e-01f, 1.0000f, - 7.2568571e-01f, 0.0000000e+00f, 4.6195714e-01f, 1.0000f, - 7.4584286e-01f, 0.0000000e+00f, 4.0278571e-01f, 1.0000f, - 7.6972857e-01f, 5.0285714e-03f, 3.4675714e-01f, 1.0000f, - 7.9368571e-01f, 3.2885714e-02f, 2.8795238e-01f, 1.0000f, - 8.1662857e-01f, 6.5509524e-02f, 2.3156190e-01f, 1.0000f, - 8.3641429e-01f, 1.0812857e-01f, 1.7312857e-01f, 1.0000f, - 8.5750000e-01f, 1.4903333e-01f, 1.1636667e-01f, 1.0000f, - 8.8140952e-01f, 1.9269524e-01f, 5.6757143e-02f, 1.0000f, - 9.0367143e-01f, 2.3641429e-01f, 1.4028571e-02f, 1.0000f, - 9.2531429e-01f, 2.8011905e-01f, 3.9000000e-03f, 1.0000f, - 9.4918571e-01f, 3.2378095e-01f, 0.0000000e+00f, 1.0000f, - 9.7311429e-01f, 3.6748571e-01f, 0.0000000e+00f, 1.0000f, - 9.8820000e-01f, 4.0879048e-01f, 0.0000000e+00f, 1.0000f, - 9.9480000e-01f, 4.4050000e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 4.7227143e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 5.0401905e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 5.3181429e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 5.5967143e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 5.8745714e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 6.1532381e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 6.4310000e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 6.7097143e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 6.9875238e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 7.3052857e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 7.5838571e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 7.9008095e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 8.1792857e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 8.4573333e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 8.7357143e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 9.0534286e-01f, 0.0000000e+00f, 1.0000f, - 1.0000000e+00f, 9.3316190e-01f, 4.0733333e-02f, 1.0000f, - 1.0000000e+00f, 9.6098571e-01f, 1.1017143e-01f, 1.0000f, - 1.0000000e+00f, 9.7872857e-01f, 2.1404286e-01f, 1.0000f, - 1.0000000e+00f, 9.9461429e-01f, 3.4097619e-01f, 1.0000f, - 1.0000000e+00f, 1.0000000e+00f, 4.6403333e-01f, 1.0000f, - 1.0000000e+00f, 1.0000000e+00f, 5.8712857e-01f, 1.0000f, - 1.0000000e+00f, 1.0000000e+00f, 7.1014762e-01f, 1.0000f, - 1.0000000e+00f, 1.0000000e+00f, 8.3713810e-01f, 1.0000f, - 1.0000000e+00f, 1.0000000e+00f, 9.1935714e-01f, 1.0000f, - 1.0000000e+00f, 1.0000000e+00f, 9.8280476e-01f, 1.0000f, - 1.0000000e+00f, 1.0000000e+00f, 1.0000000e+00f, 1.0000f, - 1.0000000e+00f, 1.0000000e+00f, 1.0000000e+00f, 1.0000f, + 0.000000, 0.000000, 0.000000, 1.0, + 0.003660, 0.000000, 0.000000, 1.0, + 0.007320, 0.000000, 0.000000, 1.0, + 0.014118, 0.000000, 0.000000, 1.0, + 0.018562, 0.000000, 0.000000, 1.0, + 0.024837, 0.000000, 0.000000, 1.0, + 0.029804, 0.000000, 0.000000, 1.0, + 0.035556, 0.000000, 0.000000, 1.0, + 0.041046, 0.000000, 0.000000, 1.0, + 0.046275, 0.000000, 0.000000, 1.0, + 0.053595, 0.000000, 0.000000, 1.0, + 0.060915, 0.000000, 0.000000, 1.0, + 0.067451, 0.000000, 0.000000, 1.0, + 0.071634, 0.000000, 0.000000, 1.0, + 0.078693, 0.000000, 0.000000, 1.0, + 0.082353, 0.000000, 0.000000, 1.0, + 0.089673, 0.000000, 0.000000, 1.0, + 0.093595, 0.000000, 0.000000, 1.0, + 0.100392, 0.000000, 0.000000, 1.0, + 0.104837, 0.000000, 0.000000, 1.0, + 0.108497, 0.000000, 0.000000, 1.0, + 0.114510, 0.000000, 0.000000, 1.0, + 0.119739, 0.000000, 0.000000, 1.0, + 0.125229, 0.000000, 0.000000, 1.0, + 0.130980, 0.000000, 0.000000, 1.0, + 0.135948, 0.000000, 0.000000, 1.0, + 0.142222, 0.000000, 0.000000, 1.0, + 0.146667, 0.000000, 0.000000, 1.0, + 0.153464, 0.000000, 0.000000, 1.0, + 0.157386, 0.000000, 0.000000, 1.0, + 0.164706, 0.000000, 0.000000, 1.0, + 0.168366, 0.000000, 0.000000, 1.0, + 0.178824, 0.000000, 0.000000, 1.0, + 0.183529, 0.000000, 0.000000, 1.0, + 0.190065, 0.000000, 0.000000, 1.0, + 0.194771, 0.000000, 0.000000, 1.0, + 0.200784, 0.000000, 0.000000, 1.0, + 0.206013, 0.000000, 0.000000, 1.0, + 0.211503, 0.000000, 0.000000, 1.0, + 0.217255, 0.000000, 0.000000, 1.0, + 0.220915, 0.000000, 0.000000, 1.0, + 0.225621, 0.000000, 0.000000, 1.0, + 0.232157, 0.000000, 0.000000, 1.0, + 0.236340, 0.000000, 0.000000, 1.0, + 0.243399, 0.000000, 0.000000, 1.0, + 0.247059, 0.000000, 0.000000, 1.0, + 0.254379, 0.000000, 0.000000, 1.0, + 0.258301, 0.000000, 0.000000, 1.0, + 0.265098, 0.000000, 0.000000, 1.0, + 0.269542, 0.000000, 0.000000, 1.0, + 0.273203, 0.000000, 0.000000, 1.0, + 0.279216, 0.000000, 0.000000, 1.0, + 0.284444, 0.000000, 0.000000, 1.0, + 0.291765, 0.000000, 0.000000, 1.0, + 0.301176, 0.000000, 0.000000, 1.0, + 0.307190, 0.000000, 0.000000, 1.0, + 0.311895, 0.000000, 0.000000, 1.0, + 0.318431, 0.000000, 0.000000, 1.0, + 0.322614, 0.000000, 0.000000, 1.0, + 0.329673, 0.000000, 0.000000, 1.0, + 0.333333, 0.000000, 0.000000, 1.0, + 0.336993, 0.000000, 0.000000, 1.0, + 0.344052, 0.000000, 0.000000, 1.0, + 0.348235, 0.000000, 0.000000, 1.0, + 0.357647, 0.000000, 0.000000, 1.0, + 0.366013, 0.000000, 0.000000, 1.0, + 0.370980, 0.000000, 0.000000, 1.0, + 0.376732, 0.000000, 0.000000, 1.0, + 0.382222, 0.000000, 0.000000, 1.0, + 0.385882, 0.000000, 0.000000, 1.0, + 0.390850, 0.000000, 0.000000, 1.0, + 0.397124, 0.000000, 0.000000, 1.0, + 0.401569, 0.000000, 0.000000, 1.0, + 0.408366, 0.000000, 0.000000, 1.0, + 0.412549, 0.000000, 0.000000, 1.0, + 0.423529, 0.000000, 0.000000, 1.0, + 0.430850, 0.000000, 0.000000, 1.0, + 0.434771, 0.000000, 0.000000, 1.0, + 0.441569, 0.000000, 0.000000, 1.0, + 0.446013, 0.000000, 0.000000, 1.0, + 0.449673, 0.000000, 0.000000, 1.0, + 0.455686, 0.000000, 0.000000, 1.0, + 0.460915, 0.000000, 0.000000, 1.0, + 0.466405, 0.000000, 0.000000, 1.0, + 0.472157, 0.000000, 0.000000, 1.0, + 0.477124, 0.000000, 0.000000, 1.0, + 0.483399, 0.000000, 0.000000, 1.0, + 0.487843, 0.000000, 0.000000, 1.0, + 0.494641, 0.000000, 0.000000, 1.0, + 0.498301, 0.000000, 0.000000, 1.0, + 0.501961, 0.000000, 0.000000, 1.0, + 0.509281, 0.000000, 0.000000, 1.0, + 0.513203, 0.000000, 0.000000, 1.0, + 0.520000, 0.000000, 0.000000, 1.0, + 0.524444, 0.000000, 0.000000, 1.0, + 0.530719, 0.000000, 0.000000, 1.0, + 0.540392, 0.000000, 0.000000, 1.0, + 0.547190, 0.000000, 0.000000, 1.0, + 0.550850, 0.000000, 0.000000, 1.0, + 0.556078, 0.000000, 0.000000, 1.0, + 0.562092, 0.000000, 0.000000, 1.0, + 0.566797, 0.000000, 0.000000, 1.0, + 0.573333, 0.000000, 0.000000, 1.0, + 0.577516, 0.000000, 0.000000, 1.0, + 0.584575, 0.000000, 0.000000, 1.0, + 0.588235, 0.000000, 0.000000, 1.0, + 0.595556, 0.000000, 0.000000, 1.0, + 0.599477, 0.000000, 0.000000, 1.0, + 0.606275, 0.000000, 0.000000, 1.0, + 0.610719, 0.000000, 0.000000, 1.0, + 0.614379, 0.000000, 0.000000, 1.0, + 0.620392, 0.000000, 0.000000, 1.0, + 0.625621, 0.000000, 0.000000, 1.0, + 0.631111, 0.000000, 0.000000, 1.0, + 0.636863, 0.000000, 0.000000, 1.0, + 0.641830, 0.000000, 0.000000, 1.0, + 0.648105, 0.000000, 0.000000, 1.0, + 0.653333, 0.000000, 0.000000, 1.0, + 0.663268, 0.000000, 0.000000, 1.0, + 0.667190, 0.000000, 0.000000, 1.0, + 0.674510, 0.000000, 0.000000, 1.0, + 0.678170, 0.000000, 0.000000, 1.0, + 0.685229, 0.003399, 0.000000, 1.0, + 0.689412, 0.010196, 0.000000, 1.0, + 0.695948, 0.017516, 0.000000, 1.0, + 0.700654, 0.024837, 0.000000, 1.0, + 0.706667, 0.032157, 0.000000, 1.0, + 0.711895, 0.039477, 0.000000, 1.0, + 0.719216, 0.050457, 0.000000, 1.0, + 0.727059, 0.061961, 0.000000, 1.0, + 0.732026, 0.067974, 0.000000, 1.0, + 0.738301, 0.072680, 0.000000, 1.0, + 0.742745, 0.080000, 0.000000, 1.0, + 0.749542, 0.087320, 0.000000, 1.0, + 0.753464, 0.094641, 0.000000, 1.0, + 0.760784, 0.101961, 0.000000, 1.0, + 0.764444, 0.109281, 0.000000, 1.0, + 0.771503, 0.116601, 0.000000, 1.0, + 0.775686, 0.123922, 0.000000, 1.0, + 0.785098, 0.134118, 0.000000, 1.0, + 0.790850, 0.142484, 0.000000, 1.0, + 0.796863, 0.149804, 0.000000, 1.0, + 0.802092, 0.157124, 0.000000, 1.0, + 0.807582, 0.164444, 0.000000, 1.0, + 0.813333, 0.171765, 0.000000, 1.0, + 0.818301, 0.179085, 0.000000, 1.0, + 0.824575, 0.186405, 0.000000, 1.0, + 0.828235, 0.193725, 0.000000, 1.0, + 0.832418, 0.200523, 0.000000, 1.0, + 0.839477, 0.204444, 0.000000, 1.0, + 0.843137, 0.211765, 0.000000, 1.0, + 0.850458, 0.219085, 0.000000, 1.0, + 0.854379, 0.226405, 0.000000, 1.0, + 0.861176, 0.233725, 0.000000, 1.0, + 0.865621, 0.241046, 0.000000, 1.0, + 0.871895, 0.248366, 0.000000, 1.0, + 0.876863, 0.255686, 0.000000, 1.0, + 0.882614, 0.263007, 0.000000, 1.0, + 0.888105, 0.268497, 0.000000, 1.0, + 0.891765, 0.273725, 0.000000, 1.0, + 0.898039, 0.283660, 0.000000, 1.0, + 0.907974, 0.296209, 0.000000, 1.0, + 0.914510, 0.303529, 0.000000, 1.0, + 0.918693, 0.310850, 0.000000, 1.0, + 0.925752, 0.318170, 0.000000, 1.0, + 0.929412, 0.325490, 0.000000, 1.0, + 0.936732, 0.332810, 0.000000, 1.0, + 0.940654, 0.336732, 0.000000, 1.0, + 0.944314, 0.343529, 0.000000, 1.0, + 0.950850, 0.350850, 0.000000, 1.0, + 0.955556, 0.358170, 0.000000, 1.0, + 0.961569, 0.365490, 0.000000, 1.0, + 0.966797, 0.372810, 0.000000, 1.0, + 0.972288, 0.380131, 0.000000, 1.0, + 0.978039, 0.387451, 0.000000, 1.0, + 0.983007, 0.394771, 0.000000, 1.0, + 0.989281, 0.401046, 0.000000, 1.0, + 0.993726, 0.405490, 0.000000, 1.0, + 1.000000, 0.412810, 0.000000, 1.0, + 1.000000, 0.420131, 0.000000, 1.0, + 1.000000, 0.427451, 0.000000, 1.0, + 1.000000, 0.434771, 0.000000, 1.0, + 1.000000, 0.448889, 0.000000, 1.0, + 1.000000, 0.457255, 0.000000, 1.0, + 1.000000, 0.464575, 0.000000, 1.0, + 1.000000, 0.469281, 0.000000, 1.0, + 1.000000, 0.475294, 0.000000, 1.0, + 1.000000, 0.482614, 0.000000, 1.0, + 1.000000, 0.489935, 0.000000, 1.0, + 1.000000, 0.497255, 0.000000, 1.0, + 1.000000, 0.504575, 0.000000, 1.0, + 1.000000, 0.511895, 0.000000, 1.0, + 1.000000, 0.520784, 0.005490, 1.0, + 1.000000, 0.533856, 0.029542, 1.0, + 1.000000, 0.537778, 0.044183, 1.0, + 1.000000, 0.545098, 0.058823, 1.0, + 1.000000, 0.552418, 0.073464, 1.0, + 1.000000, 0.559739, 0.088105, 1.0, + 1.000000, 0.567059, 0.102745, 1.0, + 1.000000, 0.574379, 0.117386, 1.0, + 1.000000, 0.581699, 0.132026, 1.0, + 1.000000, 0.589020, 0.146667, 1.0, + 1.000000, 0.596340, 0.161307, 1.0, + 1.000000, 0.605490, 0.183268, 1.0, + 1.000000, 0.614902, 0.204706, 1.0, + 1.000000, 0.622222, 0.216993, 1.0, + 1.000000, 0.629542, 0.231634, 1.0, + 1.000000, 0.636863, 0.246275, 1.0, + 1.000000, 0.644183, 0.260915, 1.0, + 1.000000, 0.651503, 0.275556, 1.0, + 1.000000, 0.658824, 0.290196, 1.0, + 1.000000, 0.666144, 0.304837, 1.0, + 1.000000, 0.670065, 0.319477, 1.0, + 1.000000, 0.676863, 0.334118, 1.0, + 1.000000, 0.684183, 0.348758, 1.0, + 1.000000, 0.691503, 0.363399, 1.0, + 1.000000, 0.698824, 0.378039, 1.0, + 1.000000, 0.706144, 0.392680, 1.0, + 1.000000, 0.713464, 0.405490, 1.0, + 1.000000, 0.720784, 0.418039, 1.0, + 1.000000, 0.728105, 0.432680, 1.0, + 1.000000, 0.734379, 0.447320, 1.0, + 1.000000, 0.738824, 0.461961, 1.0, + 1.000000, 0.746144, 0.476601, 1.0, + 1.000000, 0.753987, 0.492288, 1.0, + 1.000000, 0.768627, 0.521569, 1.0, + 1.000000, 0.775948, 0.536209, 1.0, + 1.000000, 0.783268, 0.550850, 1.0, + 1.000000, 0.790588, 0.565490, 1.0, + 1.000000, 0.797909, 0.580131, 1.0, + 1.000000, 0.802614, 0.594771, 1.0, + 1.000000, 0.808627, 0.607059, 1.0, + 1.000000, 0.815948, 0.620131, 1.0, + 1.000000, 0.823268, 0.634771, 1.0, + 1.000000, 0.830588, 0.649412, 1.0, + 1.000000, 0.837909, 0.664052, 1.0, + 1.000000, 0.845229, 0.678693, 1.0, + 1.000000, 0.852549, 0.693333, 1.0, + 1.000000, 0.859869, 0.707974, 1.0, + 1.000000, 0.866928, 0.722614, 1.0, + 1.000000, 0.870588, 0.737255, 1.0, + 1.000000, 0.877909, 0.751896, 1.0, + 1.000000, 0.885229, 0.766536, 1.0, + 1.000000, 0.892549, 0.781177, 1.0, + 1.000000, 0.899869, 0.795817, 1.0, + 1.000000, 0.907190, 0.807843, 1.0, + 1.000000, 0.919216, 0.830588, 1.0, + 1.000000, 0.929673, 0.851503, 1.0, + 1.000000, 0.935163, 0.866144, 1.0, + 1.000000, 0.940392, 0.880784, 1.0, + 1.000000, 0.947712, 0.895425, 1.0, + 1.000000, 0.955033, 0.910065, 1.0, + 1.000000, 0.962353, 0.924706, 1.0, + 1.000000, 0.969673, 0.939346, 1.0, + 1.000000, 0.976994, 0.953987, 1.0, + 1.000000, 0.984314, 0.968627, 1.0, }; float cmap_blue[] = { - 1.0000000000f, 1.0000000000f, 1.0000000000f, 1.0000f, - 0.9960784314f, 1.0000000000f, 1.0000000000f, 1.0000f, - 0.9921568627f, 0.9960784314f, 1.0000000000f, 1.0000f, - 0.9921568627f, 0.9960784314f, 1.0000000000f, 1.0000f, - 0.9882352941f, 0.9960784314f, 1.0000000000f, 1.0000f, - 0.9843137255f, 0.9921568627f, 0.9960784314f, 1.0000f, - 0.9803921569f, 0.9921568627f, 0.9960784314f, 1.0000f, - 0.9803921569f, 0.9921568627f, 0.9960784314f, 1.0000f, - 0.9764705882f, 0.9921568627f, 0.9960784314f, 1.0000f, - 0.9725490196f, 0.9882352941f, 0.9960784314f, 1.0000f, - 0.9686274510f, 0.9882352941f, 0.9960784314f, 1.0000f, - 0.9686274510f, 0.9882352941f, 0.9960784314f, 1.0000f, - 0.9647058824f, 0.9843137255f, 0.9960784314f, 1.0000f, - 0.9607843137f, 0.9843137255f, 0.9960784314f, 1.0000f, - 0.9568627451f, 0.9843137255f, 0.9921568627f, 1.0000f, - 0.9529411765f, 0.9803921569f, 0.9921568627f, 1.0000f, - 0.9529411765f, 0.9803921569f, 0.9921568627f, 1.0000f, - 0.9490196078f, 0.9803921569f, 0.9921568627f, 1.0000f, - 0.9450980392f, 0.9764705882f, 0.9921568627f, 1.0000f, - 0.9411764706f, 0.9764705882f, 0.9921568627f, 1.0000f, - 0.9411764706f, 0.9764705882f, 0.9921568627f, 1.0000f, - 0.9372549020f, 0.9764705882f, 0.9921568627f, 1.0000f, - 0.9333333333f, 0.9725490196f, 0.9882352941f, 1.0000f, - 0.9294117647f, 0.9725490196f, 0.9882352941f, 1.0000f, - 0.9294117647f, 0.9725490196f, 0.9882352941f, 1.0000f, - 0.9254901961f, 0.9686274510f, 0.9882352941f, 1.0000f, - 0.9215686275f, 0.9686274510f, 0.9882352941f, 1.0000f, - 0.9176470588f, 0.9686274510f, 0.9882352941f, 1.0000f, - 0.9137254902f, 0.9647058824f, 0.9882352941f, 1.0000f, - 0.9137254902f, 0.9647058824f, 0.9882352941f, 1.0000f, - 0.9098039216f, 0.9647058824f, 0.9882352941f, 1.0000f, - 0.9058823529f, 0.9607843137f, 0.9843137255f, 1.0000f, - 0.9019607843f, 0.9607843137f, 0.9843137255f, 1.0000f, - 0.9019607843f, 0.9607843137f, 0.9843137255f, 1.0000f, - 0.8980392157f, 0.9607843137f, 0.9843137255f, 1.0000f, - 0.8941176471f, 0.9568627451f, 0.9843137255f, 1.0000f, - 0.8901960784f, 0.9568627451f, 0.9843137255f, 1.0000f, - 0.8901960784f, 0.9568627451f, 0.9843137255f, 1.0000f, - 0.8862745098f, 0.9529411765f, 0.9843137255f, 1.0000f, - 0.8823529412f, 0.9529411765f, 0.9843137255f, 1.0000f, - 0.8784313725f, 0.9529411765f, 0.9803921569f, 1.0000f, - 0.8745098039f, 0.9490196078f, 0.9803921569f, 1.0000f, - 0.8745098039f, 0.9490196078f, 0.9803921569f, 1.0000f, - 0.8705882353f, 0.9490196078f, 0.9803921569f, 1.0000f, - 0.8666666667f, 0.9450980392f, 0.9803921569f, 1.0000f, - 0.8627450980f, 0.9450980392f, 0.9803921569f, 1.0000f, - 0.8627450980f, 0.9450980392f, 0.9803921569f, 1.0000f, - 0.8588235294f, 0.9450980392f, 0.9803921569f, 1.0000f, - 0.8549019608f, 0.9411764706f, 0.9764705882f, 1.0000f, - 0.8509803922f, 0.9411764706f, 0.9764705882f, 1.0000f, - 0.8509803922f, 0.9411764706f, 0.9764705882f, 1.0000f, - 0.8431372549f, 0.9372549020f, 0.9764705882f, 1.0000f, - 0.8392156863f, 0.9372549020f, 0.9764705882f, 1.0000f, - 0.8352941176f, 0.9333333333f, 0.9764705882f, 1.0000f, - 0.8313725490f, 0.9333333333f, 0.9764705882f, 1.0000f, - 0.8274509804f, 0.9294117647f, 0.9764705882f, 1.0000f, - 0.8196078431f, 0.9294117647f, 0.9764705882f, 1.0000f, - 0.8156862745f, 0.9294117647f, 0.9764705882f, 1.0000f, - 0.8117647059f, 0.9254901961f, 0.9764705882f, 1.0000f, - 0.8078431373f, 0.9254901961f, 0.9764705882f, 1.0000f, - 0.8039215686f, 0.9215686275f, 0.9764705882f, 1.0000f, - 0.8000000000f, 0.9215686275f, 0.9764705882f, 1.0000f, - 0.7960784314f, 0.9215686275f, 0.9764705882f, 1.0000f, - 0.7921568627f, 0.9176470588f, 0.9764705882f, 1.0000f, - 0.7882352941f, 0.9176470588f, 0.9764705882f, 1.0000f, - 0.7803921569f, 0.9137254902f, 0.9725490196f, 1.0000f, - 0.7764705882f, 0.9137254902f, 0.9725490196f, 1.0000f, - 0.7725490196f, 0.9137254902f, 0.9725490196f, 1.0000f, - 0.7686274510f, 0.9098039216f, 0.9725490196f, 1.0000f, - 0.7647058824f, 0.9098039216f, 0.9725490196f, 1.0000f, - 0.7607843137f, 0.9058823529f, 0.9725490196f, 1.0000f, - 0.7568627451f, 0.9058823529f, 0.9725490196f, 1.0000f, - 0.7529411765f, 0.9058823529f, 0.9725490196f, 1.0000f, - 0.7450980392f, 0.9019607843f, 0.9725490196f, 1.0000f, - 0.7411764706f, 0.9019607843f, 0.9725490196f, 1.0000f, - 0.7372549020f, 0.8980392157f, 0.9725490196f, 1.0000f, - 0.7333333333f, 0.8980392157f, 0.9725490196f, 1.0000f, - 0.7294117647f, 0.8980392157f, 0.9725490196f, 1.0000f, - 0.7254901961f, 0.8941176471f, 0.9725490196f, 1.0000f, - 0.7215686275f, 0.8941176471f, 0.9725490196f, 1.0000f, - 0.7176470588f, 0.8901960784f, 0.9725490196f, 1.0000f, - 0.7137254902f, 0.8901960784f, 0.9725490196f, 1.0000f, - 0.7058823529f, 0.8862745098f, 0.9725490196f, 1.0000f, - 0.7019607843f, 0.8862745098f, 0.9725490196f, 1.0000f, - 0.6980392157f, 0.8862745098f, 0.9725490196f, 1.0000f, - 0.6941176471f, 0.8823529412f, 0.9725490196f, 1.0000f, - 0.6901960784f, 0.8823529412f, 0.9725490196f, 1.0000f, - 0.6862745098f, 0.8784313725f, 0.9725490196f, 1.0000f, - 0.6823529412f, 0.8784313725f, 0.9725490196f, 1.0000f, - 0.6784313725f, 0.8784313725f, 0.9725490196f, 1.0000f, - 0.6745098039f, 0.8745098039f, 0.9725490196f, 1.0000f, - 0.6666666667f, 0.8745098039f, 0.9686274510f, 1.0000f, - 0.6627450980f, 0.8705882353f, 0.9686274510f, 1.0000f, - 0.6588235294f, 0.8705882353f, 0.9686274510f, 1.0000f, - 0.6549019608f, 0.8705882353f, 0.9686274510f, 1.0000f, - 0.6509803922f, 0.8666666667f, 0.9686274510f, 1.0000f, - 0.6470588235f, 0.8666666667f, 0.9686274510f, 1.0000f, - 0.6431372549f, 0.8627450980f, 0.9686274510f, 1.0000f, - 0.6392156863f, 0.8627450980f, 0.9686274510f, 1.0000f, - 0.6313725490f, 0.8627450980f, 0.9686274510f, 1.0000f, - 0.6274509804f, 0.8588235294f, 0.9686274510f, 1.0000f, - 0.6156862745f, 0.8549019608f, 0.9686274510f, 1.0000f, - 0.6117647059f, 0.8509803922f, 0.9647058824f, 1.0000f, - 0.6039215686f, 0.8470588235f, 0.9647058824f, 1.0000f, - 0.6000000000f, 0.8431372549f, 0.9607843137f, 1.0000f, - 0.5960784314f, 0.8392156863f, 0.9607843137f, 1.0000f, - 0.5882352941f, 0.8352941176f, 0.9568627451f, 1.0000f, - 0.5843137255f, 0.8313725490f, 0.9529411765f, 1.0000f, - 0.5803921569f, 0.8274509804f, 0.9529411765f, 1.0000f, - 0.5725490196f, 0.8235294118f, 0.9490196078f, 1.0000f, - 0.5686274510f, 0.8196078431f, 0.9490196078f, 1.0000f, - 0.5647058824f, 0.8156862745f, 0.9450980392f, 1.0000f, - 0.5568627451f, 0.8117647059f, 0.9411764706f, 1.0000f, - 0.5529411765f, 0.8078431373f, 0.9411764706f, 1.0000f, - 0.5490196078f, 0.8039215686f, 0.9372549020f, 1.0000f, - 0.5411764706f, 0.7960784314f, 0.9372549020f, 1.0000f, - 0.5372549020f, 0.7921568627f, 0.9333333333f, 1.0000f, - 0.5294117647f, 0.7882352941f, 0.9294117647f, 1.0000f, - 0.5254901961f, 0.7843137255f, 0.9294117647f, 1.0000f, - 0.5215686275f, 0.7803921569f, 0.9254901961f, 1.0000f, - 0.5137254902f, 0.7764705882f, 0.9254901961f, 1.0000f, - 0.5098039216f, 0.7725490196f, 0.9215686275f, 1.0000f, - 0.5058823529f, 0.7686274510f, 0.9176470588f, 1.0000f, - 0.4980392157f, 0.7647058824f, 0.9176470588f, 1.0000f, - 0.4941176471f, 0.7607843137f, 0.9137254902f, 1.0000f, - 0.4901960784f, 0.7568627451f, 0.9137254902f, 1.0000f, - 0.4823529412f, 0.7529411765f, 0.9098039216f, 1.0000f, - 0.4784313725f, 0.7490196078f, 0.9098039216f, 1.0000f, - 0.4745098039f, 0.7450980392f, 0.9058823529f, 1.0000f, - 0.4666666667f, 0.7411764706f, 0.9019607843f, 1.0000f, - 0.4627450980f, 0.7372549020f, 0.9019607843f, 1.0000f, - 0.4588235294f, 0.7333333333f, 0.8980392157f, 1.0000f, - 0.4509803922f, 0.7294117647f, 0.8980392157f, 1.0000f, - 0.4470588235f, 0.7254901961f, 0.8941176471f, 1.0000f, - 0.4431372549f, 0.7215686275f, 0.8901960784f, 1.0000f, - 0.4352941176f, 0.7176470588f, 0.8901960784f, 1.0000f, - 0.4313725490f, 0.7137254902f, 0.8862745098f, 1.0000f, - 0.4274509804f, 0.7098039216f, 0.8862745098f, 1.0000f, - 0.4196078431f, 0.7058823529f, 0.8823529412f, 1.0000f, - 0.4156862745f, 0.7019607843f, 0.8784313725f, 1.0000f, - 0.4117647059f, 0.6980392157f, 0.8784313725f, 1.0000f, - 0.4039215686f, 0.6901960784f, 0.8745098039f, 1.0000f, - 0.4000000000f, 0.6862745098f, 0.8745098039f, 1.0000f, - 0.3921568627f, 0.6823529412f, 0.8705882353f, 1.0000f, - 0.3882352941f, 0.6784313725f, 0.8666666667f, 1.0000f, - 0.3843137255f, 0.6745098039f, 0.8666666667f, 1.0000f, - 0.3764705882f, 0.6705882353f, 0.8627450980f, 1.0000f, - 0.3725490196f, 0.6666666667f, 0.8627450980f, 1.0000f, - 0.3686274510f, 0.6627450980f, 0.8588235294f, 1.0000f, - 0.3607843137f, 0.6588235294f, 0.8549019608f, 1.0000f, - 0.3568627451f, 0.6549019608f, 0.8549019608f, 1.0000f, - 0.3529411765f, 0.6509803922f, 0.8509803922f, 1.0000f, - 0.3411764706f, 0.6431372549f, 0.8470588235f, 1.0000f, - 0.3372549020f, 0.6392156863f, 0.8431372549f, 1.0000f, - 0.3333333333f, 0.6313725490f, 0.8392156863f, 1.0000f, - 0.3294117647f, 0.6274509804f, 0.8352941176f, 1.0000f, - 0.3254901961f, 0.6196078431f, 0.8313725490f, 1.0000f, - 0.3215686275f, 0.6156862745f, 0.8274509804f, 1.0000f, - 0.3176470588f, 0.6078431373f, 0.8235294118f, 1.0000f, - 0.3137254902f, 0.6039215686f, 0.8196078431f, 1.0000f, - 0.3098039216f, 0.5960784314f, 0.8156862745f, 1.0000f, - 0.3058823529f, 0.5921568627f, 0.8156862745f, 1.0000f, - 0.3019607843f, 0.5882352941f, 0.8117647059f, 1.0000f, - 0.2980392157f, 0.5803921569f, 0.8078431373f, 1.0000f, - 0.2941176471f, 0.5764705882f, 0.8039215686f, 1.0000f, - 0.2901960784f, 0.5686274510f, 0.8000000000f, 1.0000f, - 0.2862745098f, 0.5647058824f, 0.7960784314f, 1.0000f, - 0.2823529412f, 0.5568627451f, 0.7921568627f, 1.0000f, - 0.2784313725f, 0.5529411765f, 0.7882352941f, 1.0000f, - 0.2745098039f, 0.5450980392f, 0.7843137255f, 1.0000f, - 0.2705882353f, 0.5411764706f, 0.7803921569f, 1.0000f, - 0.2666666667f, 0.5372549020f, 0.7764705882f, 1.0000f, - 0.2627450980f, 0.5294117647f, 0.7725490196f, 1.0000f, - 0.2588235294f, 0.5254901961f, 0.7686274510f, 1.0000f, - 0.2549019608f, 0.5176470588f, 0.7647058824f, 1.0000f, - 0.2509803922f, 0.5137254902f, 0.7607843137f, 1.0000f, - 0.2470588235f, 0.5058823529f, 0.7568627451f, 1.0000f, - 0.2431372549f, 0.5019607843f, 0.7529411765f, 1.0000f, - 0.2431372549f, 0.4980392157f, 0.7529411765f, 1.0000f, - 0.2392156863f, 0.4901960784f, 0.7490196078f, 1.0000f, - 0.2352941176f, 0.4862745098f, 0.7450980392f, 1.0000f, - 0.2313725490f, 0.4784313725f, 0.7411764706f, 1.0000f, - 0.2274509804f, 0.4745098039f, 0.7372549020f, 1.0000f, - 0.2235294118f, 0.4666666667f, 0.7333333333f, 1.0000f, - 0.2196078431f, 0.4627450980f, 0.7294117647f, 1.0000f, - 0.2156862745f, 0.4549019608f, 0.7254901961f, 1.0000f, - 0.2117647059f, 0.4509803922f, 0.7215686275f, 1.0000f, - 0.2078431373f, 0.4470588235f, 0.7176470588f, 1.0000f, - 0.2039215686f, 0.4392156863f, 0.7137254902f, 1.0000f, - 0.2000000000f, 0.4352941176f, 0.7098039216f, 1.0000f, - 0.1960784314f, 0.4274509804f, 0.7058823529f, 1.0000f, - 0.1921568627f, 0.4235294118f, 0.7019607843f, 1.0000f, - 0.1882352941f, 0.4156862745f, 0.6980392157f, 1.0000f, - 0.1843137255f, 0.4117647059f, 0.6941176471f, 1.0000f, - 0.1803921569f, 0.4039215686f, 0.6901960784f, 1.0000f, - 0.1764705882f, 0.4000000000f, 0.6862745098f, 1.0000f, - 0.1725490196f, 0.3960784314f, 0.6862745098f, 1.0000f, - 0.1686274510f, 0.3882352941f, 0.6823529412f, 1.0000f, - 0.1647058824f, 0.3843137255f, 0.6784313725f, 1.0000f, - 0.1607843137f, 0.3764705882f, 0.6745098039f, 1.0000f, - 0.1568627451f, 0.3725490196f, 0.6705882353f, 1.0000f, - 0.1529411765f, 0.3647058824f, 0.6666666667f, 1.0000f, - 0.1411764706f, 0.3490196078f, 0.6549019608f, 1.0000f, - 0.1411764706f, 0.3450980392f, 0.6509803922f, 1.0000f, - 0.1411764706f, 0.3411764706f, 0.6431372549f, 1.0000f, - 0.1372549020f, 0.3372549020f, 0.6392156863f, 1.0000f, - 0.1372549020f, 0.3372549020f, 0.6352941176f, 1.0000f, - 0.1372549020f, 0.3333333333f, 0.6274509804f, 1.0000f, - 0.1372549020f, 0.3294117647f, 0.6235294118f, 1.0000f, - 0.1372549020f, 0.3254901961f, 0.6196078431f, 1.0000f, - 0.1372549020f, 0.3215686275f, 0.6117647059f, 1.0000f, - 0.1333333333f, 0.3176470588f, 0.6078431373f, 1.0000f, - 0.1333333333f, 0.3137254902f, 0.6039215686f, 1.0000f, - 0.1333333333f, 0.3098039216f, 0.5960784314f, 1.0000f, - 0.1333333333f, 0.3098039216f, 0.5921568627f, 1.0000f, - 0.1333333333f, 0.3058823529f, 0.5882352941f, 1.0000f, - 0.1333333333f, 0.3019607843f, 0.5803921569f, 1.0000f, - 0.1294117647f, 0.2980392157f, 0.5764705882f, 1.0000f, - 0.1294117647f, 0.2941176471f, 0.5725490196f, 1.0000f, - 0.1294117647f, 0.2901960784f, 0.5647058824f, 1.0000f, - 0.1294117647f, 0.2862745098f, 0.5607843137f, 1.0000f, - 0.1294117647f, 0.2862745098f, 0.5568627451f, 1.0000f, - 0.1294117647f, 0.2823529412f, 0.5490196078f, 1.0000f, - 0.1254901961f, 0.2784313725f, 0.5450980392f, 1.0000f, - 0.1254901961f, 0.2745098039f, 0.5411764706f, 1.0000f, - 0.1254901961f, 0.2705882353f, 0.5333333333f, 1.0000f, - 0.1254901961f, 0.2666666667f, 0.5294117647f, 1.0000f, - 0.1254901961f, 0.2627450980f, 0.5254901961f, 1.0000f, - 0.1254901961f, 0.2627450980f, 0.5215686275f, 1.0000f, - 0.1215686275f, 0.2588235294f, 0.5137254902f, 1.0000f, - 0.1215686275f, 0.2549019608f, 0.5098039216f, 1.0000f, - 0.1215686275f, 0.2509803922f, 0.5058823529f, 1.0000f, - 0.1215686275f, 0.2470588235f, 0.4980392157f, 1.0000f, - 0.1215686275f, 0.2431372549f, 0.4941176471f, 1.0000f, - 0.1176470588f, 0.2392156863f, 0.4901960784f, 1.0000f, - 0.1176470588f, 0.2352941176f, 0.4823529412f, 1.0000f, - 0.1176470588f, 0.2352941176f, 0.4784313725f, 1.0000f, - 0.1176470588f, 0.2313725490f, 0.4745098039f, 1.0000f, - 0.1176470588f, 0.2274509804f, 0.4666666667f, 1.0000f, - 0.1176470588f, 0.2235294118f, 0.4627450980f, 1.0000f, - 0.1137254902f, 0.2196078431f, 0.4588235294f, 1.0000f, - 0.1137254902f, 0.2156862745f, 0.4509803922f, 1.0000f, - 0.1137254902f, 0.2117647059f, 0.4470588235f, 1.0000f, - 0.1137254902f, 0.2117647059f, 0.4431372549f, 1.0000f, - 0.1137254902f, 0.2078431373f, 0.4352941176f, 1.0000f, - 0.1137254902f, 0.2039215686f, 0.4313725490f, 1.0000f, - 0.1098039216f, 0.2000000000f, 0.4274509804f, 1.0000f, - 0.1098039216f, 0.1960784314f, 0.4196078431f, 1.0000f, - 0.1098039216f, 0.1921568627f, 0.4156862745f, 1.0000f, - 0.1098039216f, 0.1882352941f, 0.4117647059f, 1.0000f, - 0.1098039216f, 0.1843137255f, 0.4039215686f, 1.0000f, - 0.1098039216f, 0.1843137255f, 0.4000000000f, 1.0000f, - 0.1058823529f, 0.1803921569f, 0.3960784314f, 1.0000f, - 0.1058823529f, 0.1725490196f, 0.3843137255f, 1.0000f, + 0.968627, 0.984314, 1.000000, 1.0, + 0.965552, 0.982345, 0.999016, 1.0, + 0.962476, 0.980377, 0.998032, 1.0, + 0.959400, 0.978408, 0.997047, 1.0, + 0.956324, 0.976440, 0.996063, 1.0, + 0.953249, 0.974471, 0.995079, 1.0, + 0.950173, 0.972503, 0.994095, 1.0, + 0.947097, 0.970534, 0.993110, 1.0, + 0.944022, 0.968566, 0.992126, 1.0, + 0.940946, 0.966597, 0.991142, 1.0, + 0.937870, 0.964629, 0.990158, 1.0, + 0.934794, 0.962661, 0.989173, 1.0, + 0.931719, 0.960692, 0.988189, 1.0, + 0.928643, 0.958724, 0.987205, 1.0, + 0.925567, 0.956755, 0.986221, 1.0, + 0.922491, 0.954787, 0.985236, 1.0, + 0.919416, 0.952818, 0.984252, 1.0, + 0.916340, 0.950850, 0.983268, 1.0, + 0.913264, 0.948881, 0.982284, 1.0, + 0.910188, 0.946913, 0.981300, 1.0, + 0.907113, 0.944944, 0.980315, 1.0, + 0.904037, 0.942976, 0.979331, 1.0, + 0.900961, 0.941007, 0.978347, 1.0, + 0.897885, 0.939039, 0.977363, 1.0, + 0.894810, 0.937070, 0.976378, 1.0, + 0.891734, 0.935102, 0.975394, 1.0, + 0.888658, 0.933133, 0.974410, 1.0, + 0.885582, 0.931165, 0.973426, 1.0, + 0.882507, 0.929196, 0.972441, 1.0, + 0.879431, 0.927228, 0.971457, 1.0, + 0.876355, 0.925260, 0.970473, 1.0, + 0.873280, 0.923291, 0.969489, 1.0, + 0.870219, 0.921323, 0.968504, 1.0, + 0.867266, 0.919354, 0.967520, 1.0, + 0.864314, 0.917386, 0.966536, 1.0, + 0.861361, 0.915417, 0.965552, 1.0, + 0.858408, 0.913449, 0.964567, 1.0, + 0.855456, 0.911480, 0.963583, 1.0, + 0.852503, 0.909512, 0.962599, 1.0, + 0.849550, 0.907543, 0.961615, 1.0, + 0.846597, 0.905575, 0.960631, 1.0, + 0.843645, 0.903606, 0.959646, 1.0, + 0.840692, 0.901638, 0.958662, 1.0, + 0.837739, 0.899669, 0.957678, 1.0, + 0.834787, 0.897701, 0.956694, 1.0, + 0.831834, 0.895732, 0.955709, 1.0, + 0.828881, 0.893764, 0.954725, 1.0, + 0.825928, 0.891795, 0.953741, 1.0, + 0.822976, 0.889827, 0.952757, 1.0, + 0.820023, 0.887859, 0.951772, 1.0, + 0.817070, 0.885890, 0.950788, 1.0, + 0.814118, 0.883922, 0.949804, 1.0, + 0.811165, 0.881953, 0.948820, 1.0, + 0.808212, 0.879985, 0.947835, 1.0, + 0.805260, 0.878016, 0.946851, 1.0, + 0.802307, 0.876048, 0.945867, 1.0, + 0.799354, 0.874079, 0.944883, 1.0, + 0.796401, 0.872111, 0.943899, 1.0, + 0.793449, 0.870142, 0.942914, 1.0, + 0.790496, 0.868174, 0.941930, 1.0, + 0.787543, 0.866205, 0.940946, 1.0, + 0.784591, 0.864237, 0.939962, 1.0, + 0.781638, 0.862268, 0.938977, 1.0, + 0.778685, 0.860300, 0.937993, 1.0, + 0.775240, 0.858301, 0.936824, 1.0, + 0.770319, 0.856209, 0.935102, 1.0, + 0.765398, 0.854118, 0.933379, 1.0, + 0.760477, 0.852026, 0.931657, 1.0, + 0.755556, 0.849935, 0.929935, 1.0, + 0.750634, 0.847843, 0.928212, 1.0, + 0.745713, 0.845752, 0.926490, 1.0, + 0.740792, 0.843660, 0.924767, 1.0, + 0.735871, 0.841569, 0.923045, 1.0, + 0.730950, 0.839477, 0.921323, 1.0, + 0.726028, 0.837386, 0.919600, 1.0, + 0.721107, 0.835294, 0.917878, 1.0, + 0.716186, 0.833203, 0.916155, 1.0, + 0.711265, 0.831111, 0.914433, 1.0, + 0.706344, 0.829020, 0.912711, 1.0, + 0.701423, 0.826928, 0.910988, 1.0, + 0.696501, 0.824837, 0.909266, 1.0, + 0.691580, 0.822745, 0.907543, 1.0, + 0.686659, 0.820654, 0.905821, 1.0, + 0.681738, 0.818562, 0.904098, 1.0, + 0.676817, 0.816471, 0.902376, 1.0, + 0.671895, 0.814379, 0.900654, 1.0, + 0.666974, 0.812288, 0.898931, 1.0, + 0.662053, 0.810196, 0.897209, 1.0, + 0.657132, 0.808105, 0.895486, 1.0, + 0.652211, 0.806013, 0.893764, 1.0, + 0.647290, 0.803922, 0.892042, 1.0, + 0.642368, 0.801830, 0.890319, 1.0, + 0.637447, 0.799739, 0.888597, 1.0, + 0.632526, 0.797647, 0.886874, 1.0, + 0.627605, 0.795556, 0.885152, 1.0, + 0.622684, 0.793464, 0.883429, 1.0, + 0.617255, 0.790865, 0.881845, 1.0, + 0.610980, 0.787420, 0.880492, 1.0, + 0.604706, 0.783975, 0.879139, 1.0, + 0.598431, 0.780531, 0.877785, 1.0, + 0.592157, 0.777086, 0.876432, 1.0, + 0.585882, 0.773641, 0.875079, 1.0, + 0.579608, 0.770196, 0.873725, 1.0, + 0.573333, 0.766751, 0.872372, 1.0, + 0.567059, 0.763306, 0.871019, 1.0, + 0.560784, 0.759862, 0.869666, 1.0, + 0.554510, 0.756417, 0.868312, 1.0, + 0.548235, 0.752972, 0.866959, 1.0, + 0.541961, 0.749527, 0.865606, 1.0, + 0.535686, 0.746082, 0.864252, 1.0, + 0.529412, 0.742637, 0.862899, 1.0, + 0.523137, 0.739193, 0.861546, 1.0, + 0.516863, 0.735748, 0.860192, 1.0, + 0.510588, 0.732303, 0.858839, 1.0, + 0.504314, 0.728858, 0.857486, 1.0, + 0.498039, 0.725413, 0.856132, 1.0, + 0.491765, 0.721968, 0.854779, 1.0, + 0.485490, 0.718524, 0.853426, 1.0, + 0.479216, 0.715079, 0.852072, 1.0, + 0.472941, 0.711634, 0.850719, 1.0, + 0.466667, 0.708189, 0.849366, 1.0, + 0.460392, 0.704744, 0.848012, 1.0, + 0.454118, 0.701300, 0.846659, 1.0, + 0.447843, 0.697855, 0.845306, 1.0, + 0.441569, 0.694410, 0.843952, 1.0, + 0.435294, 0.690965, 0.842599, 1.0, + 0.429020, 0.687520, 0.841246, 1.0, + 0.422745, 0.684075, 0.839892, 1.0, + 0.417086, 0.680631, 0.838231, 1.0, + 0.412042, 0.677186, 0.836263, 1.0, + 0.406997, 0.673741, 0.834295, 1.0, + 0.401953, 0.670296, 0.832326, 1.0, + 0.396909, 0.666851, 0.830358, 1.0, + 0.391865, 0.663406, 0.828389, 1.0, + 0.386820, 0.659962, 0.826421, 1.0, + 0.381776, 0.656517, 0.824452, 1.0, + 0.376732, 0.653072, 0.822484, 1.0, + 0.371688, 0.649627, 0.820515, 1.0, + 0.366644, 0.646182, 0.818547, 1.0, + 0.361599, 0.642737, 0.816578, 1.0, + 0.356555, 0.639293, 0.814610, 1.0, + 0.351511, 0.635848, 0.812641, 1.0, + 0.346467, 0.632403, 0.810673, 1.0, + 0.341423, 0.628958, 0.808704, 1.0, + 0.336378, 0.625513, 0.806736, 1.0, + 0.331334, 0.622068, 0.804767, 1.0, + 0.326290, 0.618624, 0.802799, 1.0, + 0.321246, 0.615179, 0.800830, 1.0, + 0.316201, 0.611734, 0.798862, 1.0, + 0.311157, 0.608289, 0.796894, 1.0, + 0.306113, 0.604844, 0.794925, 1.0, + 0.301069, 0.601399, 0.792957, 1.0, + 0.296025, 0.597955, 0.790988, 1.0, + 0.290980, 0.594510, 0.789020, 1.0, + 0.285936, 0.591065, 0.787051, 1.0, + 0.280892, 0.587620, 0.785083, 1.0, + 0.275848, 0.584175, 0.783114, 1.0, + 0.270804, 0.580731, 0.781146, 1.0, + 0.265759, 0.577286, 0.779177, 1.0, + 0.260715, 0.573841, 0.777209, 1.0, + 0.256286, 0.570012, 0.775163, 1.0, + 0.252226, 0.565952, 0.773072, 1.0, + 0.248166, 0.561892, 0.770980, 1.0, + 0.244106, 0.557832, 0.768889, 1.0, + 0.240046, 0.553772, 0.766797, 1.0, + 0.235986, 0.549712, 0.764706, 1.0, + 0.231926, 0.545652, 0.762614, 1.0, + 0.227866, 0.541592, 0.760523, 1.0, + 0.223806, 0.537532, 0.758431, 1.0, + 0.219746, 0.533472, 0.756340, 1.0, + 0.215686, 0.529412, 0.754248, 1.0, + 0.211626, 0.525352, 0.752157, 1.0, + 0.207566, 0.521292, 0.750065, 1.0, + 0.203506, 0.517232, 0.747974, 1.0, + 0.199446, 0.513172, 0.745882, 1.0, + 0.195386, 0.509112, 0.743791, 1.0, + 0.191326, 0.505052, 0.741699, 1.0, + 0.187266, 0.500992, 0.739608, 1.0, + 0.183206, 0.496932, 0.737516, 1.0, + 0.179146, 0.492872, 0.735425, 1.0, + 0.175087, 0.488812, 0.733333, 1.0, + 0.171027, 0.484752, 0.731242, 1.0, + 0.166967, 0.480692, 0.729150, 1.0, + 0.162907, 0.476632, 0.727059, 1.0, + 0.158847, 0.472572, 0.724967, 1.0, + 0.154787, 0.468512, 0.722876, 1.0, + 0.150727, 0.464452, 0.720784, 1.0, + 0.146667, 0.460392, 0.718693, 1.0, + 0.142607, 0.456332, 0.716601, 1.0, + 0.138547, 0.452272, 0.714510, 1.0, + 0.134487, 0.448212, 0.712418, 1.0, + 0.130427, 0.444152, 0.710327, 1.0, + 0.127105, 0.440185, 0.707497, 1.0, + 0.124029, 0.436248, 0.704421, 1.0, + 0.120953, 0.432311, 0.701346, 1.0, + 0.117878, 0.428374, 0.698270, 1.0, + 0.114802, 0.424437, 0.695194, 1.0, + 0.111726, 0.420500, 0.692118, 1.0, + 0.108651, 0.416563, 0.689043, 1.0, + 0.105575, 0.412626, 0.685967, 1.0, + 0.102499, 0.408689, 0.682891, 1.0, + 0.099423, 0.404752, 0.679815, 1.0, + 0.096348, 0.400815, 0.676740, 1.0, + 0.093272, 0.396878, 0.673664, 1.0, + 0.090196, 0.392941, 0.670588, 1.0, + 0.087120, 0.389004, 0.667513, 1.0, + 0.084045, 0.385067, 0.664437, 1.0, + 0.080969, 0.381130, 0.661361, 1.0, + 0.077893, 0.377193, 0.658285, 1.0, + 0.074817, 0.373256, 0.655210, 1.0, + 0.071742, 0.369320, 0.652134, 1.0, + 0.068666, 0.365383, 0.649058, 1.0, + 0.065590, 0.361446, 0.645982, 1.0, + 0.062514, 0.357509, 0.642907, 1.0, + 0.059439, 0.353572, 0.639831, 1.0, + 0.056363, 0.349635, 0.636755, 1.0, + 0.053287, 0.345698, 0.633679, 1.0, + 0.050211, 0.341761, 0.630604, 1.0, + 0.047136, 0.337824, 0.627528, 1.0, + 0.044060, 0.333887, 0.624452, 1.0, + 0.040984, 0.329950, 0.621376, 1.0, + 0.037908, 0.326013, 0.618301, 1.0, + 0.034833, 0.322076, 0.615225, 1.0, + 0.031757, 0.318139, 0.612149, 1.0, + 0.031373, 0.314095, 0.606490, 1.0, + 0.031373, 0.310035, 0.600461, 1.0, + 0.031373, 0.305975, 0.594433, 1.0, + 0.031373, 0.301915, 0.588404, 1.0, + 0.031373, 0.297855, 0.582376, 1.0, + 0.031373, 0.293795, 0.576348, 1.0, + 0.031373, 0.289735, 0.570319, 1.0, + 0.031373, 0.285675, 0.564291, 1.0, + 0.031373, 0.281615, 0.558262, 1.0, + 0.031373, 0.277555, 0.552234, 1.0, + 0.031373, 0.273495, 0.546205, 1.0, + 0.031373, 0.269435, 0.540177, 1.0, + 0.031373, 0.265375, 0.534148, 1.0, + 0.031373, 0.261315, 0.528120, 1.0, + 0.031373, 0.257255, 0.522092, 1.0, + 0.031373, 0.253195, 0.516063, 1.0, + 0.031373, 0.249135, 0.510035, 1.0, + 0.031373, 0.245075, 0.504006, 1.0, + 0.031373, 0.241015, 0.497978, 1.0, + 0.031373, 0.236955, 0.491949, 1.0, + 0.031373, 0.232895, 0.485921, 1.0, + 0.031373, 0.228835, 0.479892, 1.0, + 0.031373, 0.224775, 0.473864, 1.0, + 0.031373, 0.220715, 0.467835, 1.0, + 0.031373, 0.216655, 0.461807, 1.0, + 0.031373, 0.212595, 0.455779, 1.0, + 0.031373, 0.208535, 0.449750, 1.0, + 0.031373, 0.204475, 0.443722, 1.0, + 0.031373, 0.200415, 0.437693, 1.0, + 0.031373, 0.196355, 0.431665, 1.0, + 0.031373, 0.192295, 0.425636, 1.0, + 0.031373, 0.188235, 0.419608, 1.0, }; /// Next four colormaps: inferno, magma, plasma and viridis are matplotlib diff --git a/src/backend/opengl/colormap_impl.cpp b/src/backend/opengl/colormap_impl.cpp index 1953874e..c67bc2f8 100644 --- a/src/backend/opengl/colormap_impl.cpp +++ b/src/backend/opengl/colormap_impl.cpp @@ -22,14 +22,14 @@ namespace opengl { colormap_impl::colormap_impl() - :mDefaultMapBuffer(0), mSpecMapBuffer(0), mColorsMapBuffer(0), + :mDefaultMapBuffer(0), mSpecMapBuffer(0), mRainbowMapBuffer(0), mRedMapBuffer(0), mMoodMapBuffer(0), mHeatMapBuffer(0), mBlueMapBuffer(0) { size_t channel_bytes = sizeof(float)*4; /* 4 is for 4 channels */ mDefMapLen = (GLuint)(sizeof(cmap_default) / channel_bytes); mSpecMapLen = (GLuint)(sizeof(cmap_spectrum) / channel_bytes); - mColsMapLen = (GLuint)(sizeof(cmap_colors) / channel_bytes); + mRainbowMapLen = (GLuint)(sizeof(cmap_rainbow) / channel_bytes); mRedMapLen = (GLuint)(sizeof(cmap_red) / channel_bytes); mMoodMapLen = (GLuint)(sizeof(cmap_mood) / channel_bytes); mHeatMapLen = (GLuint)(sizeof(cmap_heat) / channel_bytes); @@ -41,7 +41,7 @@ colormap_impl::colormap_impl() mDefaultMapBuffer = CREATE_UNIFORM_BUFFER(cmap_default, mDefMapLen); mSpecMapBuffer = CREATE_UNIFORM_BUFFER(cmap_spectrum, mSpecMapLen); - mColorsMapBuffer = CREATE_UNIFORM_BUFFER(cmap_colors, mColsMapLen); + mRainbowMapBuffer = CREATE_UNIFORM_BUFFER(cmap_rainbow, mRainbowMapLen); mRedMapBuffer = CREATE_UNIFORM_BUFFER(cmap_red, mRedMapLen); mMoodMapBuffer = CREATE_UNIFORM_BUFFER(cmap_mood, mMoodMapLen); mHeatMapBuffer = CREATE_UNIFORM_BUFFER(cmap_heat, mHeatMapLen); @@ -56,7 +56,7 @@ colormap_impl::~colormap_impl() { glDeleteBuffers(1, &mDefaultMapBuffer); glDeleteBuffers(1, &mSpecMapBuffer); - glDeleteBuffers(1, &mColorsMapBuffer); + glDeleteBuffers(1, &mRainbowMapBuffer); glDeleteBuffers(1, &mRedMapBuffer); glDeleteBuffers(1, &mMoodMapBuffer); glDeleteBuffers(1, &mHeatMapBuffer); @@ -72,7 +72,7 @@ GLuint colormap_impl::cmapUniformBufferId(forge::ColorMap cmap) const switch(cmap) { case FG_COLOR_MAP_DEFAULT : return mDefaultMapBuffer; case FG_COLOR_MAP_SPECTRUM: return mSpecMapBuffer; - case FG_COLOR_MAP_COLORS : return mColorsMapBuffer; + case FG_COLOR_MAP_RAINBOW : return mRainbowMapBuffer; case FG_COLOR_MAP_RED : return mRedMapBuffer; case FG_COLOR_MAP_MOOD : return mMoodMapBuffer; case FG_COLOR_MAP_HEAT : return mHeatMapBuffer; @@ -89,7 +89,7 @@ GLuint colormap_impl::cmapLength(forge::ColorMap cmap) const switch(cmap) { case FG_COLOR_MAP_DEFAULT : return mDefMapLen; case FG_COLOR_MAP_SPECTRUM: return mSpecMapLen; - case FG_COLOR_MAP_COLORS : return mColsMapLen; + case FG_COLOR_MAP_RAINBOW : return mRainbowMapLen; case FG_COLOR_MAP_RED : return mRedMapLen; case FG_COLOR_MAP_MOOD : return mMoodMapLen; case FG_COLOR_MAP_HEAT : return mHeatMapLen; diff --git a/src/backend/opengl/colormap_impl.hpp b/src/backend/opengl/colormap_impl.hpp index b546d164..1b60d13f 100644 --- a/src/backend/opengl/colormap_impl.hpp +++ b/src/backend/opengl/colormap_impl.hpp @@ -34,7 +34,7 @@ class colormap_impl { * size */ gl::GLuint mDefaultMapBuffer; gl::GLuint mSpecMapBuffer; - gl::GLuint mColorsMapBuffer; + gl::GLuint mRainbowMapBuffer; gl::GLuint mRedMapBuffer; gl::GLuint mMoodMapBuffer; gl::GLuint mHeatMapBuffer; @@ -47,7 +47,7 @@ class colormap_impl { /* Current color map lengths */ gl::GLuint mDefMapLen; gl::GLuint mSpecMapLen; - gl::GLuint mColsMapLen; + gl::GLuint mRainbowMapLen; gl::GLuint mRedMapLen; gl::GLuint mMoodMapLen; gl::GLuint mHeatMapLen; From f41f04daf3af5ba100d2799c1e4fd2a65a2327c4 Mon Sep 17 00:00:00 2001 From: pradeep Date: Sun, 20 Nov 2016 19:51:07 +0530 Subject: [PATCH 4/5] Correct color map documentation --- docs/images/gfx_palette.png | Bin 84784 -> 0 bytes include/fg/defines.h | 2 -- 2 files changed, 2 deletions(-) delete mode 100644 docs/images/gfx_palette.png diff --git a/docs/images/gfx_palette.png b/docs/images/gfx_palette.png deleted file mode 100644 index 3880216dd8fdd7ead17e6807dbc3a81df2c6e364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84784 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%0AZ7|%DL0@gOI18WcPSG~7$otJ)>KaPRK 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 T$^8F<052&qInf$n{eb@gTY#=s diff --git a/include/fg/defines.h b/include/fg/defines.h index 68760cfb..e6905d82 100644 --- a/include/fg/defines.h +++ b/include/fg/defines.h @@ -121,8 +121,6 @@ typedef enum { /** Color maps - - \image html gfx_palette.png */ typedef enum { FG_COLOR_MAP_DEFAULT = 0, ///< Default [0-255] grayscale colormap From 98eeac827e2ed8741b05208e0577324f36d7f4b1 Mon Sep 17 00:00:00 2001 From: pradeep Date: Sun, 20 Nov 2016 19:54:33 +0530 Subject: [PATCH 5/5] fix warnings in colormap_impl class --- src/backend/opengl/colormap_impl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/opengl/colormap_impl.cpp b/src/backend/opengl/colormap_impl.cpp index c67bc2f8..f92a1bd7 100644 --- a/src/backend/opengl/colormap_impl.cpp +++ b/src/backend/opengl/colormap_impl.cpp @@ -70,7 +70,6 @@ colormap_impl::~colormap_impl() GLuint colormap_impl::cmapUniformBufferId(forge::ColorMap cmap) const { switch(cmap) { - case FG_COLOR_MAP_DEFAULT : return mDefaultMapBuffer; case FG_COLOR_MAP_SPECTRUM: return mSpecMapBuffer; case FG_COLOR_MAP_RAINBOW : return mRainbowMapBuffer; case FG_COLOR_MAP_RED : return mRedMapBuffer; @@ -81,13 +80,13 @@ GLuint colormap_impl::cmapUniformBufferId(forge::ColorMap cmap) const case FG_COLOR_MAP_MAGMA : return mMagmaMapBuffer; case FG_COLOR_MAP_PLASMA : return mPlasmaMapBuffer; case FG_COLOR_MAP_VIRIDIS : return mViridisMapBuffer; + default: return mDefaultMapBuffer; } } GLuint colormap_impl::cmapLength(forge::ColorMap cmap) const { switch(cmap) { - case FG_COLOR_MAP_DEFAULT : return mDefMapLen; case FG_COLOR_MAP_SPECTRUM: return mSpecMapLen; case FG_COLOR_MAP_RAINBOW : return mRainbowMapLen; case FG_COLOR_MAP_RED : return mRedMapLen; @@ -98,6 +97,7 @@ GLuint colormap_impl::cmapLength(forge::ColorMap cmap) const case FG_COLOR_MAP_MAGMA : return mMagmaMapLen; case FG_COLOR_MAP_PLASMA : return mPlasmaMapLen; case FG_COLOR_MAP_VIRIDIS : return mViridisMapLen; + default: return mDefMapLen; } }