bool cGrCelestialBody::repaint( double angle ) { static double prev_angle = 9999.0; if (prev_angle != angle) { prev_angle = angle; double factor = 4*cos(angle); if (factor > 1) factor = 1.0; if (factor < -1) factor = -1.0; factor = factor/2 + 0.5f; sgVec4 color; color[0] = (float)pow(factor, 0.25); color[1] = (float)pow(factor, 0.50); color[2] = (float)pow(factor, 4.0); color[3] = 1.0; grGammaCorrectRGB( color ); float *ptr; ptr = cl->get( 0 ); sgCopyVec4( ptr, color ); } return true; }
bool cGrMoon::repaint( double angle ) { if (prev_moon_angle != angle) { prev_moon_angle = angle; double moon_factor = 4 * cos(angle); if (moon_factor > 1) moon_factor = 1.0; if (moon_factor < -1) moon_factor = -1.0; moon_factor = (moon_factor / 2) + 0.5f; sgVec4 color; color[1] = sqrt(moon_factor); color[0] = sqrt(color[1]); color[2] = moon_factor * moon_factor; color[2] *= color[2]; color[3] = 1.0; //color[0] = (float)pow(moon_factor, 0.25); //color[1] = (float)pow(moon_factor, 0.50); //color[2] = (float)pow(moon_factor, 4.0); //color[3] = 1.0; grGammaCorrectRGB( color ); float *ptr; ptr = moon_cl->get( 0 ); sgCopyVec4( ptr, color ); } return true; }