%0/"1&2$&$3*$34+/!+&.05#!.62!+& #*+!&,&'-&"$.$"#/$&

Documentos relacionados
Workshop Processing: Visualização de Dados e Interatividade

Manual Processamento de Imagem. João L. Vilaça

Implementando plugins para o ImageJ

Desenho e Apresentação de Imagens por Computador

Primitivas Gráficas. Prof. Márcio Bueno Fonte: Material do Prof. Robson Pequeno de Sousa e do Prof.

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

JSP - ORIENTADO A OBJETOS

Desenho de Segmentos de Recta

Atividade: matrizes e imagens digitais

Computação Gráfica 04

Introdução ao Matlab. 1 Algumas regras e comandos do Matlab. 3 de março de Docente Responsável : Prof. Dr. Antônio C. Roque

Trabalho 2 Fundamentos de computação Gráfica

julio lucio 2015 outono-inverno

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Pesquisa e organização de informação

Arduino e Processing. Professor: Paulo Marcos Trentin Escola CDI Videira

Concepção e Fabrico Assistidos por Computador

Professor: Douglas Sousa Cursos de Computação

Pedro Vasconcelos DCC/FCUP. Programação Funcional 12 a Aula Jogos usando Gloss

Tipos de Dados Simples

COMPUTAÇÃO GRÁFICA. Rasterização e Preenchimento de Regiões. MARCO ANTONIO GARCIA DE CARVALHO Fevereiro de Computação Gráfica

Rotação e Interpolação

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Algoritmos e Programação

Introdução a Computação

Ciências da Computação Disciplina:Computação Gráfica

Algoritmos e Programação Estruturada

Laboratório de Sistemas e Sinais L1: Matrizes, Sons e Imagens

Introdução a Programação de Jogos

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

Curso rapidíssimo de Processing

Orientação a Objetos

Arquitetura de Rede de Computadores

Detecção e Rastreamento de Objetos coloridos em vídeo utilizando o OpenCV

CONSERVAÇÃO DA ENERGIA MECÂNICA

INF 1620 P1-10/04/02 Questão 1 Nome:

ferramentas da imagem digital

Prof. Rafael Gross.

Informática para Ciências e Engenharias 2014/15. Teórica 5

Mini-Projecto de PAII Ano Lectivo 2000/01

4. Curvas planas. T = κn, N = κt, B = 0.

CorelDRAW UM PROGRAMA DE DESIGN

Roteiro 1: Dados, variáveis, operadores e precedência

OURO MODERNO Designer Gráfico APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

Potenciação no Conjunto dos Números Inteiros - Z

Marco Aurélio Gonçalves da Silva Orientador: Anselmo Antunes Montenegro

Module Introduction. Programação. Cap. 4 Algoritmos e Programação Estruturada

Imagem digital. Unidade 3

Análise de Sistemas Não Lineares por Plano de Fase Recorrendo ao MATLAB

Transformada de Hough. Cleber Pivetta Gustavo Mantovani Felipe Zottis

Thales Trigo. Formatos de arquivos digitais

Metodos de Programação

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Introdução aos Sistemas da InformaçãoAula 4 p. 1

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

6. Geometria, Primitivas e Transformações 3D

/* * p_feelinks_teia * Para o Processing * Comunicação NET SERVER * Grupo dos Cotas */

Keeper of Knowledge. Capítulo 1 Conceitos Básicos do Java

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

O Processo de Programação

Arquivos de Textos no C - Básico

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores

Resolução de problemas e desenvolvimento de algoritmos

Departamento de Matemática - UEL Ulysses Sodré. Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

APLICATIVOS GRÁFICOS (AULA 4)

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Algoritmos e Programação II. Sobrecarga

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Programação. Folha Prática 3. Lab. 3. Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved.

Sumário Introdução Fundamentos Introdução ao IDE Delphi A Linguagem Projetos e Configurações do Ambiente...

3 Classes e instanciação de objectos (em Java)

COMO PROGRAMAR SEU TIME

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Conceitos básicos da linguagem C

ESTRUTURA CONDICIONAL

Exame de Introdução à Computação Exame de Recurso. 20 de Julho 2006, 9:30-11:30 (Duração: 2 horas) Universidade do Algarve

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Programação de Computadores e Robocode.

Arquitetura de Rede de Computadores

Departamento: Matemática Curso: Eng a Madeiras Ano: 1 o Semestre: 2 o Ano Lectivo: 2006/2007. Aula prática n o 1 - Introdução ao MATLAB

Prova de conhecimentos. Duração - 90 minutos. Grupo I Conhecimentos Gerais

Programação Gráfica Parte 2 Versão em C 2006 PUCPR Tutoria de Jogos 1º Ano

OpenCV.

Curso de Linguagem C

ENG1000 Introdução à Engenharia

Scale-Invariant Feature Transform

Capítulo II Imagem Digital

e à Linguagem de Programação Python

POO Programação Orientada a Objetos. Classes em Java

CURSO DE PROGRAMAÇÃO EM JAVA

