Conceitos Matemáticos
Computação Gráfica – DCC065
Introdução
Computação Gráfica utiliza muitos conceitos
matemáticos
Muitos dos conceitos não são complicados,
mas precisamos entendê-los bem para aprendermos certas técnicas
Hoje revisaremos os seguintes tópicos:
Sistemas de coordenadas
Ideia
Geral
Images taken from Hearn & Baker, “Computer Graphics with OpenGL” (2004)
Sistemas de Coordenadas 2D
Quando criamos uma imagem no computador,
a cena é definida usando geometria simples
Para cenas 2D nós
usaremos o sistema de coordenadas cartesianas 2D
Todos os objetos serão
definidos usando pares
y axis
P
Sistemas de Coordenadas 2D
x y
(2, 3)
(2, 7) (7, 7)
(7, 3)
2 7
Sistemas de Coordenadas 3D
Para cenas tridimensionais, basta adicionar
uma coordenada extra
y
Mão esquerda ou mão direita?
Há duas formas de pensarmos em sistemas
de coordenadas 3D – baseado na mão esquerda e baseado na mão direita
Sistema baseado na mão direta Sistema baseado na mão esquerda
Im
ag
es
tak
en
fr
om
He
arn
& Bak
er,
“Co
m
pu
ter
G
rap
hi
cs
w
ith
O
pe
nG
L”
(20
04
Mão esquerda ou mão direita?
Há duas formas de pensarmos em sistemas
de coordenadas 3D – baseado na mão esquerda e baseado na mão direita
arn
& Bak
er,
“Co
m
pu
ter
G
rap
hi
cs
w
ith
O
pe
nG
L”
(20
04
)
Usaremos o
Pontos e Linhas
Pontos: Um ponto no espaço bidimensional é simbolizado
por um par ordenado
(x, y)
Em três dimensões um ponto é simbolizado pela
tripla
(x, y, z)
Linhas:
Uma linha é definida atráves de um ponto inicial e
um ponto final
Em 2d: (xstart, ystart) a (xend, yend)
Pontos e Linhas (cont…)
y
(2, 3)
(6, 7)
(7, 1)
(7, 3) (2, 7)
A equação de uma linha
A equação da linha é
dada pela equação:
onde:
A equação da linha nos dá o valor
correspondente de
y
para cada valor dex
x y
y0 yend
xend x0
b
x
m
y
0 0
x
x
y
y
m
end end
0 0
m
x
y
b
Um exemplo simples
Vamos desenhar uma pequena porção da
linha dada pela equação:
Basta encontrar o valor da coordanda
y
parax
5
4
5
3
Um exemplo simples (cont)
x y
0 1 1
2 2
3 4 5 6 7 8 9 10 3
Um exemplo simples (cont)
Por exemplo, vamos variar x de 2 a 7
Vetores
Vetores:
Um vetor é definido pela diferença entre dois
pontos
Importante lembrar que um vetor possui uma
direção e um tamanho
Para que servem vetores em CG?
Um vetor nos mostra como mover algo de um
ponto a outro
São especialmente importantes em transformações
Vetores (2D)
Para determinar o vetor entre dois pontos,
simplesmente subtraia as coordenadas dos pontos
1 2
P
P
V
)
,
(
x
2
x
1y
2
y
1
)
3
7
,
1
6
(
)
4
,
5
(
y
P2 (6, 7)
P1 (1, 3) V
P2 (10, 7)
P1 (5, 3) V P2 (7, 10)
P1 (2, 6)
Vetores (3D)
Em 3D um vetor é calculado da mesma
forma que vetores em 2D
1 2 P P
V
) ,
,
(x2 x1 y2 y1 z2 z1
) , ,
(Vx Vy Vz
x axis y axis
z axis
P1
P2
Então para o ponto (2, 1, 3) e (7, 10, 5) obteríamos
) 2 , 9 , 5 (
) 3 5
, 1 10 , 2 7
(
Operações Vetoriais
Há várias operações importantes que
precisamos saber realizar com vetores:
Calcular o tamanho do vetor
Adição de Vetores
Multiplicação do vetor por um escalar
Produtor Escalar
Operações Vetoriais:
Tamanho do Vetor
Calcular o tamanho de um vetor é fácil tanto
em 2D:
Quanto em 3D:
2 2
|
|
V
V
x
V
y2 2
2
|
Operações Vetoriais:
Soma de vetores
A soma de dois vetores é calculada através da
soma de suas componentes correspondentes
)
,
(
1 2 1 22
1
V
V
xV
xV
yV
yV
y
V2
y
Operações Vetoriais:
Multiplicação por escalar
A multiplicação de um vetor por um escalar
ocorre através da multiplicação de cada componente do vetor pelo escalar
)
,
(
sV
xsV
ysV
x y
sV
(sVx, sVy)
x y
V
Outras Operações Vetoriais
Há outras operações importantes que serão
vistas no decorrer do curso
As principais são:
Produto Escalar (dot product)
Matrizes
Uma matriz é simplesmente uma grade de
números
Entretanto, ao utilizarmos operações
matriciais nós seremos capazes de realizar inúmeras operações matemáticas em CG de forma extremamente rápidas
6 0 2 3 4 10 13 11 1
1 2 3 4
Operações Matriciais
As operações matriciais importantes para
este curso são:
Multiplicação por escalar
Adição
Multiplicação
Transposta
Operações Matriciais:
Multiplicação por Escalar
Para multiplicar os elementos de uma matriz
por um escalar basta multiplicar cada componente pelo escalar
Operações Matriciais:
Adição
Para somar duas matrizes simplesmente
some todos os elementos correspondentes
Exemplo: z i y h x g w f v e u d t c s b r a z y x w v u t s r i h g f e d c b a
Operações Matriciais:
Multiplicação
Podemos multiplicar duas matrizes A e B
desde que o número de colunas de A seja igual ao número de linhas de B
Então, se tivermos uma matriz A
m
porn
euma matriz B
p
porq
teremos a multiplicação:C=AB
onde C será uma matriz
m
porq
cujoselementos serão calculados da seguinte forma:
nk
ki ik
ij
a
b
c
Operações Matriciais:
Multiplicação (cont…)
Exemplos:
?
3 4
2 1
8 7
1
2 5 0
?
6 5 4 3 2
Operações Matriciais:
Multiplicação (cont…)
Exemplos: 28 38 4 22 26 3 4 * 8 2 * 2 4 * 7 2 * 5 4 * ) 1 ( 2 * 0 3 * 8 1 * 2 3 * 7 1 * 5 3 * ) 1 ( 1 * 0 4 3 2 1 8 7 1 2 5 0
1*4 2*5 3*6
32 65 4 3 2
1
Operações Matriciais:
Multiplicação (cont…)
Exemplos: 28 38 4 22 26 3 4 * 8 2 * 2 4 * 7 2 * 5 4 * ) 1 ( 2 * 0 3 * 8 1 * 2 3 * 7 1 * 5 3 * ) 1 ( 1 * 0 4 3 2 1 8 7 1 2 5 0
1*4 2*5 3*6
32 65 4 3 2
1
Operações Matriciais:
Multiplicação (cont…)
Atenção!
A multiplicação de matrizes não é uma operação comutativa, então:
Operações Matriciais:
Transposta
A transposta de uma matriz
M
, escrita comoM
T será obtida através da inversão das linhas pelas colunas deM
Por exemplo:
6 5 4
3 2 1
6 5
4
3 2
Outras Operações Matriciais
Há outras operações matriciais importantes
que serão necessárias no decorrer deste curso
Algumas destas operações:
Determinante de uma matriz
Resumo
Nesta aula fizemos uma breve revisão sobre
alguns aspectos matemáticos que serão necessários no decorrer do curso como:
Sistemas de coordenadas
Noções sobre pontos, linhas, vetores e matrizes
Operações vetoriais e matriciais.
Estas noções matemáticas serão aplicadas
Saiba mais!
Mathematics for Computer Graphics
John Vince
2ª Edição, Springer, 2006
Este livro não foi desenvolvido para matemáticos, mas sim, para
Saiba mais!
Computer Graphics, C Version
Apêndice A
Contém um resumo dos principais recursos matemáticos utilizados na Computação Gráfica e fornece a base necessária para o bom
entendimento do restante do livro.
Exercícios
1. Faça um programa que desenhe a linha y =
½x + 2 de x = 1 a x = 9, ponto a ponto.
2. Faça um programa que mostre o vetor
resultante da soma entre dos vetores V1 e V2
abaixo.
Ajuste a janela de renderização de forma adequada.
) . , . (
V1 3 0 2 5 V2 (3.1,6.3)
) . , . (
V2 5 0 2 0 )
. , . (