Buscar

CG aula14 espaço vetorial v2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UVA – Universidade Veiga de Almeida
Espaço Vetorial - Introdução
• Um ponto P de coordenadas (x, y, z) pode ser visto como um 
vetor A que sai da origem e chega até ele.
Comp Graf 2 – Espaço Vetorial
P
Y
Z
X
y
zx
A
UVA – Universidade Veiga de Almeida
Espaço Vetorial - Introdução
• Um vetor pode ser deslocado, desde que seu comprimento e 
direção sejam mantidos, sem se alterar.
• Assim, o espaço de coordenadas cartesianas é na verdade um 
espaço vetorial, e todo vértice de um objeto define um vetor 
que vai da origem até ele.
Comp Graf 2 – Espaço Vetorial
Y
Z
X
UVA – Universidade Veiga de Almeida
Multiplicação por escalar
A = ( x, y, z)
k A = (k.x, k.y, k.z)
• Equivale a alterar o módulo (comprimento) do vetor.
• Se o escalar for negativo, a sua multiplicação implica na 
mudança do sentido do vetor (mantém a direção do vetor).
Comp Graf 2 – Espaço Vetorial
Y
Z
X
2B
B
B
- B
UVA – Universidade Veiga de Almeida
Adição e Diferença de Vetores
Dados dois vetores: A = (xA, yA, zA) e B = (xB, yB, zB) , então:
• O vetor adição A + B é definido por:
A + B = (xA + xB, yA + yB, zA + zB)
• O vetor soma está na diagonal maior do paralelogramo formado pelos dois vetores
• O vetor diferença A - B é definido por:
A - B = (xA - xB, yA - yB, zA - zB)
• O vetor diferença está na diagonal menor do paralelogramo formado pelos dois 
vetores:
Comp Graf 2 – Espaço Vetorial
Y
Z
A + B
B
A - B
A
- B
X
UVA – Universidade Veiga de Almeida
Vetor ligando dois pontos
• Um vetor ligando dois pontos: P1 = (xA, yA, zA) e P2 = (xB, 
yB, zB) pode ser obtido quando se considera os pontos como 
vetores A e B ligados à origem. 
• Neste caso, o vetor ligando os dois pontos é a diferença entre 
os vetores dos dois pontos (B-A).
Comp Graf 2 – Espaço Vetorial
P1
Y
Z
X
A
B
P2
B-A
UVA – Universidade Veiga de Almeida
Produto Interno (ou Produto Escalar)
• Dado dois vetores: A = (xA, yA, zA) e B = (xB, yB, zB)
• O produto interno é definido como um escalar:
A . B = xA . xB + yA . yB + zA . zB
• O comprimento (ou módulo) de um vetor pode ser 
facilmente obtido através do produto interno do vetor por 
ele mesmo.
A . A = xA . xA+ yA . yA + zA . zA
A . A = xA2 + yA2 + zA2 = | A|2
| A| = ( xA2 + yA2 + zA2 ) 1/2
Comp Graf 2 – Espaço Vetorial
UVA – Universidade Veiga de Almeida
Produto Interno (ou Produto Escalar)
• O produto interno A . B é numericamente igual ao produto do 
vetor A pela projeção do vetor B sobre A:
A . B = |A| . |B| . cos()
• Se A estiver no sentido oposto de B  cos()<0  A . B <0 
• Se A estiver na direção perpendicular à B  cos()=0  A . B = 0
• Se A estiver no mesmo sentido de B  cos()>0  A . B >0
Comp Graf 2 – Espaço Vetorial
B
A
|B|. cos()

