Last active
August 18, 2021 07:57
-
-
Save spiritedRunning/11ed785ac595fdd1298bd049d79f88f9 to your computer and use it in GitHub Desktop.
彩虹色多色阶热力图温度映射
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private float a, b, c, d; | |
private int red, green, blue; | |
private static final float minTemp = 20.0f; | |
private static final float maxTemp = 40.0f; | |
private void setAbcd() { | |
a = minTemp + (maxTemp - minTemp) * 0.2121f; | |
b = minTemp + (maxTemp - minTemp) * 0.3182f; | |
c = minTemp + (maxTemp - minTemp) * 0.4242f; | |
d = minTemp + (maxTemp - minTemp) * 0.8182f; | |
} | |
private int constrain(double amt, int low, int high) { | |
return (amt) < (low) ? (low) : (int) ((amt) > (high) ? (high) : (amt)); | |
} | |
private int getColor565(int red, int green, int blue) { | |
return ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xFF) >> 3); | |
} | |
private int TempToColor(double val) { | |
red = constrain(255.0f / (c - b) * val - ((b * 255.0f) / (c - b)), 0, 255); | |
if ((val > minTemp) & (val < a)) { | |
green = constrain(255.0f / (a - minTemp) * val - (255.0f * minTemp) / (a - minTemp), 0, 255); | |
} else if ((val >= a) & (val <= c)) { | |
green = 255; | |
} else if (val > c) { | |
green = constrain(255.0f / (c - d) * val - (d * 255.0f) / (c - d), 0, 255); | |
} else if ((val > d) | (val < a)) { | |
green = 0; | |
} | |
if (val <= b) { | |
blue = constrain(255.0f / (a - b) * val - (255.0f * b) / (a - b), 0, 255); | |
} else if ((val > b) & (val <= d)) { | |
blue = 0; | |
} else if (val > d) { | |
blue = constrain(240.0f / (maxTemp - d) * val - (d * 240.0f) / (maxTemp - d), 0, 240); | |
} | |
//Log.i(TAG, "red= " + red + ", green = " + green + ", blue = " + blue); | |
// use the displays color mapping function to get 5-6-5 color palet (R=5 bits, G=6 bits, B-5 bits) | |
int color = getColor565(red, green, blue); | |
return RGB565ToARGB(color); | |
} | |
private int RGB565ToARGB(int aPixel) { | |
int r = ((aPixel & 0xF800) >>> 8) & 0xFF; | |
int g = ((aPixel & 0x07E0) >>> 3) & 0xFF; | |
int b = ((aPixel & 0x001F) << 3) & 0xFF; | |
return 0xff000000 | (r << 16) | (g << 8) | b; | |
} | |
Author
spiritedRunning
commented
Aug 18, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment