# Entradas # Ancho de la matriz # Alto de la matriz # Ratio (multiplica la altura). Sin especificar es 2 # Centro en x del gradiente # Centro en y del gradiente # Radio del gradiente. Sin especificar es distancia max a esquina. # Cadena de caracteres del gradiente. import sys import math ancho = 0 while ancho <= 0: ancho = int(input("Ancho = ")) alto = 0 while alto <= 0: alto = int(input("Alto = ")) try: xyratio = float(input("x:y ratio = ")) except: xyratio = 2 print("x:y ratio = " + str(xyratio)) x_centro = -1 while x_centro < 0: x_centro = float(input("x center = ")) y_centro = -1 while y_centro < 0: y_centro = float(input("y center = ")) * xyratio radio = 0 try: radio = float(input("radius: ")) except: x = x_centro y = y_centro xa = ancho - x ya = (alto * xyratio) - y distancias = [0] * 4 distancias[0] = math.sqrt(x * x + y * y) distancias[1] = math.sqrt(xa * xa + y * y) distancias[2] = math.sqrt(x * x + ya * ya) distancias[3] = math.sqrt(xa * xa + ya * ya) radio = max(distancias) print("radio = " + str(radio)) caracteres = '' while len(caracteres) == 0: caracteres = str(input("caracteres : ")) print() chars_len = len(caracteres) char_distance = radio / chars_len for y in range(alto): for x in range(ancho): xd = x + 0.5 - x_centro yd = ((y + 0.5) * xyratio) - y_centro distancia = math.sqrt(xd * xd + yd * yd) char_salida = ' ' if distancia < radio: char_index = math.floor(distancia / char_distance ) char_salida = caracteres[char_index] sys.stdout.write(char_salida) print()
75 35 2 37.5 17.5 x.x.x
Ancho = Alto = x:y ratio = x center = y center = radius: radio = 51.29571132170798 chars: xxxxxxxxxxxxxxx.............................................xxxxxxxxxxxxxxx xxxxxxxxxxxx...................................................xxxxxxxxxxxx xxxxxxxxxx.....................xxxxxxxxxxxxx.....................xxxxxxxxxx xxxxxxxx.................xxxxxxxxxxxxxxxxxxxxxxxxx.................xxxxxxxx xxxxxx...............xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...............xxxxxx xxxx..............xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..............xxxx xxx.............xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.............xxx xx............xxxxxxxxxxxxxxxxxxx.........xxxxxxxxxxxxxxxxxxx............xx x............xxxxxxxxxxxxxxx...................xxxxxxxxxxxxxxx............x ...........xxxxxxxxxxxxxx.........................xxxxxxxxxxxxxx........... ..........xxxxxxxxxxxxx.............................xxxxxxxxxxxxx.......... .........xxxxxxxxxxxx.................................xxxxxxxxxxxx......... ........xxxxxxxxxxxx...............xxxxx...............xxxxxxxxxxxx........ ........xxxxxxxxxxx............xxxxxxxxxxxxx............xxxxxxxxxxx........ .......xxxxxxxxxxx...........xxxxxxxxxxxxxxxxx...........xxxxxxxxxxx....... .......xxxxxxxxxx...........xxxxxxxxxxxxxxxxxxx...........xxxxxxxxxx....... .......xxxxxxxxxx..........xxxxxxxxxxxxxxxxxxxxx..........xxxxxxxxxx....... .......xxxxxxxxxx..........xxxxxxxxxxxxxxxxxxxxx..........xxxxxxxxxx....... .......xxxxxxxxxx..........xxxxxxxxxxxxxxxxxxxxx..........xxxxxxxxxx....... .......xxxxxxxxxx...........xxxxxxxxxxxxxxxxxxx...........xxxxxxxxxx....... .......xxxxxxxxxxx...........xxxxxxxxxxxxxxxxx...........xxxxxxxxxxx....... ........xxxxxxxxxxx............xxxxxxxxxxxxx............xxxxxxxxxxx........ ........xxxxxxxxxxxx...............xxxxx...............xxxxxxxxxxxx........ .........xxxxxxxxxxxx.................................xxxxxxxxxxxx......... ..........xxxxxxxxxxxxx.............................xxxxxxxxxxxxx.......... ...........xxxxxxxxxxxxxx.........................xxxxxxxxxxxxxx........... x............xxxxxxxxxxxxxxx...................xxxxxxxxxxxxxxx............x xx............xxxxxxxxxxxxxxxxxxx.........xxxxxxxxxxxxxxxxxxx............xx xxx.............xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.............xxx xxxx..............xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..............xxxx xxxxxx...............xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...............xxxxxx xxxxxxxx.................xxxxxxxxxxxxxxxxxxxxxxxxx.................xxxxxxxx xxxxxxxxxx.....................xxxxxxxxxxxxx.....................xxxxxxxxxx xxxxxxxxxxxx...................................................xxxxxxxxxxxx xxxxxxxxxxxxxxx.............................................xxxxxxxxxxxxxxx