PROVA MODELO Duração da prova: 120 minutos

João Manuel R. S. Tavares / JOF

Transcrição:

!"#$%'()( %0/"12$$3*$34+/!+.05#!.62!+ #*+!,'-"$.$"#/$ 43#3)56(76'()( 48039:/;<(=>?8#/" @0/A$""/0; BC-2BBDEF!+GEGFFBEHIG #$.+)789:;<==>?@ 8<9@A?BC ) 6 (3 Valores) Implemente em Processing um método (função) que permita determinar se dois objectos em movimento, num campo, O1 e O2 (bolas) estão em colisão. Notas para a implementação: Os dois objectos têm raio r1 e r2 As esquações que descrevem a trajectória dos objectos são dadas por: Objecto 1: Objecto 2: " ox 1 = ox 1 + vxo 1 # $ oy 1 = oy 1 + vyo 1! " ox 2 = ox 2 + vxo 2 # $ oy 2 = oy 2 + vyo 2 Em que Vxo1,Vxo2,Vyo1,Vyo2 representam as componentes do vector velocidade para o objecto 1 e 2.! Resolução: // Exame de TGAI Setembro // Correcção // Jorge Mota, 2010 // Pergunta 1 - Resolvida com programação simples float r1; // raio1 float r2; // raio 2 float o1x,o2x,o1y,o2y; float vxo1,vxo2,vyo1,vyo2; color c; //Move as bolas no canvas na janela gráfica void move() { o1x += vxo1; // Incremento x objecto 1 o1y += vyo1; // Incremento y o2x += vxo2; // Incremento x objecto 2 o2y += vyo2; // Incremento y // Detecção com as paredes horizontais if (o1x > width o1x < 0) { vxo1 *= - 1;

