from utils import lerp, sq, constrain from math import sqrt if __name__ == "__main__": D = 0.9 SIZE = 16 data = [] pal = [] for i in range(8): c = int(lerp(0, 255, float(i) / 7)) pal.extend([c, c, c]) im = Image.new('L', (SIZE, SIZE * 8)) im.putpalette(pal) pix = im.load() for size in range(8, 16): r = lerp(2.0, 1.0, float(size - 8) / 7) for i in range(SIZE): for j in range(SIZE): u = lerp(-r, r, float(i) / (SIZE - 1)) v = lerp(-r, r, float(j) / (SIZE - 1)) d = sq(1.4 - constrain(sqrt(sq(u) + sq(v)), 0.0, 1.4)) pix[i, j + (size - 8) * SIZE] = int(constrain(d, 0.0, 1.0) * 7) im.save("plotter-flares.png", "PNG")
for i in range(8): pal.extend([0, 0, 0]) for i in range(16): c = int(lerp(0, 255, float(i + 1) / 16)) pal.extend([c, c, c]) for i in range(4): pal.extend([255, 255, 255]) for i in range(4): c = int(lerp(255, 0, float(i + 1) / 4)) pal.extend([c, c, c]) for i in range(size[0]): for j in range(size[1]): x = lerp(-D, D, float(i) / size[0]) y = lerp(-D, D, float(j) / size[1]) d = dist(x, y, 0, 0) if d < D: p = constrain(int(sq(1.0 - d) * 128), 0, 31) else: p = 0 data.append(int(p)) im = Image.new('L', size) im.putdata(data) im.putpalette(pal) im.save(sys.argv[1], "PNG")
for i in range(8): pal.extend([0, 0, 0]) for i in range(16): c = int(lerp(0, 255, float(i + 1) / 16)) pal.extend([c, c, c]) for i in range(4): pal.extend([255, 255, 255]) for i in range(4): c = int(lerp(255, 0, float(i + 1) / 4)) pal.extend([c, c, c]) for i in range(size[0]): for j in range(size[1]): x = lerp(-D, D, float(i) / size[0]) y = lerp(-D, D, float(j) / size[1]) d = dist(x, y, 0, 0); if d < D: p = constrain(int(sq(1.0 - d) * 128), 0, 31) else: p = 0 data.append(int(p)) im = Image.new('L', size) im.putdata(data) im.putpalette(pal) im.save("metaball.png", "PNG")