Prof. MSc André Yoshimi Kusumoto
[email protected]
Primitivas gráficas em duas dimensões
Matrizes em Computação Gráfica
• Todas as transformações geométricas podem ser representadas na forma de equações
• As matrizes são muito utilizadas porque o seu uso e o seu entendimento é menos complexo do que equações algébricas
• Devido ao padrão de coordenadas usualmente adotado para
representação de pontos no plano (x,y) e no espaço tridimensional (x,y,z) é mais conveniente manipular esses pontos por matrizes quadradas 2x2 ou 3x3 elementos.
Primitivas gráficas em duas dimensões
Pontos, vetores e matrizes
• Dado um sistema de coordenadas cartesianas, é possível definir pontos e objetos pelas suas coordenadas
• Nos espaços bidimensionais ou nos objetos planos, duas coordenadas caracterizam um ponto. Para objetos tridimensionais, três coordenadas são necessárias.
• Ex.
• Para definir um ponto, usa-se a sua distância em relação a cada um dos eixos do sistema de coordenadas
Pontos, vetores e matrizes
• Os vetores e matrizes não são limitados a dois ou três elementos.
Primitivas gráficas em duas dimensões
Matriz Quadrada 5x5 Matriz 2x3
Operações de Matrizes
• Adição e subtração – matrizes de mesma dimensão
• Multiplicação por um valor constante
• Transposta – a matriz transposta, simbolizada pela letra T sobrescrito, tem como matriz resultante da troca dos valores de suas linhas e colunas.
Primitivas gráficas em duas dimensões
Operações de Matrizes
• Multiplicação de matrizes – desde que o número de colunas da primeira seja igual ao níveis de linha da segunda. Isto é, uma matriz de dimensão m x n pode ser multiplicada por outra matriz de dimensão n x p. A matriz resultante será de dimensão m x p.
• Considere os seguintes vetores e verifique
Primitivas gráficas em duas dimensões
• Podemos utilizar diferentes sistemas de coordenadas para descrever os objetos
• Serve para dar uma referência em termos de medida do tamanho e posição dos objetos
• Coordenadas Polares – descritas por raio (r) e ângulo (θ)
• Coordenadas Esféricas – descritas por raio (r) e dois ângulos (θ e ψ)
• Coordenadas Cilíndricas – descritas por raio (r), ângulo (θ) e comprimento (P) • Esféricas e Cilíndricas são sistemas que representam pontos em 3D
• Um determinado sistema de coordenadas é denominado Sistema de Referência se for um sistema de coordenadas cartesianas para alguma finalidade específica.
• Assim, sua definição deve abranger dois aspectos principais:
• A unidade de referência básica
• Os limites extremos dos valores aceitos para descrever os objetos
Sistema de Referência do Universo (SRU)
• Coordenadas do universo, ou do mundo.
• Utilizado para descrever os objetos em termos das coordenadas utilizadas pelo usuário em determinada aplicação
• Cada tipo de aplicação especifica o seu universo de trabalho próprio
• Ex. CAD (metros ou centímetros), CAD Mecânica de precisão (milímetros ou nanômetros)
• Cada um como seus limites extremos (coordenadas mínimas e máximas do universo)
Sistema de Referência do Objeto (SRO)
• Cada objeto é um miniuniverso individual, ou seja, cada objeto tem suas particularidades
descritas em função de seu sistema
• Muitas vezes coincide com o centro do sistema de coordenadas
• Ex. na modelagem de sólidos, este centro é conhecido como pivô.
Sistema de Referência Normalizado (SRN)
• Trabalha com coordenadas normalizadas, com valores entre 0 e 1, onde 0 ≤ x ≤ 1 e 0 ≤ y ≤ 1, sendo x e y, as coordenadas horizontais e verticais possíveis.
• Serve como um sistema de referência intermediário entre SRU e SRD
• Principal aplicação é tornar a geração das imagens independente do seu dispositivo
• Pois, coordenadas do universo são convertidas para um sistema de coordenadas padrão normalizado.
Sistema de Referência do Dispositivo (SRD)
• Utiliza coordenadas que podem ser fornecidas diretamente para um dado dispositivo de saída específico
• Ex. em um vídeo, esses valores podem ser o número máximo de pixels que podem ser acesos (640x480, 800x600, etc) ou podem indicar a resolução especificada em determinada
configuração do sistema operacional (800x600x32bits – True Color)
• Assim, nos hardwares, o sistema de coordenadas depende geralmente da resolução possível e da configuração definida pelo usuário dentre as
possíveis
Representação da Imagem
• Na representação matricial, a imagem é descrita por um conjunto de células em um arranjo espacial bidimensional, uma matriz.
• Cada célula representa um pixel, ou pontos, da imagem matricial. Os objetos são formados utilizando essa representação, isto é, utilizando os pixels ou pontos.
Primitivas Gráficas
(x,y)=(1,1) De 1 até xMax xMax
• Consideremos traçar uma reta do ponto extremo inferior esquerdo p1(x1,y1) até o ponto extremo superior direito p2(x2,y2).
• Significa definir quais pontos (pixels) devem ser ativados para representar a reta considerada
Equação de reta
m é o coeficiente angular que representa o ângulo que a reta possui em relação ao eixo x
• Para m <= 1, a reta possui um ângulo entre 0° e 45° com o eixo x • Para m > 1, a reta possui um ângulo entre 45° e 90° com o eixo x
b é o coeficiente linear que representa o valor que a reta cruza com o eixo y
Equação de Reta
Assim, em uma matriz 10x10, onde p1(1,10) e p2(10,1):
Para cada x, de 1 até 10:
Código em C m=(float)(y2-y1)/(x2-x1); b=(float)y1-m*x1; for (x=x1;x<=x2;x++) { y=(int)round(m*x+b);
Equação de Reta
x y 1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1Equação de Reta
(2,2)
(7,9)
Exercício
1. Considere uma matriz 10x10, onde p1(2,2) e p2(7,9). Utilizando a equação de reta
apresentada, demonstre quais pixels
deveriam ser ativados para representar a reta entre os pontos p1 e p2.
Código em C
m=(float)(y2-y1)/(x2-x1); b=(float)y1-m*x1;
Equação de Reta
(2,2)
• Digital Differential Analyser
• Algoritmo utilizado para rasterização de linhas, triângulos e
polígonos.
• Usado para interpolação linear de variáveis sobre os valores de
dois pontos
• É um algoritmo incremental que calcula o cada passo a partir
dos resultados do passo anterior
• É um algoritmo simples e não requer conhecimento especial
para a sua implementação
• A utilização de floating points (variáveis do tipo float) torna o
Algoritmo em C
dx = x2 - x1; dy = y2 - y1;
if (abs(dx) > abs(dy)) steps = abs(dx); else steps = abs(dy);
xinc = dx / (float) steps;
yinc = dy / (float) steps;
drawpixel(x1,y1);
for (aux=0; aux<steps; aux++) { x = x+xinc;
y = y+yinc; drawpixel(x,y) }
Exercícios
1. Considere os pontos abaixo. Calcule e responda quais são os
pixels que serão ativados para representar essa reta.
Demonstre e apresente os valores.
• p1(6,9) e p2(11,12)
• p1(1,1) e p2(3,5)
• p1(2,2) e p2(7,6)
• AZEVEDO, E. e CONCI, A. Computação Gráfica: Teoria e Prática. Rio de Janeiro, Editora Campus, 2003, 353p.
• CONCI, A.; AZEVEDO, E.; LETA, F. R. Computação Gráfica. Rio de Janeiro, Editora Campus, 2008. v. 2. 432 p.