from math import *
from kandinsky import set_pixel, fill_rect, get_pixel
# Rayon (au carré) des 3 disques
R = 180*180
# Précision du tracé (mettre 1 par exemple)
pas = 4
def synthese(sous = 1):
# Fond blanc si synthèse soustrative sinon noir
fill_rect(0,0,320,222,(255 * sous,) * 3)
# On dessine les 3 disques centrés en (0,50), etc.
for i, m in enumerate([[0,50],[320,50],[160,290]]):
# On parcourt tous les pixels de l'écran
for c in range(0,320,pas):
for l in range(0,222,pas):
# Distance au carré entre le point (c,l) et le centre du disque
d = (m[0] - c) ** 2 + (m[1] - l) ** 2
# On est dans le disque ?
if d < R:
# Couleur actuelle du pixel en (c,l)
# On transforme en liste car un tuple n'est pas modifiable
p = list(get_pixel(c,l))
# Synthèse soustractive
if sous:
p[i] = int(max(p[i] - 255 * sqrt(d / R), 0))
# Synthèse additive
else:
p[i] = int(min(p[i] + 255 * sqrt(d / R), 255))
# On dessine le rectangle avec la précision voulue
fill_rect(c,l,pas,pas,tuple(p))
from math import * from kandinsky import set_pixel, fill_rect, get_pixel R = 180*180 pas = 4 def synthese(sous = 1): fill_rect(0,0,320,222,(255 * sous,) * 3) for i, m in enumerate([[0,50],[320,50],[160,290]]): for c in range(0,320,pas): for l in range(0,222,pas): d = (m[0] - c) ** 2 + (m[1] - l) ** 2 if d < R: p = list(get_pixel(c,l)) if sous: p[i] = int(max(p[i] - 255 * sqrt(d / R), 0)) else: p[i] = int(min(p[i] + 255 * sqrt(d / R), 255)) fill_rect(c,l,pas,pas,tuple(p))