void seismic (double cmap[NCMAP][3])
{
static double basemap[33][3] = {
{0.000000, 0.000000, 0.300000},
{0.000000, 0.000000, 0.387843},
{0.000000, 0.000000, 0.475686},
{0.000000, 0.000000, 0.563529},
{0.000000, 0.000000, 0.651373},
{0.000000, 0.000000, 0.739216},
{0.000000, 0.000000, 0.827059},
{0.000000, 0.000000, 0.914902},
{0.003922, 0.003922, 1.000000},
{0.129412, 0.129412, 1.000000},
{0.254902, 0.254902, 1.000000},
{0.380392, 0.380392, 1.000000},
{0.505882, 0.505882, 1.000000},
{0.631373, 0.631373, 1.000000},
{0.756863, 0.756863, 1.000000},
{0.882353, 0.882353, 1.000000},
{1.000000, 0.992157, 0.992157},
{1.000000, 0.866667, 0.866667},
{1.000000, 0.741176, 0.741176},
{1.000000, 0.615686, 0.615686},
{1.000000, 0.490196, 0.490196},
{1.000000, 0.364706, 0.364706},
{1.000000, 0.239216, 0.239216},
{1.000000, 0.113725, 0.113725},
{0.994118, 0.000000, 0.000000},
{0.931373, 0.000000, 0.000000},
{0.868627, 0.000000, 0.000000},
{0.805882, 0.000000, 0.000000},
{0.743137, 0.000000, 0.000000},
{0.680392, 0.000000, 0.000000},
{0.617647, 0.000000, 0.000000},
{0.554902, 0.000000, 0.000000},
{0.500000, 0.000000, 0.000000},
};
for (int i = 0; i < NCMAP; i++) {
double x = i*(32 - 1e-10)/(NCMAP - 1);
int j = x; x -= j;
for (int k = 0; k < 3; k++)
cmap[i][k] = (1. - x)*basemap[j][k] + x*basemap[j+1][k];
}
}
void black_body (double cmap[NCMAP][3])
{
static double basemap[33][3] = {
{0.000000, 0.000000, 0.000000},
{0.085791, 0.030987, 0.017333},
{0.133175, 0.058869, 0.034680},
{0.180002, 0.073069, 0.051539},
{0.229816, 0.084060, 0.064781},
{0.281398, 0.093913, 0.075409},
{0.334522, 0.102639, 0.084245},
{0.388958, 0.110254, 0.092799},
{0.444612, 0.116733, 0.101403},
{0.501422, 0.122026, 0.110058},
{0.559331, 0.126068, 0.118768},
{0.618286, 0.128768, 0.127532},
{0.678238, 0.130007, 0.136351},
{0.712850, 0.181722, 0.130817},
{0.743632, 0.232650, 0.120992},
{0.774325, 0.279316, 0.108090},
{0.804936, 0.323627, 0.090796},
{0.835473, 0.366525, 0.066236},
{0.865943, 0.408541, 0.026029},
{0.876634, 0.464020, 0.017307},
{0.883455, 0.518984, 0.014963},
{0.889052, 0.572164, 0.013500},
{0.893376, 0.624109, 0.013033},
{0.896370, 0.675180, 0.013680},
{0.897974, 0.725631, 0.015556},
{0.898117, 0.775643, 0.018777},
{0.896720, 0.825351, 0.023459},
{0.927670, 0.859991, 0.319086},
{0.956159, 0.893933, 0.503317},
{0.978271, 0.928565, 0.671307},
{0.993196, 0.963913, 0.835609},
{1.000000, 1.000000, 1.000000},
};
for (int i = 0; i < NCMAP; i++) {
double x = i*(31 - 1e-10)/(NCMAP - 1);
int j = x; x -= j;
for (int k = 0; k < 3; k++)
cmap[i][k] = (1. - x)*basemap[j][k] + x*basemap[j+1][k];
}
}
void RdBu (double cmap[NCMAP][3])
{
static double basemap[33][3] = {
{0.403922, 0.000000, 0.121569},
{0.496194, 0.029527, 0.136332},
{0.588466, 0.059054, 0.151096},
{0.680738, 0.088581, 0.165859},
{0.734025, 0.166090, 0.202614},
{0.778316, 0.254671, 0.244444},
{0.822607, 0.343253, 0.286275},
{0.862284, 0.429527, 0.342714},
{0.899193, 0.514418, 0.407920},
{0.936101, 0.599308, 0.473126},
{0.961707, 0.676125, 0.546943},
{0.972780, 0.742561, 0.631834},
{0.983852, 0.808997, 0.716724},
{0.990311, 0.867436, 0.795156},
{0.982930, 0.901884, 0.854210},
{0.975548, 0.936332, 0.913264},
{0.965705, 0.967243, 0.968089},
{0.918954, 0.945098, 0.959477},
{0.872203, 0.922953, 0.950865},
{0.825452, 0.900807, 0.942253},
{0.751788, 0.863591, 0.921799},
{0.674279, 0.824221, 0.899654},
{0.596770, 0.784852, 0.877509},
{0.505729, 0.730258, 0.847751},
{0.408535, 0.668743, 0.814533},
{0.311342, 0.607228, 0.781315},
{0.241830, 0.548789, 0.750557},
{0.200000, 0.493426, 0.722261},
{0.158170, 0.438062, 0.693964},
{0.118647, 0.379239, 0.645675},
{0.084198, 0.312803, 0.553403},
{0.049750, 0.246367, 0.461130},
{0.019608, 0.188235, 0.380392},
};
for (int i = 0; i < NCMAP; i++) {
double x = (NCMAP - 1 - i)*(32 - 1e-10)/(NCMAP - 1);
int j = x; x -= j;
for (int k = 0; k < 3; k++)
cmap[i][k] = (1. - x)*basemap[j][k] + x*basemap[j+1][k];
}
}