if (o2x > width o2x < 0) { vxo2 *= - 1; // Detecção com as paredes verticais if (o1y > height o1y < 0) { vyo1 *= - 1; if (o2y > height o2y < 0) { vyo2 *= - 1; // Função de realce void highlight1() { c = color(0,150); // Desenhar a bola void desenha_bola() { stroke(0); fill(c); ellipse(o1x,o1y,r1*2,r1*2); ellipse(o2x,o2y,r2*2,r2*2); // Repor a cor da bola c = color(100,50); // Função que devolve verdadeiro ou falso se as bolas se interceptam // Testa se a distnacia entre os dois centros é menor que a soma dos raios das bolas boolean intersecta(float r1, float x1, float y1, float r2, float x2, float y2 ) { // Os objectos tambem podem ser passados como parametros float distancia = dist(x1,y1,x2,y2); // Calcular a distância entre centros // Compara a distancia entre as soma dos raios if (distancia < r1 + r2) { return true; else { return false; void setup() { size(400,400); color c = color(100,50); smooth(); // Initialize bolas r1=50; r2=30; vxo1 = random( -5,5); vxo2 = random( -5,5); vyo1 = random( -5,5);

vyo2 = random( -5,5); o1x=200; o2x=200; o1y=200; o2y=200; void draw() { background(255); // Mover e mostrar as bolas move(); if (intersecta(r1,o1x,o1y,r2,o2x,o2y)) { highlight1(); desenha_bola(); #$.+'7#9C?=D:9ECFG<=?:<=HCF: 8<9@A?BC ' (3 valores) A seguinte expressão representa a matriz genérica de transformação a 3D, capaz de executar a operação de rotação sobre o centroíde da figura (Paralelipipedo), em torno do eixo dos x (horizontal direita) de um ângulo de 30 graus, conforme ilustrado na figura:

Represente em MATLAB esta operação passo a passo. >>To=[1 0 0-12.5; 0 1 0-7.5; 0 0 1-5; 0 0 0 1] >>Rx=[1 0 0 0 ; 0 cos(30) sen(30) 0; 0 sen(30) cos(30) 0; 0 0 0 1] >>Tp=[1 0 0 12.5; 0 1 0 7.5; 0 0 1 5; 0 0 0 1] >> MT=To*Rx*Tp #$.+I7%:9 Pergunta 4 (2 valores) Diga como poderia codificar a seguinte cor, representada pelas suas componentes RGBA, de 32 Bits, em Processing? R!0xAA G!0x99 B!0x10 A!0xFF Em processing se pretendermos codificar o canal alfa temos de converter a representação Hexadecimal para decimal. Para uma representação apenas RGB bastaria o seguinte: Color cor; void setup() { cor=#aa9910; // para atribuir o alfa teriamos que o fazer nos commandos de cor fill, background e stroke mas em decimal fill(cor, 255); Pergunta 5 (2 valores) Considere que a seguinte formula representa a luminância de uma cor representada pelas suas componentes RGB : Y=0.2999R+0.59G+0.114B Implemente em Processing um programa que permita converter um imagem bitmap colorida em monocromática usando esta equação. // Resposta Pergunta 5 do teste de TGAI JULHO 2010 ISTEC 2010 // Implemente em Processing um programa que permita converter um imagem bitmap colorida em monocromática usando esta equação. // Y=0.2999R+0.59G+0.114B

// declarar um objecto da classe imagem PImage imagem; void setup() { imagem = loadimage("foto.jpg"); // inicialiar a janela gráfica capaz de mostrar a dimensão da imagem size(imagem.width,imagem.height); // Esta foto deve estar na pasta do programa em processing uma numa subpasta chamada data // evita que a função Draw se repita noloop(); void draw() { loadpixels(); // Devemos chamar o loadpixels da classe PImage já que vamos ler os pixeis. imagem.loadpixels(); for (int y = 0; y < height; y++ ) { for (int x = 0; x < width; x++ ) { int loc = x + y*width; // The functions red(), green(), and blue() pull out the three color components from a pixel. float r = red(imagem.pixels [loc]); float g = green(imagem.pixels[loc]); float b = blue(imagem.pixels[loc]); // Usa a formula da luminâcia para converter o RGB de cada pixel em Y //Coloca os três canais com o mesmo valor r=r*0.2999+0.59*g+0.114*b; g=r; b=r; // Atribui o novo valor a cada pixel da imagem imagem.pixels[loc] = color(r,g,b); updatepixels(); //Desenha a imagem em tons de cinza para a formula dada image(imagem, 0,0); #$.+J7/C=B<9>KCFL:M<%A9NC= Pergunta 6 (2 valores) Defina de forma simples spline? Uma spline é uma curva definida matematicamente por dois ou mais pontos de controle. Os pontos de controle que ficam na curva são chamados de nós. Os demais pontos definem a tangente à curva em seus respectivos nós. Por exemplo, a curva de Bézier definida pelos pontos (A, B, C e D) é delimitada pelos nós A e D e nesses nós, a curva é tangente ao vectores AB e DC respectivamente. Variando as posições dos pontos B e C, a curva apenas varia sua inclinação, mas continua passando pelos pontos A e D. As splines podem ser divididos em duas categorias: Splines de interpolação que passam por todos os pontos de controle Splines de aproximação que passam perto de todos os pontos de controle

#$.+O7/CHB:9 Pergunta 7 (3 valores) Implemente em Raptor e RaptorGraph um programa que rasterize uma linha no primeiro octante usando um algoritmo DDA. O algoritmo DDA é conhecido pelo nome de Digital Differencial Analyser, ou analisador Diferencial Digital, e baseia-se na aplicação directa das formulas que descrevem uma linha recta no plano. Assim, para traçar um segmento de recta que vai do ponto P1 ao ponto P2, pode considerar-se o seguinte algoritmo em linguagem de alto nível: 1 Pinta-se o pixel do ponto P1, isto é o de coordenadas (x1,y1) e atribuem-se as variaveis de trabalho (x,y) os valores (x1,y1). 2 Passa-se para o pixel seguinte (x,y) em que x! x + 1 e y!y+m, e pinta-se o pixel. 3 Repete-se a passagem 2 até que o ponto P2 seja alcançado.

Pergunta 8 (3 Valores) Implemente em Raptor e RaptorGraph um programa que desenhe a seguinte função: Representação visual:

#$.+P7%:?;<>B:=+HQ>;CFG<=<4>=B:9>CMC%:EHABCFL:*9RD>;C Pergunta 8 (2 valores) Commpare as caracteristicas do ambiente XNA com o ambiente Processing em termos de aplicações gráficas no dominio dos videojogos 2D. Enumere Vantagens e Inconvenientes nas diversas vertentes que abordar. O XNA é um ambiente desenvolvido pela Microsoft para os seus sistemas operativos em computadores, consolas de jogos (XBOX 360) e dispositivos móveis. Isto significa que não funciona em outros ambientes como OSX, Linux ou UNIX para enumerar alguns. É um ambiente especialmente preparado para o desenvolvimento de Jogos a 3D, tem incluido no seu workflow as funções para incluir e usar recursos 3D, criar o ambiente de um motor gráfico e usar como linguagem de referência o C# desenvolvido pela Microsoft. Como está preparado para gráficos 3D possui implementado classes de objectos para criar camaras, luzes e importar recursos 3D com facilidade. Isto não impede que possamos por exemplo desenvolver jogos a 2D, já que possui igulamente recursos para tal. Como é um ambiente fechado só pode ser desenvolvido pela própria Microsoft, embora seja gratuito. O Processing é um ambiente desenvolvido em Java no MIT, destinado a não programadores (Artistas e Criativos), que implementa um IDE de desenvolvimento simplificado de forma a permitir muito fácilmente a aprendizagem da linguagem e do seu ambiente de trabalho. É Opensource e multiplataforma o que significa que pode ser portado para qualquer SO ou processador onde exista Java (Quase Todos). Especialmente preparado para gráficos 2D possui muitas bibliotecas desenvolvidas por terceiros (libraries) e novas são criadas constantemente. É usado por pessoas sem uma preparação muito avançada em engenharia de software especialemente em artes visuais. Tal como o XNA é gratuito.