Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Processing Aula Zero

Aula introdutória de programação em processing, preparada em colaboração com o professor Edson Mélo. Links: fpgaparatodos.com.br http://designshack.net/articles/javascript/an-designers-introduction-to-programming/ http://meandering-through-mathematics.blo
by

Felipe Mesquita

on 19 June 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Processing Aula Zero

Introdução a Processing
"Processing seeks to ruin the careers of talented designers by tempting them away from their usual tools and into the world of programming and computation. Similarly, the project is designed to turn engineers and computer scientists to less gainful employment as artists and designers."
Formas Básicas
O Ambiente de Desenvolvimento Integrado (IDE)
Executar sketch
Parar Execução
Nova sketch
Abrir
Salvar
Exportar
Ordem de desenho:
Stroke (contorno)
Função

strokeWeight()
Espessura do contorno
Esta função configura a espessura do contorno de tudo que for desenhado abaixo dela no código.
Seu unico parametro é o valor inteiro do tamanho do contorno em pixels.
Cores
Tons de cinza
Função

fill()
Valor em escala de cinza
Esta função configura a cor do preenchimento de tudo que for desenhado abaixo dela no código.
Seu unico parametro é o valor inteiro do tom de cinza desajado
Função
stroke
()
Valor em escala de cinza
Esta função configura a cor (para não ser confundida com strokeWeight(), que determina a espessura) do contorno de tudo que for desenhado abaixo dela no código.
Seu unico parametro é o valor inteiro do tom de cinza desajado
Esquema de cores
R
G
B
Trabalhando com cores as funções fill() e stroke() passam a ter tres argumentos; um para cada componente da cor(vermelho, azul e verde).
+
=
+
//Comentários
Podem ser escritos comentários que não executados ao rodar o programa para facilitar o entendimento do que está sendo feito ou para de forma rapida testarmos o programa sem uma determinada instrução.
Função
size()
Determina o tamanho da janela da sketch em pixels. Recebe como argumentos a dimensão horizontal e a vertical da janela.
Seletor de cores
No menu "tools" ou "ferramentas" está disponivel o seletor de cores para auxiliar na escolha de valores para as cores a serem usadas no programa.
Variáveis
Um uso primario de variaveis é para evitarmos de nos repetirmos mutio pelo código. No exemplo ao lado os valores repetidos foram determniados uma só vez.
No segundo exemplo, partindo do codigo do exemplo anterior, pudermos facilmente alterar os valores para todos as elipses do programa apenas alterando o valor das variaveis.
Variaveis Especiais
No processing, temos algumas variaveis especiais que são reservadas para valores do sistema, como a altura e largura da janela.
= 800
= 600
#include <windows.h>

#include <cmath>

#define ROUND(a) ((int) (a + 0.5))

/* set window handle */

static HWND sHwnd;

static COLORREF redColor=RGB(255,0,0);

static COLORREF blueColor=RGB(0,0,255);

static COLORREF greenColor=RGB(0,255,0);


void SetWindowHandle(HWND hwnd){

sHwnd=hwnd;

}


/* SetPixel */

void setPixel(int x,int y,COLORREF& color=redColor){

if(sHwnd==NULL){

MessageBox(NULL,"sHwnd was not initialized !","Error",MB_OK|MB_ICONERROR);

exit(0);

}

HDC hdc=GetDC(sHwnd);

SetPixel(hdc,x,y,color);

ReleaseDC(sHwnd,hdc);

return;

}


void ellipsePlotPoints(int xCenter, int yCenter, int x, int y){

setPixel(xCenter + x, yCenter + y);

setPixel(xCenter - x, yCenter + y);

setPixel(xCenter + x, yCenter - y);

setPixel(xCenter - x, yCenter - y);

}