UVA – Universidade Veiga de Almeida
Subespaços – O Plano
• Dado dois vetores A = (xA, yA, zA) e B = (xB, yB, zB) uma combinação 
linear através da multiplicação de escalares c1 e c2 é capaz de gerar todos 
os pontos de um plano formado pelo dois vetores:
c1.A + c2.B = (c1.xA, c1.yA, c1. zA) + (c2.xB, c2. yB, c2.zB) = 
(c1.xA + c2.xB, c1.yA + c2.yB, c1.zA + c2.zB)
Comp Graf 2 – Espaço Vetorial
A
B
c1.A
c1.B
UVA – Universidade Veiga de Almeida
Produto Vetorial (ou Produto Externo)
• Dado dois vetores: A = (xA, yA, zA) e B = (xB, yB, zB)
• O produto vetorial é definido como:
Comp Graf 2 – Espaço Vetorial
A
B
AB

)..,..,..( BABABABABABA xyyxxzzxyzzyBA 
Observar que:
|A  B| = |A| . |B| . sin()
A  B = - B  A
UVA – Universidade Veiga de Almeida
Produto Vetorial (ou Produto Externo)
Comp Graf 2 – Espaço Vetorial
BBB
AAA
zyx
zyx
kji
BA 
 A Componente x de A  B = yA.zB – zA.yB
eqüivale a eliminar a primeira linha e a
primeira coluna de uma matriz, e calcular o
determinante da matriz resultante
BBB
AAA
zyx
zyx
kji
BA  A Componente Y de A  B = xA.zB – zA.xBeqüivale a eliminar a primeira linha e a
segunda coluna de uma matriz, e calcular o
determinante da matriz resultante
BBB
AAA
zyx
zyx
kji
BA  A Componente Z de A  B = xA.yB – yA.xB
eqüivale a eliminar a primeira linha e a
terceira coluna de uma matriz, e calcular o
determinante da matriz resultante
)..,..,..( BABABABABABA xyyxxzzxyzzyBA 
UVA – Universidade Veiga de Almeida
Coseno Diretor
• A direção de um vetor é dada pelos ângulos , ,  que
o vetor faz com cada um dos eixos coordenados.
• Esses ângulos são chamados de cosenos diretor do
vetor, e são calculados por:
Cos() = x / |v| 
Cos() = y / |v|
Cos() = z / |v|
Cos2() + Cos2() + Cos2() = 1
Comp Graf 2 – Espaço Vetorial
UVA – Universidade Veiga de Almeida
Exemplo: Implementação VB
• No Global.bas
• No frmDesenho
Comp Graf 2 – Espaço Vetorial
Global Normal(3, 2) As Double
Public Sub ProdVet()
 Normal(3, 0) = Normal(0, 1) * Normal(1, 2) - Normal(0, 2) * Normal(1, 1)
 Normal(3, 1) = Normal(0, 0) * Normal(1, 2) - Normal(0, 2) * Normal(1, 0)
 Normal(3, 2) = Normal(0, 0) * Normal(1, 1) - Normal(0, 1) * Normal(1, 0)
End Sub
)..,..,..( BABABABABABA xyyxxzzxyzzyBA 
UVA – Universidade Veiga de Almeida
Introdução
• Um sólido é um objeto 3D que tem superfícies, isto
significa que a sua imagem não apresenta as partes das
superfícies que não estão visíveis.
• Problema: desenhar somente os lados do objeto que
estão de frente para a Câmera, porque as faces
posteriores do objeto não são visíveis.
Comp Graf 2 – Superfícies Escondidas
UVA – Universidade Veiga de Almeida
Remoção das Faces Escondidas
• Primeiro, deve-se definir as superfícies que a Câmera pode ver. 
• Para determinar qual o lado do objeto está de frente para câmara calcula-
se o vetor perpendicular à superfície de cada face.
• Este vetor é o resultado de um produto vetorial entre dois vetores 
pertencentes à uma face do sólido. 
• Restrição: o vetor normal N à superfície deve apontar para fora dela. 
• Se o resultado do cálculo do produto interno entre o vetor normal à 
superfície do objeto e um vetor que aponta para a câmara for positivo, 
então o lado correspondente do objeto será visível.
Comp Graf 2 – Superfícies Escondidas
Face visível
Produto interno >0
N
Face escondidaProduto interno <0
N
UVA – Universidade Veiga de Almeida
Limitação do algoritmo Hidden Lines
• O algoritmo de Hidden Lines não é adequado para 
objetos complexos (toróides ou outros com furos).
Comp Graf 2 – Superfícies Escondidas
UVA – Universidade Veiga de Almeida
Cálculo do Vetor que Aponta para a Câmara
• O vetor V que aponta para a câmara pode ser obtido através do
vetor diferença entre o vetor C centro de câmera (construído
apenas com as coordenadas de deslocamento da câmera) e o vetor
D centro de uma face.
D = (xD, yD, zD)
C = (xc, yc, zc)
Onde:
xc = Objeto(0).xObj
yc = Objeto(0).yObj
zc = Objeto(0).zObj
• O vetor V deverá ir do centro da face até a câmera .
V = C – D = (xC – xD, yC – yD, zC – zD)
Comp Graf 2 – Superfícies Escondidas
x’
y’
z’
C
Y
Z
X
yObj
V
xObj
zObj
D
Otimizando o Método Hidden Lines
• Quando movemos os objetos para o sistema de coordenadas da
câmera (x’, y’, z’), através das transformações de câmera (se a
câmera roda de  => o objeto roda de -, etc.), estamos colocando o
centro do objeto no sistema de coordenadas da câmera (cada ponto
do objeto está projetado nos eixos X, Y e Z da câmera). Isto é:
Comp Graf 2 – Superfícies Escondidas
zN > 0
zN < 0
Z’
N
N
Otimizando o Método Hidden Lines (cont.)
• Neste caso, o vetor V que aponta para a câmaraé o próprio eixo Z,
portanto o produto interno entre a normal N (xN, yN, zN) à uma face
do sólido e o vetor V = (0, 0, Vz) será:
V . N = Vz . zN
• Como estamos interessados apenas no sinal de V . N, então basta
verificar se zN < 0 , para se determinar se a face está oculta.
• Assim, pode-se identificar qualquer face como uma face não visível 
se o seu vetor normal possui componente z com um valor: zN < 0
Comp Graf 2 – Superfícies Escondidas
zN > 0
zN < 0
Z’
N = (xN, yN, zN) 
N
V=(0, 0, vz)
Rotulando Vértices das Faces
• Para que o vetor normal à cada face do objeto aponte sempre para
fora do objeto é necessário que se fixe uma convenção para
numeração dos vértices em cada face.
• Convenção: Os vértices e arestas são listados no sentido contrário
ao do movimento dos ponteiros de um relógio quando a face é vista
de fora, de modo que o produto vetorial entre dois vetores da face
(que determina a normal) também aponte para fora.
Comp Graf 2 – Superfícies Escondidas
12
3 4
Certo
1 2
34
Errado
As faces do cubo
• Para se observar a convenção para numeração dos vértices, cada face do 
cubo deve ser identificada conforme mostrado a seguir.
Comp Graf 2 – Remoção de Superfícies Escondidas -
Topologia:
Faces: F0 V0, V1, V2, V3
 F1 V1, V4, V5, V2
 F2 V0, V7, V4, V1
 F3 V4, V7, V6, V5
 F4 V2, V5, V6, V3
 F5 V0, V3, V6, V7
V0
V1
V3
V2 V4
V5
V7
Normal à uma face do cubo
• O vetor normal à uma face F pode ser obtido pelo produto vetorial A x B onde:
• A = v0 - v1 e B = v2 – v1
• Sequência
– Selecionar um vértice pivô, por exemplo: V1
– Definir vetores correspondentes às arestas que partem desse vértice
– Assim, para a face F: V0, V1, V2, V3
V0 = (x0, y0, z0)
V1 = (x1, y1, z1) A = v2 - v1 = (x2-x1, y2-y1, z2-z1)
V2 = (x2, y2, z2) B = v0 – v1 = (x0-x1, y0-y1, z0-z1)
• O vetor normal será:
AB = (yA.zB – zA.yB, xA.zB – zA.xB, xA.yB – yA.xB)
Comp Graf 2 – Remoção de Superfícies Escondidas -
V1
V0
V2
B
A
A x B
Comp Graf 2 – Remoção de Superfícies Escondidas -
//*******************************************************************
// Function: CalculateVectorNormal
// 
// Purpose: Given three points of a 3D plane, this function calculates
// the normal vector of that plane.
// 
// Parameters:
// fVert0[] == array for point 0 (3 elements are x, y, and z).
// fVert1[] == array for point 1 (3 elements are x, y, and z).
// fVert2[] == array for point 2 (3 elements are x, y, and z).
// 
// Returns:
// fNormalX == X vector for the normal vector
// fNormalY == Y vector for the normal vector
// fNormalZ == Z vector for the normal vector
// 
//**********************************************************************
Comp Graf 2 – Remoção de Superfícies Escondidas -
GLvoid CalculateVectorNormal (GLfloat fVert1[], GLfloat fVert2[], GLfloat fVert3[], 
GLfloat *fNormalX, GLfloat *fNormalY, GLfloat *fNormalZ)
{
GLfloat Ax, Ay, Az, Bx, By, Bz;
Ax = fVert2[0] - fVert1[0];
Ay = fVert2[1] - fVert1[1];
Az = fVert2[2] - fVert1[2];
Bx = fVert0[0] - fVert1[0];
By = fVert0[1] - fVert1[1];
Bz = fVert0[2] - fVert1[2];
*fNormalX = Ay*Bz - Az*By;
*fNormalY = Az*Bx - Ax*Bz;
*fNormalZ = Ax*By - Ay*Bx;
}
V1
V0
V2
B
A
A x B
AB = (yA.zB – zA.yB, xA.zB – zA.xB, xA.yB – yA.xB)
Comp Graf 2 – Remoção de Superfícies Escondidas -
Exemplo:
glBegin(GL_POLYGON);
glVertex3fv(fVert1);
glVertex3fv(fVert2);
glVertex3fv(fVert3);
glVertex3fv(fVert4);
// Calculate the vector normal coming out of the 3D polygon.
CalculateVectorNormal(fVert1, fVert2, fVert3, &fNormalX, &fNormalY, &fNormalZ);
// Set the normal vector for the polygon
glNormal3f(fNormalX, fNormalY, fNormalZ);
glEnd();

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes