O módulo turtle do Python, integrado à biblioteca padrão, permite criar gráficos vetoriais interativos através de um cursor virtual. Vamos aplicá-lo para gerar a arte de letras "LILOU", combinando movimentos precisos e cálculos matemáticos para formar um design visual atrativo.
Para iniciar, importamos as bibliotecsa necessárias e instanciamos o objeto de desenho:
import turtle
import math
# Configuração inicial do pincel
caneta = turtle.Turtle()
caneta.speed(2)
A primeira etapa envolve desenhar uma forma de fundo em veremlho. Utilizamos comandos como penup() e pendown() para controlar o traço, e rotações com left() e right() associadas a avanços (forward()) para criar ângulos específicos. O preenchimento é gerenciado por begin_fill() e end_fill().
caneta.penup()
caneta.goto(0, 150)
caneta.pendown()
caneta.color('red')
caneta.begin_fill()
caneta.fillcolor('red')
# Construção da forma de fundo
caneta.left(45)
caneta.forward(150)
caneta.right(45)
caneta.forward(100)
# ... sequência adicional de movimentos
caneta.end_fill()
Depois, aidcionamos as letras "LILOU" em branco sobre o fundo. Cada caractere é construído isoladamente, ajustando a posição da caneta e a espessura do traço. Por exemplo, para a letra "L":
caneta.penup()
caneta.goto(-10, 0)
caneta.pencolor('white')
caneta.pensize(10)
caneta.pendown()
caneta.goto(-50, 0)
caneta.goto(-50, 80)
caneta.penup()
Procedimentos análogos são aplicados para as demais letras ("I", "L", "O", "U"), empregando cálculos trigonométricos e coordenadas para garantir alinhamento. O código completo a seguir integra todas as operações:
import turtle
import math
def construir_fundo(pincel):
"""Desenha a forma vermelha de fundo."""
pincel.penup()
pincel.goto(0, 150)
pincel.pendown()
pincel.color('red')
pincel.begin_fill()
pincel.fillcolor('red')
pincel.left(45)
pincel.forward(150)
pincel.right(45)
pincel.forward(100)
pincel.right(45)
pincel.forward(100)
pincel.right(45)
pincel.forward(100)
pincel.right(45)
pincel.forward(250 + math.sqrt(2) * 100)
pincel.right(90)
pincel.forward(250 + 100 * math.sqrt(2))
pincel.right(45)
pincel.forward(100)
pincel.right(45)
pincel.forward(100)
pincel.right(45)
pincel.forward(100)
pincel.right(45)
pincel.forward(150)
pincel.end_fill()
def construir_letras(pincel):
"""Desenha as letras LILOU em branco."""
pincel.penup()
pincel.goto(-10, 0)
pincel.pencolor('white')
# Letra L
pincel.pensize(10)
pincel.pendown()
pincel.goto(-50, 0)
pincel.goto(-50, 80)
pincel.penup()
# Letra I
pincel.goto(-100, 0)
pincel.pendown()
pincel.goto(-160, 0)
pincel.goto(-130, 0)
pincel.goto(-130, 80)
pincel.goto(-160, 80)
pincel.goto(-100, 80)
pincel.penup()
# Letra L novamente
pincel.goto(10, 25)
pincel.pendown()
pincel.right(45)
pincel.circle(25, extent=180)
pincel.goto(60, 55)
pincel.circle(25, extent=180)
pincel.goto(10, 25)
pincel.penup()
# Letra O
pincel.goto(75, 80)
pincel.pendown()
pincel.goto(100, 0)
pincel.goto(125, 80)
pincel.penup()
# Letra U
pincel.goto(180, 80)
pincel.pendown()
pincel.goto(140, 80)
pincel.goto(140, 0)
pincel.goto(180, 0)
pincel.penup()
pincel.goto(180, 40)
pincel.pendown()
pincel.goto(140, 40)
pincel.penup()
pincel.goto(-40, -30)
pincel.pendown()
pincel.goto(-40, -80)
pincel.circle(40, extent=180)
pincel.goto(40, -30)
pincel.hideturtle()
# Execução principal
tela = turtle.Screen()
tela.title("Arte LILOU")
pincel = turtle.Turtle()
construir_fundo(pincel)
construir_letras(pincel)
turtle.mainloop()