Changeset 1055


Ignore:
Timestamp:
Nov 7, 2011, 4:37:00 PM (9 years ago)
Author:
gary
Message:

tutorial: continuous color in the Mandelbrot viewer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/tutorial/tut03.cpp

    r1054 r1055  
    2828#if defined _WIN32
    2929#   undef main /* FIXME: still needed? */
     30#   include <direct.h>
    3031#endif
    3132
     
    115116        }
    116117
    117         m_angle += deltams * 0.001f;
    118 
    119         cmplx r0(cosf(m_angle), 0.3f * sinf(m_angle));
     118        m_angle += deltams * 0.0001f;
     119
     120        cmplx r0(cosf(m_angle), 0.5f * sinf(m_angle));
    120121        for (int j = 0; j < m_size.y; j++)
    121122        for (int i = 0; i < m_size.x; i++)
     
    123124            cmplx x0(4.0f / m_size.x * i - 2.5f, 3.0f / m_size.y * j - 1.5f);
    124125            cmplx r = x0 * r0;
     126            cmplx z;
    125127            int iter = 20;
    126             for (cmplx z = r; iter && z.sqlen() < 4.0f; z = z * z + r)
     128            for (z = r; iter && z.sqlen() < 4.0f; z = z * z + r)
    127129                --iter;
    128             m_pixels[j * m_size.x + i] = u8vec4(0, iter * 12, iter * 12, 0);
     130
     131            float f = iter;
     132            float n = z.sqlen();
     133            if (n > 36.0f)
     134                f += 2.0f;
     135            if (n > 16.0f)
     136                f += 1.0f + (n - 16.0f) / 20.0f;
     137            else if (n > 4.0f)
     138                f += (n - 4.0f) / 12.0f;
     139
     140            if (iter)
     141            {
     142                uint8_t red = 255 - f * 11;
     143                uint8_t green = 255 - f * 11;
     144                uint8_t blue = (f * 23 > 255) ? 511 - f * 23 : 255;
     145                //uint8_t blue = f * 36 < 255 ? f * 36 : 255;
     146                m_pixels[j * m_size.x + i] = u8vec4(red, green, blue, 0);
     147            }
     148            else
     149            {
     150                m_pixels[j * m_size.x + i] = u8vec4(0, 0, 0, 0);
     151            }
    129152        }
    130153
     
    186209int main()
    187210{
     211#if defined _WIN32
     212    _chdir("../..");
     213#endif
     214
    188215    Application app("Tutorial 3: Fractal", ivec2(640, 480), 60.0f);
    189216
Note: See TracChangeset for help on using the changeset viewer.