41 z = std::max ( 0.0, z );
42 z = std::min ( 1.0, z );
44 double r = std::min ( 255.,
45 113.9 * sin ( 7.64 * pow ( z, 1.705 ) + 0.701 )
46 - 916.1 * pow ( ( z + 1.755), 1.862 )
47 + 3587.9 * z + 2563.4 );
48 double g = std::min ( 255.,
49 70.0 * sin ( 8.7 * pow ( z, 1.26 ) - 2.418 )
50 + 151.7 * pow ( z, 0.5 )
52 double b = std::min ( 255.,
53 194.5 * pow ( z, 2.88 )
54 + 99.72 * exp ( -77.24 *pow ( z - 0.742, 2 ) )
55 + 45.4 * pow ( z, 0.089 )
58 int red = static_cast <
int > ( r );
59 int green = static_cast <
int > ( g );
60 int blue = static_cast <
int > ( b );
62 assert ( red < 256 && green < 256 && blue < 256 );