点云显示热力图,琢磨了很久终于在同事的帮助下完成了,结果图涉及保密就不放了,但是好用,放一个同事的测试图:
void getHeatMapColor(float value, int & red, int & green, int & blue)//distance value 0~1
{
const int NUM_COLORS = 4;//4 color change
float color[NUM_COLORS][3] = {{0,0,1}, {0,1,0}, {1,1,0}, {1,0,0}};
int idx1;//left color index
int idx2;//right color index
float fractBetween = 0;
if(value <= 0)
{
idx1 = idx2 = 0;
}
else
{
value = value * (NUM_COLORS - 1);
idx1 = floor(value);
idx2 = idx1 + 1;
fractBetween = value - float(idx1);
}
else if(value >= 1)
{
idx1 = idx2 = NUM_COLORS - 1;
}
red = ((color[idx2][0] - color[idx1][0])*fractBetween + color[idx1][0]) * 235.0f;
green = ((color[idx2][1] - color[idx1][1])*fractBetween + color[idx1][1]) * 235.0f;
blue = ((color[idx2][2] - color[idx1][2])*fractBetween + color[idx1][2]) * 235.0f;
}