Potentials – Adding Multiple Colors to Graphing
The graphs in Potentials are OK... but they are only interpolating between two colors. It's OK... but it's not as nice as I'd like it. What I wanted was to be able to have several colors in the mix - so I could come up with colors like Black Body Radiation. Then it came to me, that I could bracket the values with an array of colors, like:
NSColor* spectrum[] = {[NSColor redColor], [NSColor orangeColor], [NSColor yellowColor], [NSColor cyanColor]}; int stages = 4; double dc = 1.0/(stages - 1);
And then, for each point to plot:
double x = 0.0; int ilow = 0; for (int r = 0; r < _rowCnt; r++) { for (int c = 0; c < _colCnt; c++) { x = _values[r][c]; ilow = MIN((int)(x/dc), (stages-2)); x -= ilow * dc; gc = [ResultsView interpolate:(x/dc) withColorsBetween:spectrum[ilow] and:spectrum[ilow+1]];
Where we're picking the value up, then finding the two bordering colors on that value, and then moving the value to the [0..1] range and then interpolating between those two colors.
In the end, it looks great:
It's a really nice improvement, and next we have to work on the Electric field.