| package org.codemap.mapview;
import static java.lang.Math.min;
import static java.lang.Math.round;
import static org.codemap.util.ArrayUtil.last;
import org.codemap.util.MColor;
/**
* Color ranges from: http://www.jjguy.com/heatmap/
* @author deif
*/
public class HeatMapColors {
private static int[][] heat_classic = {
{255, 224, 224},
{255, 209, 209},
{255, 193, 193},
{255, 176, 176},
{255, 159, 159},
{255, 142, 142},
{255, 126, 126},
{255, 110, 110},
{255, 94, 94},
{255, 81, 81},
{255, 67, 67},
{255, 56, 56},
{255, 46, 46},
{255, 37, 37},
{255, 29, 29},
{255, 23, 23},
{255, 18, 18},
{255, 14, 14},
{255, 11, 11},
{255, 8, 8},
{255, 6, 6},
{255, 5, 5},
{255, 3, 3},
{255, 2, 2},
{255, 2, 2},
{255, 1, 1},
{255, 1, 1},
{255, 0, 0},
{255, 0, 0},
{255, 0, 0},
{255, 0, 0},
{255, 0, 0},
{255, 0, 0},
{255, 0, 0},
{255, 0, 0},
{255, 1, 0},
{255, 4, 0},
{255, 6, 0},
{255, 10, 0},
{255, 14, 0},
{255, 18, 0},
{255, 22, 0},
{255, 26, 0},
{255, 31, 0},
{255, 36, 0},
{255, 41, 0},
{255, 45, 0},
{255, 51, 0},
{255, 57, 0},
{255, 62, 0},
{255, 68, 0},
{255, 74, 0},
{255, 81, 0},
{255, 86, 0},
{255, 93, 0},
{255, 99, 0},
{255, 105, 0},
{255, 111, 0},
{255, 118, 0},
{255, 124, 0},
{255, 131, 0},
{255, 137, 0},
{255, 144, 0},
{255, 150, 0},
{255, 156, 0},
{255, 163, 0},
{255, 169, 0},
{255, 175, 0},
{255, 181, 0},
{255, 187, 0},
{255, 192, 0},
{255, 198, 0},
{255, 203, 0},
{255, 208, 0},
{255, 213, 0},
{255, 218, 0},
{255, 222, 0},
{255, 227, 0},
{255, 232, 0},
{255, 235, 0},
{255, 238, 0},
{255, 242, 0},
{255, 245, 0},
{255, 247, 0},
{255, 250, 0},
{255, 251, 0},
{253, 252, 0},
{250, 252, 1},
{248, 252, 2},
{244, 252, 2},
{241, 252, 3},
{237, 252, 3},
{233, 252, 3},
{229, 252, 4},
{225, 252, 4},
{220, 252, 5},
{216, 252, 5},
{211, 252, 6},
{206, 252, 7},
{201, 252, 7},
{197, 252, 8},
{191, 251, 8},
{185, 249, 9},
{180, 247, 9},
{174, 246, 10},
{169, 244, 11},
{164, 242, 11},
{158, 240, 12},
{151, 238, 13},
{146, 236, 14},
{140, 233, 14},
{134, 231, 15},
{128, 228, 16},
{122, 226, 17},
{116, 223, 18},
{110, 221, 19},
{105, 218, 20},
{99, 216, 21},
{93, 214, 22},
{88, 211, 23},
{82, 209, 24},
{76, 207, 25},
{71, 204, 26},
{66, 202, 28},
{60, 200, 30},
{55, 198, 31},
{50, 196, 33},
{45, 194, 34},
{40, 191, 35},
{36, 190, 37},
{31, 188, 39},
{27, 187, 40},
{23, 185, 43},
{19, 184, 44},
{15, 183, 46},
{12, 182, 48},
{9, 181, 51},
{6, 181, 53},
{3, 180, 55},
{1, 180, 57},
{0, 180, 60},
{0, 180, 62},
{0, 180, 65},
{0, 181, 68},
{0, 182, 70},
{0, 182, 74},
{0, 183, 77},
{0, 184, 80},
{0, 184, 84},
{0, 186, 88},
{0, 187, 92},
{0, 188, 95},
{0, 190, 99},
{0, 191, 104},
{0, 193, 108},
{0, 194, 112},
{0, 196, 116},
{0, 198, 120},
{0, 200, 125},
{0, 201, 129},
{0, 203, 134},
{0, 205, 138},
{0, 207, 143},
{0, 209, 147},
{0, 211, 151},
{0, 213, 156},
{0, 215, 160},
{0, 216, 165},
{0, 219, 171},
{0, 222, 178},
{0, 224, 184},
{0, 227, 190},
{0, 229, 197},
{0, 231, 203},
{0, 233, 209},
{0, 234, 214},
{0, 234, 220},
{0, 234, 225},
{0, 234, 230},
{0, 234, 234},
{0, 234, 238},
{0, 234, 242},
{0, 234, 246},
{0, 234, 248},
{0, 234, 251},
{0, 234, 254},
{0, 234, 255},
{0, 232, 255},
{0, 228, 255},
{0, 224, 255},
{0, 219, 255},
{0, 214, 254},
{0, 208, 252},
{0, 202, 250},
{0, 195, 247},
{0, 188, 244},
{0, 180, 240},
{0, 173, 236},
{0, 164, 232},
{0, 156, 228},
{0, 147, 222},
{0, 139, 218},
{0, 130, 213},
{0, 122, 208},
{0, 117, 205},
{0, 112, 203},
{0, 107, 199},
{0, 99, 196},
{0, 93, 193},
{0, 86, 189},
{0, 78, 184},
{0, 71, 180},
{0, 65, 175},
{0, 58, 171},
{0, 52, 167},
{0, 46, 162},
{0, 40, 157},
{0, 35, 152},
{0, 30, 147},
{0, 26, 142},
{0, 22, 136},
{0, 18, 131},
{0, 15, 126},
{0, 12, 120},
{0, 9, 115},
{1, 8, 110},
{1, 6, 106},
{1, 5, 101},
{2, 4, 97},
{3, 4, 92},
{4, 5, 89},
{5, 5, 85},
{6, 6, 82},
{7, 7, 79},
{8, 8, 77},
{10, 10, 77},
{12, 12, 77},
{14, 14, 76},
{16, 16, 74},
{19, 19, 73},
{21, 21, 72},
{24, 24, 71},
{26, 26, 69},
{29, 29, 70},
{32, 32, 69},
{35, 35, 68},
{37, 37, 67},
{40, 40, 67},
{42, 42, 65},
{44, 44, 65},
{46, 46, 64},
{48, 48, 63},
{49, 50, 62},
{51, 51, 61},
{53, 52, 61},
};
private static int[][] pgaitch = {
// omit the first few colors as they look too white
// {255, 254, 165},
// {255, 254, 164},
// {255, 253, 163},
// {255, 253, 162},
// {255, 253, 161},
// {255, 252, 160},
// {255, 252, 159},
// {255, 252, 157},
// {255, 251, 156},
// {255, 251, 155},
// {255, 251, 153},
// {255, 250, 152},
// {255, 250, 150},
// {255, 250, 149},
// {255, 249, 148},
// {255, 249, 146},
// {255, 249, 145},
// {255, 248, 143},
// {255, 248, 141},
// {255, 248, 139},
// {255, 247, 138},
// {255, 247, 136},
// {255, 246, 134},
// {255, 246, 132},
// {255, 246, 130},
// {255, 245, 129},
// {255, 245, 127},
// {255, 245, 125},
// {255, 244, 123},
// {255, 244, 121},
// {255, 243, 119},
// {255, 243, 117},
// {255, 242, 114},
// {255, 242, 112},
// {255, 241, 111},
// {255, 241, 109},
// {255, 240, 107},
// {255, 240, 105},
// {255, 239, 102},
// {255, 239, 100},
// {255, 238, 99},
// {255, 238, 97},
// {255, 237, 95},
// {255, 237, 92},
// {255, 236, 90},
// {255, 237, 89},
// {255, 236, 87},
// {255, 235, 84},
// {255, 235, 82},
// {255, 234, 80},
// {255, 233, 79},
// {255, 233, 77},
// {255, 232, 74},
// {255, 231, 72},
// {255, 230, 70},
// {255, 230, 69},
// {255, 229, 67},
// {255, 228, 65},
// {255, 227, 63},
// {255, 226, 61},
// {255, 225, 60},
{255, 225, 58},
{255, 224, 56},
{255, 223, 54},
{255, 222, 52},
{255, 222, 51},
{255, 221, 49},
{255, 220, 47},
{255, 219, 46},
{255, 218, 44},
{255, 216, 43},
{255, 215, 42},
{255, 214, 41},
{255, 213, 39},
{255, 212, 39},
{255, 211, 37},
{255, 209, 36},
{255, 208, 34},
{255, 208, 33},
{255, 206, 33},
{255, 205, 32},
{255, 204, 30},
{255, 202, 29},
{255, 201, 29},
{255, 199, 28},
{254, 199, 28},
{254, 199, 27},
{253, 198, 27},
{252, 197, 27},
{251, 196, 27},
{250, 195, 26},
{249, 195, 26},
{248, 194, 26},
{248, 193, 26},
{247, 192, 26},
{246, 192, 25},
{245, 191, 26},
{244, 190, 26},
{243, 189, 25},
{241, 188, 25},
{240, 187, 25},
{239, 187, 25},
{238, 186, 25},
{236, 185, 25},
{236, 184, 26},
{235, 183, 26},
{233, 182, 25},
{232, 181, 25},
{230, 181, 26},
{229, 180, 26},
{228, 179, 25},
{227, 178, 25},
{226, 177, 26},
{224, 176, 26},
{222, 176, 25},
{221, 175, 25},
{220, 173, 26},
{219, 172, 26},
{217, 171, 25},
{215, 170, 25},
{214, 170, 26},
{212, 169, 26},
{211, 167, 25},
{209, 166, 25},
{208, 166, 26},
{206, 165, 26},
{204, 163, 26},
{203, 162, 26},
{202, 161, 25},
{200, 161, 26},
{198, 159, 26},
{197, 158, 26},
{195, 157, 26},
{193, 157, 27},
{192, 155, 27},
{190, 154, 27},
{189, 153, 27},
{187, 152, 28},
{186, 151, 28},
{184, 150, 28},
{182, 149, 28},
{181, 148, 29},
{179, 147, 29},
{177, 146, 29},
{175, 144, 29},
{174, 144, 30},
{172, 142, 30},
{170, 141, 30},
{169, 140, 30},
{167, 139, 31},
{165, 138, 31},
{164, 137, 31},
{162, 136, 31},
{161, 135, 32},
{159, 134, 32},
{157, 133, 32},
{154, 132, 32},
{153, 131, 33},
{151, 130, 33},
{150, 129, 33},
{148, 127, 33},
{147, 127, 34},
{145, 126, 34},
{143, 124, 34},
{141, 123, 34},
{140, 122, 35},
{139, 121, 35},
{137, 120, 35},
{135, 119, 35},
{134, 118, 36},
{132, 117, 36},
{130, 116, 36},
{129, 115, 36},
{127, 113, 36},
{126, 113, 37},
{124, 112, 37},
{122, 111, 37},
{121, 110, 37},
{120, 109, 38},
{118, 108, 38},
{116, 107, 38},
{115, 105, 38},
{113, 104, 38},
{112, 104, 39},
{110, 103, 39},
{108, 102, 39},
{107, 101, 39},
{106, 100, 40},
{104, 99, 40},
{102, 98, 40},
{101, 96, 40},
{99, 96, 40},
{99, 96, 41},
{97, 94, 41},
{96, 93, 41},
{94, 92, 41},
{92, 91, 41},
{92, 90, 42},
{90, 90, 42},
{89, 89, 42},
{87, 87, 42},
{86, 86, 42},
{85, 86, 43},
{84, 85, 43},
{83, 84, 43},
{81, 83, 43},
{80, 82, 43},
{80, 82, 44},
{78, 80, 44},
{77, 80, 44},
{75, 79, 44},
{75, 78, 44},
{74, 78, 45},
{73, 76, 45},
{71, 75, 45},
{71, 75, 45},
{70, 74, 45},
{69, 74, 46},
{68, 73, 46},
{67, 72, 46},
{66, 71, 46},
{65, 71, 46},
{64, 69, 46},
{64, 69, 47},
{63, 68, 47},
{62, 67, 47},
{61, 67, 47},
{60, 66, 47},
{59, 65, 47},
{59, 65, 48},
{59, 64, 48},
{58, 63, 48},
{57, 63, 48},
{56, 62, 48},
{56, 62, 48},
{55, 61, 48},
{55, 61, 49},
{55, 60, 49},
{55, 60, 49},
{54, 59, 49},
{53, 58, 49},
{53, 57, 49},
{52, 57, 49},
{52, 57, 50},
{52, 56, 50},
{52, 56, 50},
{52, 56, 50},
{52, 55, 50},
{51, 54, 50},
{51, 53, 50},
{51, 53, 50},
{51, 52, 50},
{51, 53, 51},
{51, 53, 51},
{51, 52, 51},
{51, 52, 51},
};
private float step;
private double current;
public HeatMapColors(int steps) {
step = (float) getColorArray().length / (float) steps;
current = 0.0;
}
private int[][] getColorArray() {
return pgaitch;
}
public MColor colder() {
int index = min(getColorArray().length, (int) round(current));
current += step;
return makeColor(getColorArray()[index]);
}
private MColor makeColor(int[] color) {
return new MColor(color[0], color[1], color[2]);
}
public MColor getColdest() {
return makeColor(last(getColorArray()));
}
}
|