villares / material-aulas Goto Github PK
View Code? Open in Web Editor NEWMaterial para ensino introdutório de programação com Python em um contexto visual
Home Page: https://abav.lugaralgum.com/material-aulas/
Material para ensino introdutório de programação com Python em um contexto visual
Home Page: https://abav.lugaralgum.com/material-aulas/
Seria possível inserir um link (de qualquer natureza) no código para que uma pessoa conseguisse clicar na imagem que se forma e acessar o endereço?
Um exemplo seria um botão em um website para entrar em outra página.
Obrigada :)
Mayara Silvestrini
Dica da @fernandavallois
As comparações maior e menor, maior ou igual e menor ou igual com números são o mais importante.
Dá pra comparar outras coisas também, mais avançado...
O assunto do is
é mais avançado tb ... e não é tão usado.
Por exemplo podemos escrever if a is None:
em vez de if a == None:
É possível através do desenho 3D, eu realizar uma visualização em vídeo percorrendo pelos elementos criados? Uma espécie de vídeo 3D de um projeto de arquitetura por exemplo, formado apenas pelos elementos sólidos, a fim de criar um projeção de projeto de massas a ser construído em função do terreno.
A documentação do projeto pyp5js (que é experimental), criado por @berinhard, está em inglês para atrair colaboradores no mundo todo. github.com/berinhad/pyp5js
Para as pessoas iniciantes em programação, aqui neste material-aulas, podemos ter uma página com as instruções de instalação e uso em português!
Sabemos que, por ser experimental, o projeto pode ainda mudar muito e possivelmente vamos ter que atualizar essa nossa página.
Exemplo:
def setup():
size(500,500)
global imagem
imagem = loadImage('arquivo.png')
def draw():
iw, ih = imagem.width, imagem.height
print(iw, ih)
cor = imagem.get(mouseX, mouseY)
fill(cor)
noStroke()
image(imagem, 100, 100, 230, 240)
circle(mouseX, mouseY, 30)
Oi Alê, tudo bem?
Tive problemas com a exportação de video nessa explicação:
https://abav.lugaralgum.com/material-aulas/Processing-Python/exportar_animacoes#c-biblioteca-video-export
Esse site www.ffmpeg.org te da uma opção de baixar um source code ou uns pacotes e executáveis para os sistemas operacionais. Eu baixei o source e uns pacotes do mac mas vem com uns formatos estranhos e não consigo rodar.
Daí, quando colei o código que estava na página da sua explicação, ele retornou esse erro:
obrigada <3
A página sobre exportar animações até que não está ruim.
https://github.com/villares/material-aulas/blob/master/Processing-Python/exportar_animacoes.md
Mas falta um exemplo comentado em português da biblioteca Video Export que é fácil de instalar no IDE.
from __future__ import division # usando divisão do Python 3
def setup():
size(500, 500)
def draw():
background(200)
noStroke()
dots(width / 2, height / 2,
mouseX , mouseY,
color(255, 255, 0),
color(0, 255, 255),
steps=20,
dot_size=10)
def dots(x1, y1, x2, y2, ca, cb, steps=10, dot_size=10):
L = dist(x1, y1, x2, y2)
A = atan2(x1 - x2, y2 - y1)
pushMatrix()
translate(x1, y1)
rotate(A)
if L < steps * dot_size:
steps = int(L / dot_size)
for i in range(steps + 1):
y = 0
if steps > 0:
p = i / steps
y = lerp(0, L, p)
cor = lerpColor(ca, cb, p)
fill(cor)
rectMode(CENTER)
rect(0, y, dot_size, dot_size)
popMatrix()
E relacionados
Vendo direto os arquivos markdown mostrados no repositório em https://github.com/villares/material-aulas os blocos de códigos que começam com ```pyde
ou ```python
e terminam com ```
estão OK.
Mas na versão servida em https://abav.lugaralgum.com/material-aulas os blocos ficam sem cor de sintaxe.
Andei estudando _config.yml
mas não consegui resolver.
Idealmente uns GIFs animados
https://github.com/villares/material-aulas/blob/master/Processing-Python/escopo_py.md
Pode ser um .png, mas um .gif animado cai bem também:
https://github.com/villares/material-aulas/blob/master/Processing-Python/input_py.md
Colision detection é um material imenso...
tem um site inteiro de referência, não tou lembrando agora
Favor explicar com exemplos de Noise em 1D, 2D, e 3D se possível :)
Começando aqui: https://github.com/villares/material-aulas/blob/master/Processing-Python/noise.md
Código nos exemplos demonstrando loadShape()
:
def setup():
size(280, 360)
global bot
bot = loadShape("bot1.svg")
def draw():
background(102)
shape(bot, 110, 90, 100, 100)
shape(bot, 280, 40)
Requer arquivo bot1.svg
na pasta data
.
nome_aba.py
from nome_aba import *
(ou, mais elegante, from nome_aba import funcao, Classe
)# -*- coding: utf-8 -*-
Ao criar animações como podemos exportar em formato GIF?
Para exportar PNG usamos as seguintes linhas:
def setup():
size(500, 500)
def draw():
background(0, 0, 200)
x, y = random(width), random(height)
circle(x, y, 100)
def keyPressed():
if key == 's':
saveFrame("frame.png")
print("PNG salvo")
Como proceder com relação a animações que queremos salvar em formato GIF?
Oi Alexandre, tudo bem? É a Fernanda.
Desculpa, não sei se é o jeito/canal certo de fazer isso, mas não consegui achar seu e-mail então estou experimentando por aqui. :)
Vou deixar aqui as perguntas que acabei não conseguindo falar com você no nosso atendimento, acredito que possa ser do interesse de outras pessoas também, pois são bem gerais.
Segue:
• Como transportar um programa gerado no processing pra outros ambientes e deixa-los interativos?
• Tem algum livro / curso / site bom com matemática básica para programação?
• Dá pra escrever com alguma interação dentro das letras?
• Fluxos, setas - quais funções usar?
• por fim, fiz um pad com alguns códigos que encontrei no seu material que achei difíceis de entender, então seria legal poder falar sobre eles, só o do olho, eu que fiz, mas gostaria que as pupilas acompanhassem o mouse sem obviamente sair da iris. haha. Aqui o link: [editado] https://gist.github.com/villares/7eb6b7c79f67d888dfec2daedee08119
beijos e muito obrigada! <3
@alexdesiqueira sugeriu ler este material como exemplo de boa documentação para colaborarção em projetos:
https://scikit-image.org/docs/stable/contribute.html
def setup():
size(500, 500)
rectMode(CENTER)
def draw():
background(200, 200, 240)
tam1 = 120 + 100 * sin(radians(frameCount))
tam2 = 120 + 100 * cos(radians(frameCount))
rect(250, 250, tam1, tam2)
Para tornar o material mais eficiente quando usado fora do contexto da aulas, seria interessante incluir perguntas e pequenas atividades acompanhadas pelas respostas não imediatamente visíveis, como em: Sequências e repetições
Para fazer isso é possível no markdown do GitHub usar marcação HTML como neste exemplo:
#### Qual você acha que é o resultado de `range(1, 11)`?
<details>
<summary>clique para ver a resposta</summary>
`[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`
Podemos usar `range(parada)` ou `range(inicio, parada)`, o número início está incluso, o número de parada não é incluso.
</details>
---
Note que é necessária uma linha em branco após </sumary>
e após </details>
. Veja abaixo o resultado:
range(1, 11)
?[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Podemos usar range(parada)
ou range(inicio, parada)
, o número início está incluso, o número de parada não é incluso.
Existe a possibilidade de utilizar o Google Translate utilizando Python?
Em um chat ou texto longo, por exemplo.
Sthefânia Mafalda
em andamento..
Exemplos de estruturas de dados simples e notação de fatias:
i = 0 # inicio
f = 10 # final
s = 2 # passo (step)
sequence[i:f:s]
Com código exemplo loadImage()
Exemplo:
def setup():
size(400, 400)
global imagem
imagem = loadImage("image.jpg")
def draw():
background(255)
image(imagem, 0, 0)
OBSERVAÇÕES:
Arrastar a imagem em JPG para a tela do processing.
Verificar se a imagem está na pasta data (Command + K)
Colocar no lugar de "image.jpg" o nome do arquivo que escolher
exemplo:
from slider.py import Slider
def setup():
global seed, t, a, ang
seed = int(random(1000))
print(seed)
size(500, 500)
t = Slider(10, 100, 50)
t.position(10, 20)
a = Slider(0, 360, 45)
a.position(10, 60)
def draw():
global ang
randomSeed(seed)
background(240, 240, 200)
tamanho = t.value()
ang = radians(a.value())
translate(250, 300)
galho(tamanho)
def galho(tamanho):
reducao = .8
strokeWeight(tamanho / 10)
line(0, 0, 0, -tamanho)
if tamanho > 5:
pushMatrix()
translate(0, -tamanho)
rotate(ang)
# stroke(255, 0, 0)
galho(tamanho * reducao - random(0, 2))
rotate(-ang * 2)
galho(tamanho * reducao - random(0, 2))
popMatrix()
classe no arquivo slider.py
https://github.com/villares/python-sliders/blob/master/RotatingTriangles/slider.py
class Slider:
def __init__(self, low, high, default):
"""
slider has range from low to high
and is set to default
"""
self.low = low
self.high = high
self.val = default
self.clicked = False
self.label = '' # blank label
self.w, self.h = 120, 20
def position(self, x, y):
"""slider's position on screen"""
self.x = x
self.y = y
# the position of the rect you slide:
self.rectx = self.x + map(self.val, self.low, self.high, 0, self.w)
self.recty = self.y
def value(self):
"""updates the slider and returns value"""
pushStyle()
pushMatrix()
resetMatrix()
rectMode(CENTER)
# gray line behind slider
strokeWeight(4)
stroke(200)
line(self.x, self.y, self.x + 120, self.y)
# press mouse to move slider
if mousePressed and dist(mouseX, mouseY, self.rectx, self.recty) < self.h:
self.rectx = mouseX
# constrain rectangle
self.rectx = constrain(self.rectx, self.x, self.x + self.w)
# draw rectangle
strokeWeight(1)
stroke(0)
fill(255)
rect(self.rectx, self.recty, self.w / 12, self.h)
self.val = map(
self.rectx, self.x, self.x + self.w, self.low, self.high)
# draw label
fill(0)
textSize(10)
textAlign(CENTER, CENTER)
text(int(self.val), self.rectx, self.recty + self.h)
# text label
textAlign(LEFT, CENTER)
text(self.label, self.x + self.w + self.h, self.y)
popMatrix()
popStyle()
return self.val
Qual seria o comando para a quebra de linha, evitando a repetição do uso do print?
Exemplo:
def setup():
print('Senhora Aline')
print('sua fatura vence no dia 01/12')
A minha dúvida está voltada principalmente para parágrafos grandes.
Tanto em termos interativos, para o usuário poder dar o scroll, quanto em termos de animação de texto quanto ele cabe numa caixa.
Oi Alem tudo bem?
Desculpa estou a louca dos issues rs
Fui ler esse daqui:
https://abav.lugaralgum.com/material-aulas/Processing-Python/pixels.html
E tem dois códigos que não rodaram aqui e retornaram o mesmo erro, dizendo que estava faltando algo na sintaxe mas não consegui descobrir o que:
Os dois códigos que apresentação esse erro estão nessa parte:
Como anexar uma imagem junto ao código para ter uma prévia sem precisar inserir o código no processing ?
def setup():
size(500, 500)
def draw():
strokeWeight(5)
background(200, 0, 0)
L, l = 150, 100
M, m = L / 2, l / 2
translate(200, 200)
beginShape()
vertex(-M, -M)
vertex(-m, 0)
vertex(-M, +M)
vertex( 0, +m)
vertex(+M, +M)
vertex( m, 0)
vertex(+M, -M)
vertex( 0, -m)
endShape(CLOSE)
exportação básica (um frame)
exportação de múltiplas páginas
exportação de grandes formatos
exportação com acumulação de vários frames
Um bom exemplo com partículas que fogem do mouse...
Quando criamos um código que depende de intervenção humana para realizar uma interação, é possível exportar esse código como um arquivo que não dependa do processing para ser executável? Tipo um .exe?
No código os gráficos sofrem influência do movimento do mouse, seria possível que ao invés disso, ao incluir música os gráficos mudarem por influencia das batidas da música?
def setup():
size(600,600)
noFill()
strokeWeight(3)
colorMode(HSB)
t = 0 #time veriable
NUM_TRIS = 90
def draw():
global t
background(0)
translate(width/2, height/2)
NUM_TRIS = map(mouseX,0,width,3,120)
for i in range(int(NUM_TRIS)):
rotate(radians(360/NUM_TRIS))
pushMatrix() #save this orientation
translate(200,0)
offset= map(mouseY,0,height,1,10)
rotate(radians(t+offset*i*360/NUM_TRIS))
stroke(3*i,255,255)
tri(100)
popMatrix() #return to saved orientation
t +=0.5
def tri(length):
'''Draws an equilateral triangle of given
length around the center of the triangle'''
triangle(0,-length, -length*sqrt(3)/2,length/2,
length*sqrt(3)/2,length/2)
`
Código retirado do tutorial: https://www.youtube.com/watch?v=gLt1cN3CDDY&t=26s
saveFrame("nome_arquivo.png")
####
no nome do arquivoAlem das alternativas a arrays que foram mostrados em aula, há a possibilidade de utilizar uma matriz para criar shapes em movimento?
No texto Como exportar uma imagem, é dito que adicionando caracteres "#" no final do nome do arquivo, ele é salvo com o número do frame. Porém, se já existir um arquivo salvo com esse nome, ele é substituído. Existe alguma maneira de impedir isso?
Eu pensei em adicionar um número randômico no final do nome do arquivo, mas isso não é 100% seguro porque mesmo um número randômico pode se repetir. Outra coisa que eu pensei seria adicionar um código que combine data e hora de criação do frame no final do arquivo.
Resolvi a issue #44 acrescentando um arquivo assets/css/syntax.css
qualquer, mas ainda não está muito bom:
```pyde
só ```python
(culpa do tal Rouge talvez...)Entre e compare:
http://abav.lugaralgum.com/material-aulas/Processing-Python/escopo_py.html
https://github.com/villares/material-aulas/blob/master/Processing-Python/escopo_py.md
Alguém quer me ajudar com isso?
Existe a possibilidade de inserirmos uma imagem no python para criar um background?
Ex: Importar uma imagem natalina e coloca-la de fundo.
Tá faltando falar mais sobre isso
https://github.com/villares/material-aulas/blob/master/Processing-Python/mais_sobre_cores.md
Crie uma conta no GitHub
Issues são a forma de registrar problemas e desejos de aprimoramento para um projeto. Criar uma issue pode ser já uma boa contribuição para um projeto.
Para criar uma issue:
New issue
.fazer um fork (que é um repositório com o material na sua conta do GitHub)
criar um branch (com um nome sintético da contribuição)
como modificar arquivos
como subir arquivos (em geral)
como criar um arquivo Markdown (.md)
[__](__)
```python ___```
ou no meio da frase ``
![__](__)
como fazer um Pull Request (PR)
CLOSE
quando terminar de fazer as modificações pedidas!!!Como atualizar o seu fork em relação ao repositório de origem?
Fazer um exemplo ilustrado
Por link para o tutorial
https://py.processing.org/tutorials/transform2d/
OU (BONUS POINTS!) traduzir o tutorial inteiro.
Pensando em design e manipulação de imagem, fiquei curiosa se seria possível salvar a imagem em camadas para poder ser feita edição posteriormente :)
pode ser uma boa mostrar o collections.Counter
e fazer uma nuvem de palavras
# Não sei se é um bom exemplo
estados = {'MG': {'capital':'Belo Horizonte', 'pop': 80000000},
'AC': {'capital':'Rio Branco', 'pop': 880000},
'RJ': {'capital':'Rio de Janeiro', 'pop': 70000000},
}
estados['SP'] = {'capital':u'São Paulo', 'pop':44000000}
chave = 'AC'
if estados.get(chave):
resultado = estados[chave]['pop']
print(resultado)
<<Documentar como redimensionar a tela de desenho e boas práticas de levar em consideração um tamanho variável de tela no código ("design responsivo")>>
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.