#!/usr/bin/env python3 import cairo import math from utils import random_color WIDTH, HEIGHT = 256, 256 WAVES = 8 def main(): surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT) ctx = cairo.Context(surface) ctx.scale(WIDTH, HEIGHT) # Normalizing the canvas wave_height = 1/WAVES lastpoints = [(x/1000, 0) for x in range(1000)] for num in range(WAVES): r, g, b = random_color() points = [] x = 0 while x < 1: y = math.sin(x*50) * 0.1 points.append((x, ( (y/4) + ((0.5+num)*wave_height)))) x += 0.001 # draw waves ctx.move_to(*points[0]) for p in points[1:]: ctx.line_to(*p) ctx.set_line_width(0.002) ctx.set_source_rgb(r, g, b) ctx.stroke() # fill area above for pos in range(len(points)): ctx.move_to(*points[pos]) ctx.line_to(*lastpoints[pos]) ctx.stroke() lastpoints = points surface.write_to_png("out/waves.png") # Output to PNG if __name__ == '__main__': main()