Calculating an RGB-Value array possible?

Assuming that val is in the 0 .. 1023 range:

  if (val < 256)
  { // red to yellow
    r = 255;
    g = val;
    b = 0;
  }
  else if (val < 512)
  { // yellow to green
    r = 511- val;
    g = 255;
    b = 0;
  }
  else if (val < 768)
  { // green to cyan
    r = 0;
    g = 255;
    b = val - 512;
  }
  else
  { // cyan to blue
    r = 0;
    g = 1023 - val;
    b = 255;
  }