#!/usr/bin/env python3 import sys import os import numpy as np import pygame Nx = int(sys.argv[1]) Ny = int(sys.argv[2]) try: frequency = float(sys.argv[3]) except (IndexError, ValueError): frequency = 5 fps = 30 amplitude = 105 offset = 150 t = 0 x,y = np.meshgrid(np.linspace(0, 2*np.pi * min(1, Nx/Ny), Nx), np.linspace(0, 2*np.pi * min(1, Ny/Nx), Ny)) kx = x + y clock = pygame.time.Clock() while True: t = t + 1e-3 R = amplitude * np.sin(kx - 2 * np.pi * frequency * t) + offset G = amplitude * np.sin(kx - 2 * np.pi * frequency * t + 2*np.pi/3) + offset B = amplitude * np.sin(kx - 2 * np.pi * frequency * t + 4*np.pi/3) + offset out = np.dstack((R,G,B)).astype(np.uint8).tobytes() os.write(1, out) clock.tick_busy_loop(fps)