segunda-feira, 25 de agosto de 2014

Aula 06 - Lançamento Balístico

Continuamos o simulador iniciado na quinta aula. Implementamos o movimento retilíneo uniformemente variável (MRUV), que difere-se do MRU por sofrer efeito de uma nova variável: a aceleração. A aceleração é a variação da velocidade do corpo conforme o tempo. No MRUV, a aceleração é constante.

Para reproduzir o lançamento balístico, precisamos analisar o movimento de um corpo lançado para o alto. A velocidade vertical deste corpo sofre efeito da gravidade, aceleração de 9,8 m/s² com direção vertical no sentido do chão (MRUV). A velocidade horizontal do corpo, desprezando-se o atrito do ar, não sofre qualquer efeito, portanto é constante (MRU).

O lançamento balístico é a junção destes dois movimentos: MRU na horizontal e MRUV na vertical. O resultado da aplicação das fórmulas matemáticas destes movimentos no simulador pode ser conferido aqui:


terça-feira, 19 de agosto de 2014

Aula 05 - MRU

Cálculos científicos foram um dos maiores motivadores do início do desenvolvimento da computação eletrônica. O ENIAC, nascido durante a Segunda Guerra, é creditado como o primeiro computador digital de grande escala e seu objetivo primário era realizar cálculos balísticos. Mesmo com uma capacidade de processamento obviamente ínfima se comparado aos computadores atuais, o ENIAC era capaz de fazer contas muito mais rapidamente do que humanos fariam.


As simulações virtuais foram o avanço dos cálculos eletrônicos. Hoje as máquinas permitem visualizar o resultado e o processamento de cálculos complexos.

Explorando esta possibilidade, desenvolveremos um simulador de balística no Processing. Cada aula acrescentará uma característica do cálculo e de início trabalhamos com movimento retilíneo uniforme (MRU), ou o movimento de um móvel em velocidade constante em relação a um referencial ao longo de uma reta.

O resultado foi este:



domingo, 17 de agosto de 2014

Aula 04 - Repetições

Repetições em programação são códigos executados diversas vezes seguidas caso determinada condição seja atendida. As repetições mais comuns na maioria das linguagens de programação são while e for. Para desenhar uma linha de quadrados, como no exemplo abaixo, repete-se o desenho do quadrado 10 vezes utilizando o eixo X como parâmetro.


Para criar uma imagem em halftone no Processing, pode-se executar um processo parecido, desenhando círculos cujo diâmetro muda conforme o eixo Y:



Outro exemplo, levando em conta a distância de cada ponto em relação ao ponteiro do mouse (e um pouco de noise):





segunda-feira, 11 de agosto de 2014

Aula 03 - Bônus

A função do Batman. No Google:

Com alguns exageros:


Aula 03 - Funções

Funções matemáticas são leis que geram um elemento y correspondente para cada valor x, o velho f(x). O resultado de um conjunto de valores processados por uma função podem ser exibidos em gráficos, e isso torna as coisas bem mais interessantes:


O gráfico acima é uma imagem do gráfico gerado pelo buscador Google quando se insere a função em destaque na caixa de pesquisa.

Que tipo de desenho poderíamos fazer com uma função bem mais simples? Uma onda senoide... Ou duas ondas inversas. Ou melhor, uma sequência de DNA!


Aula 01 - Bônus

Só o exemplo da aula com modificações.


quinta-feira, 7 de agosto de 2014

Aula 02 - Exemplos

O site do Processing conta com uma variedade de exemplos técnicos. Eles apresentam funcionalidades pontuais e são ótimos para entender e conhecer as capacidades da linguagem.

Modificando parâmetros e acrescentando algumas linhas de código, pode-se modificar um exemplo como este em algo bem mais irreverente:







O exemplo original apresenta um círculo que segue o cursor em uma trajetória suavizada. A velocidade de aproximação diminui conforme a proximidade, pois o deslocamento por frame é a diferença entre a posição do círculo e do cursor (multiplicado por uma razão pré-determinada).

Na modificação, o primeiro passo foi remover o redraw do background. Agora o background só é desenhado 1 vez, no setup. O círculo, que antes tinha apenas preenchimento (fill), agora tem apenas contorno (stroke), de 22 pixels. E a cor do contorno muda sempre que a posição do círculo muda. A cor é o resultado de três variáveis (RGB), onde R é modificado pela posição X do círculo, B pela posição Y, e G pela hipotenusa. Se o mouse estiver pressionado, as variáveis RGB são calculadas aleatoriamente.