void drawEllipse(int xCenter, int yCenter, int Rx, int Ry){

int Rx2 = Rx*Rx;

int Ry2 = Ry*Ry;

int twoRx2 = 2 * Rx2;

int twoRy2 = 2 * Ry2;

int p;

int x = 0;

int y = Ry;

int px = 0;

int py = twoRx2 * y;


ellipsePlotPoints(xCenter, yCenter, x, y);


/* For Region 1 */

p = ROUND(Ry2 - (Rx2*Ry) + (0.25) * Rx2);

while(px < py){

x++;

px += twoRy2;

if(p < 0){

p += Ry2 + px;

}else{

y--;

py -= twoRx2;

p += Ry2 + px - py;

}

ellipsePlotPoints(xCenter, yCenter, x, y);

}


/* For Region 2*/

p = ROUND(Ry2 * (x + 0.5)*(x + 0.5) + Rx2 * (y - 1)*(y - 1) - Rx2 * Ry2);

while(y > 0){

y--;

py -= twoRx2;

if(p > 0){

p += Rx2 - py;

}else{

x++;

px += twoRy2;

p += Rx2 - py + px;

}

ellipsePlotPoints(xCenter, yCenter, x, y);

}


}

/* Window Procedure WndProc */

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){

switch(message){

case WM_PAINT:

SetWindowHandle(hwnd);

drawEllipse(200, 200, 100, 50);

break;

case WM_CLOSE: // FAIL THROUGH to call DefWindowProc

break;

case WM_DESTROY:

PostQuitMessage(0);

return 0;

default:

break; // FAIL to call DefWindowProc //

}

return DefWindowProc(hwnd,message,wParam,lParam);

}



int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow){

static TCHAR szAppName[] = TEXT("Ellipse");

WNDCLASS wndclass;

wndclass.style = CS_HREDRAW|CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;


// Register the window //

if(!RegisterClass(&wndclass)){

MessageBox(NULL,"Registering the class failled","Error",MB_OK|MB_ICONERROR);

exit(0);

}


// CreateWindow //

HWND hwnd=CreateWindow(szAppName,"Mid Point Ellipse Drawing - Programming Techniques",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

NULL,

NULL,

hInstance,

NULL);

if(!hwnd){

MessageBox(NULL,"Window Creation Failed!","Error",MB_OK);

exit(0);

}

// ShowWindow and UpdateWindow //

ShowWindow(hwnd,iCmdShow);

UpdateWindow(hwnd);


// Message Loop //

MSG msg;

while(GetMessage(&msg,NULL,0,0)){

TranslateMessage(&msg);

DispatchMessage(&msg);

}


/* return no error to the operating system */

return 0;

}

"Note: to run this code in your machine with Code::blocks IDE, add a link library libgdi32.a (it is usually inside MinGW\lib )"
Processing
C/C++ no Code Blocks
Desenhando uma Elipse
http://www.programming-techniques.com/2012/01/drawing-ellipse-with-mid-point-ellipse.html
Codigo C/C++ disponivel em:
Matematica Basica:
Loop
for()
Este loop sera executado enquanto a condiçao de teste for verdadeira, realizando em cada execuçao um "update" da variavel controlada pelo for().
for
(
Inicialização
; Condição; Incremento) {
comandos
;
}
Operadores Matematicos:
+ Adiçao
- Subtraçao
* Multiplicaçao
/ Divisao
= Atribuiçao
Diferente de todo o código que escrevemos até agora, onde cada linha era executada uma vez, o código dentro do bloco de um loop for() ou while() será executatdo até que uma condição seja atendida. Esta condição pode ser algo como o valor de uma variavel ultrapassar um limite predeterminado.
Estruturas de repetição
Operadores Relacionais:
> Maior
< Menor
>= Maior ou igual
<= Maior ou igual
== Igual
!= Diferente
Exemplos de estrutura

for()

Processing e
Arduino
Repetição
Repetição
Repetição
Repetição
Repetição
Repetição
Repetição
Tipos de variáveis
Mouse
Estruturas de decisao
P o r f a z e r . . .
Matriz 2D de pontos aleatorios
Funçoes novas no codigo:
random()
Gera um valor aleatorio (float) de zero ate o valor do parametro. random(5) pode ser qualquer valor de zero ate cinco.
int()
Transforma o parametro em um valor inteiro apenas ignorando a parte decimal.
x=int(3.99) resultaria em x=3
No caso utilizada para fixar as linhas e colunas em posicoes inteiras, evitando que os pontos fossem gerados em qualquer lugar da sketch.
setup()
e
draw()
Full transcript