|
| 1 | +import _nx |
| 2 | + |
| 3 | +GfxMode_LinearDouble = 2 |
| 4 | +WIDTH = 1280 |
| 5 | +HEIGHT = 720 |
| 6 | +MAX_ITER = 32 |
| 7 | + |
| 8 | +palette_r = [0, 8, 16, 24, 32, 40, 42, 38, 32, 22, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 57, 96, 137, 182, 216, 224, 232, 240, 248] |
| 9 | +palette_g = [0, 1, 6, 13, 24, 37, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 110, 90, 66, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] |
| 10 | +palette_b = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 24, 45, 70, 97, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 202, 168, 130, 90, 46] |
| 11 | + |
| 12 | +def mandel(x0, y0): |
| 13 | + x, y = (0.0, 0.0) |
| 14 | + for i in range(MAX_ITER): |
| 15 | + x, y = ( (x*x - y*y + x0), (2*x*y + y0) ) |
| 16 | + if (x*x + y*y) >= 4: |
| 17 | + return i |
| 18 | + return 0 |
| 19 | + |
| 20 | +_nx.gfx_set_mode(GfxMode_LinearDouble) |
| 21 | + |
| 22 | +fb = bytearray([0]*WIDTH*HEIGHT*4) # RGBA8888 |
| 23 | + |
| 24 | +for y in range(HEIGHT): |
| 25 | + y0 = (y/HEIGHT*2)-1 |
| 26 | + for x in range(WIDTH): |
| 27 | + x0 = (x/HEIGHT*2)-2.5 |
| 28 | + iterations = mandel(x0, y0) |
| 29 | + fb[(y*WIDTH+x)*4] = palette_r[iterations] |
| 30 | + fb[(y*WIDTH+x)*4+1] = palette_g[iterations] |
| 31 | + fb[(y*WIDTH+x)*4+2] = palette_b[iterations] |
| 32 | + |
| 33 | + _nx.gfx_set_framebuffer(fb) |
| 34 | + _nx.gfx_flush_and_sync() |
0 commit comments