---
# System prepended metadata

title: Ilustrações vetoriais com programação - Aula 3

---

# Ilustrações vetoriais com programação - Aula 3

### `hackmd.io/@sesc-av-paulista/ilustras-vetoriais-3`
#### [índice das aulas](https://hackmd.io/@sesc-av-paulista/ilustras-vetoriais) 

- Apoio abav.lugaralgum.com/material-aulas
    - L-System https://abav.lugaralgum.com/material-aulas/Processing-Python-py5/LSystem.html
    - Desenhos diários https://abav.lugaralgum.com/sketch-a-day/
- Wikipedia https://en.wikipedia.org/wiki/L-system
- Mais exemplos de L-Sytem https://hackmd.io/TrN0yfXIR-OlYgsiI563uA

### Métodos dos `strings` 

- https://docs.python.org/pt-br/3/library/stdtypes.html#string-methods

```python!
>>> frase = 'jabuticaba aniversário'
>>> texto = ''
>>> for letra in frase:
    if letra == 'a':
        texto = texto + 'A'
    else:
        texto = texto + letra
    
>>> texto
'jAbuticAbA Aniverário'

>>> vogais
{'a': 'aaahhh', 'e': 'eita', 'i': 'iiiii', 'o': 'oxente', 'u': 'uva'}
>>> letra = 'á'
>>> vogais.get(letra, letra)
'á'
>>> letra = 's'
```

### Substituição zoeira

```python!
>>> frase = 'jabuticaba aniversário'
>>> frase
'jabuticaba aniversário'
>>> texto = ''
>>> vogais
{'a': 'aaahhh', 'e': 'eita', 'i': 'iiiii', 'o': 'oxente', 'u': 'uva'}
>>> for letra in frase:
    texto = texto + vogais.get(letra, letra)
    
>>> texto
'jaaahhhbuvatiiiiicaaahhhbaaahhh aaahhhniiiiiveitarsáriiiiioxente'

```

### Substituição algas

Primeiro exemplo com alga

```python!
axioma = 'A'

regras = {
    'A': 'AB',
    'B': 'A',
    }

frase_inicial = axioma
for i in range(15):
    frase_resultado = ''
    for simbolo in frase_inicial:
        frase_resultado = frase_resultado + regras.get(simbolo, simbolo)
    frase_inicial = frase_resultado
print(frase_resultado)    

```

### Desenho estilo tartaruga

Movendo a origem (o 0, 0) e girando o papel

![image](https://hackmd.io/_uploads/HyNkPe_0xg.png)

Tartaruga que volta a um ponto anterior

![image](https://hackmd.io/_uploads/SJzzcl_Aee.png)

#### Exemplo de L-System

![image](https://hackmd.io/_uploads/HJ6RCl_Axe.png)

```python!

axioma = '-X'
regras = {
    'X': ' F+[[X]-X]-F[-FX]+X',
    'F': 'FF',
    }
passo = 1.5
angulo = 25  # graus

frase_inicial = axioma
for i in range(7):
    frase_resultado = ''
    for simbolo in frase_inicial:
        frase_resultado = frase_resultado + regras.get(simbolo, simbolo)
    frase_inicial = frase_resultado
#print(frase_resultado)    
print(len(frase_resultado))
    
def setup():
    size(800, 500)
    translate(150, 450)
    for simbolo in frase_resultado:
        if simbolo == 'F':
            line(0, 0, 0, -passo)
            translate(0, -passo)
        elif simbolo == '-':
            rotate(radians(angulo))
        elif simbolo == '+':
            rotate(radians(-angulo))
        elif simbolo == '[':
            push_matrix()
        elif simbolo == ']':
            pop_matrix()
            
    
```


### Ajustando ângulo interativamente com o teclado 

![image](https://hackmd.io/_uploads/ryEeif-y-x.png)

Use as teclas `a` e `z` para mudar o ângulo!

```python=
axioma = 'Y'
regras = {
    'X': 'X[-FFF][+FFF]FX',
    'Y': 'YFX[+Y][-Y]',
    }
passo = 1.5
angulo = 25.7  # graus

frase_inicial = axioma
for i in range(7):
    frase_resultado = ''
    for simbolo in frase_inicial:
        frase_resultado = frase_resultado + regras.get(simbolo, simbolo)
    frase_inicial = frase_resultado
#print(frase_resultado)    
print(len(frase_resultado))
    
def setup():
    size(500, 500)
    
def draw():
    background(240, 240, 200)
    translate(250, 450)
    for simbolo in frase_resultado:
        if simbolo == 'F':
            line(0, 0, 0, -passo)
            translate(0, -passo)
        elif simbolo == '-':
            rotate(radians(angulo))
        elif simbolo == '+':
            rotate(radians(-angulo))
        elif simbolo == '[':
            push_matrix()
        elif simbolo == ']':
            pop_matrix()
            
        
def key_pressed():
    global angulo
    if key == 'a':
        angulo = angulo - 1
    if key == 'z':
        angulo = angulo + 1
        
```    
    


```