Example #1
0
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;
}