# 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

Tartaruga que volta a um ponto anterior

#### Exemplo de L-System

```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

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
```
```