Você está na página 1de 44

Transformações Geométricas em

OpenGL
Sumário
• Breve revisão sobre OpenGL;
• Mais exemplos de programas OpenGL;
• Sistemas de Coordenadas;
• Transformadas Geométricas (rotação,
translação, shear e mudança de escala);
• Coordenadas Homogêneas;
• Transformadas Geométricas em OpenGL;
• Exemplos;
04/06/2019 2
Breve revisão sobre OpenGL

04/06/2019 3
Breve revisão sobre OpenGL
• Informações preliminares:
• Cabeçalhos:
– #include<GL/gl.h>
– #include<GL/glu.h>
– #include<GL/glut.h>

• Bibliotecas
• Tipos enumerados:
– OpenGL define numerosos tipos em razão da
portabilidade:
• GLfloat, GLint, GLenum, etc...

04/06/2019 4
Breve revisão sobre OpenGL
• Convenções utilizadas em OpenGL:
• A maioria das funções começa com gl.
– Exemplo: glColor();

• Funções que começam com glu são


consideradas funções auxiliares.
– Exemplo: gluLookAt();

• Funções que começam com glx são usadas


para o interfaceamento com o sistema X.

04/06/2019 5
Breve revisão sobre OpenGL
• Convenções utilizadas em OpenGL

• Nomes de funções indicam o tipo e o número de


argumentos:
– Funções que terminam em f são para floats;
– Funções que terminam em i são para ints;
– Funções que terminam em b são para bytes;
– Funções que terminam em ub são para unsigned bytes;
– Funções que terminam em v são para array.

• Exemplos:
– glColor3f() → utiliza 3 floats;
– glColor4fv() → utiliza um array de 4 floats.

04/06/2019 6
Breve revisão sobre OpenGL
• Convenções utilizadas em OpenGL

• Variáveis são escritas com letras


maiúsculas:
– GLUT_SINGLE, GLUT_RGB;

04/06/2019 7
Mais exemplos de programas OpenGL
• Existem diversas páginas na Internet que disponibilizam
o código fonte dos programas;

Fonte: http://www.xmission.com/~nate/sgi.html

04/06/2019 8
Mais exemplos de programas OpenGL

• http://isg.cs.tcd.ie/dingliaj/3d4ii/Lab1.html

• http://math.ucsd.edu/~sbuss/MathCG/OpenGLsoft/

• http://www.xmission.com/~nate/sgi.html

• http://www.xmission.com/~nate/es.html

• http://www.essi.fr/~buffa/cours/synthese_image/DOCS/tr
ant.sgi.com/opengl/examples/more_samples/more_sam
ples.html

04/06/2019 9
Sistemas de Coordenadas
• O sistema de coordenadas serve para dar
uma referência em termos de medidas do
tamanho e da posição dos objetos;

Fonte: Azevedo e Conci [10], pg. 36.

04/06/2019 10
Sistemas de Coordenadas
• Sistema de Referência: sistema de
coordenadas cartesianas para alguma
finalidade específica.

• É necessário definir:
– Unidade de referência básica;
– Limites extremos dos valores aceitos para
descrever os objetos.

04/06/2019 11
Sistemas de Coordenadas
Cartesianas
• Por convenção, emprega-se a base Cartesiana:
– Vetores base são mutuamente ortogonais e de
comprimento unitário;
– Vetores base: x, y, z.

• É necessário definir algumas relações entre


esses vetores:
– Sistemas baseados na Mão Direita: z sai da página;
– Sistemas baseados na Mão Esquerda: z entra na
página;

• Isto afeta bastante a direção das rotações e a


especificação dos vetores normais.
04/06/2019 12
Sistemas de Coordenadas
Cartesianas

04/06/2019 13
Sistemas de Coordenadas
• Alguns sistemas de coordenadas recebem uma
denominação especial:

– Sistema de Referência do Universo (SRU);


– Sistema de Referência do Objeto (SRO);
– Sistema de Referência Normalizado (SRN);
– Sistema de Referência do Dispositivo (SRD);

Fonte: Azevedo e Conci [10], pg. 37.


04/06/2019 14
Sistemas de Coordenadas
• Sistema de Referência do Universo
(SRU):
– Sistema de referência utilizado para
descrever os objetos em termos de
coordenadas utilizadas pelo usuário em
determinada aplicação.

• Exemplos:
– Sistemas CAD;
– Sistemas de Radar;
04/06/2019 15
Sistemas de Coordenadas
• Sistema de Referência do Objeto (SRO):
– Cada objeto é um miniuniverso individual. Assim,
cada objeto tem suas particularidades descritas em
função de seu próprio sistema.

• Sistema de Referência do Dispositivo (SRD)


• Exemplos:
– Monitor de vídeo: número máximo de pixels
(640x480, 800x600, ...);
– Scanner: resolução máxima permitida para captura

04/06/2019 16
Sistemas de Coordenadas

• Sistema de Referência Normalizado


(SRN)
– Coordenadas com valores entre 0 e 1. Esse sistema
serve como intermediário entre o SRU e o SRD.

– Sua principal aplicação é tornar a geração de


imagens independente de dispositivos.

04/06/2019 17
Transformadas Geométricas
• A possibilidade de representar um objeto
em várias posições no espaço é
fundamental para compreender sua forma.
• Transformações Geométricas:

04/06/2019 18
Transformação de Translação
• Transladar significa movimentar o objeto.
• Transladamos todos os pontos de um
objeto;

Fonte: Azevedo e Conci [10], pg. 39.


04/06/2019 19
Transformação de Translação
• Cada ponto (x,y) pode ser movido adicionando quantidades às suas
coordenadas:

• Cada ponto (x,y) pode ser movido por Tx unidades (eixo x) e Ty


unidades (eixo y).

• Novo ponto (x’,y’) ou (x’, y’, z’):

x’ = x + Tx
x’ = x + Tx y’ = y + Ty 3D
2D
y’ = y + Ty z’ = z + Tz

Notação Matricial: [x’ y’ z’] = [x y z] + [Tx Ty Tz]

04/06/2019 20
Transformação de Translação

04/06/2019 21
Transformação de Escala
• Escalonar significa mudar as dimensões do
objeto.
• Para fazer essa transformação, multiplicamos
cada coordenada por um fator de escala (S).

Fonte: Azevedo e Conci [10], pg. 40.


04/06/2019 22
Transformação de Escala
• Cada um dos vetores de coordenadas do objeto são
multiplicados por fatores de escala;
• Em 2D – Sx, Sy
• Em 3D – Sx, Sy, Sz:
x’ = x . Sx
2D
x’ = x . Sx y’ = y . Sy 3D
y’ = y . Sy z’ = z . Sz

Notação Matricial:

04/06/2019 23
Transformação de Escala

04/06/2019 24
Transformação de Rotação
• Rotacionar significa girar;

Rotação de um ponto
P em torno da origem,
passando para a
posição P’.
P(x,y):
x = r cos()
y = r sen()
Fonte: Azevedo e Conci [10], pg. 42.

04/06/2019 25
Transformação de Rotação
• As novas coordenadas serão:
x’ = r. cos ( + );
y’ = r. sen ( + );

x’ = r. cos. cos – r. sen.sen 


y’ = r. sen. cos + r. cos.sen 

x’ = x cos - y sen
Notação Matricial:
y’ = y cos + x sen
04/06/2019 26
Transformação de Rotação
• Essa matriz é denominada matriz de rotação no plano
xy por um ângulo .
• Se o objeto não estiver definido na origem do sistema de
coordenadas, a transformação de rotação acarretará
uma translação do objeto.

Fonte: Azevedo e Conci [10], pg. 43.

04/06/2019 27
Transformação de Rotação
• Para alterar a orientação de um objeto em
torno de um ponto qualquer, sem ter o
efeito da translação, é necessário efetuar
um combinação de transformações.

Fonte: Azevedo e Conci [10], pg. 43.

04/06/2019 28
Transformação de Rotação
• A rotação de objetos tridimensionais
permite que vejamos o objeto de
diferentes posições e ângulos.
• A rotação de um objeto 3D é mais fácil de
ser realizada individualmente em cada um
dos eixos, utilizando os chamados
Ângulos de Euler.
• Cada uma dessas rotações pode ser
obtida por meio de operações nos planos
xy, yz, zx.
04/06/2019 29
Transformação de Rotação
- Ângulos de Euler -
• Os ângulos de Euler facilitam uma
definição precisa das rotações em relação
ao sistema de eixos.

Fonte: Azevedo e Conci [10], pg. 42.

04/06/2019 30
Transformação de Rotação
- Ângulos de Euler -
• Os ângulos de Euler facilitam uma
definição precisa das rotações em relação
ao sistema de eixos.

Fonte: Azevedo e Conci [10], pg. 42.

04/06/2019 31
Transformação de Rotação
- Ângulos de Euler -
• Os ângulos de Euler facilitam uma
definição precisa das rotações em relação
ao sistema de eixos.

Fonte: Azevedo e Conci [10], pg. 42.

04/06/2019 32
Transformação de Rotação
- Ângulos de Euler -

04/06/2019 33
Transformação de Rotação
• A rotação de um ponto no espaço 3D é
obtida multiplicando-se os ângulos de
rotação ao ponto.

• Em 3D, teremos três matrizes (3x3), uma


para cada eixo.

• Essa matriz depende do eixo que se faz a


rotação;
04/06/2019 34
Transformação de Rotação

Rotação do eixo x

Rotação do eixo y

Rotação do eixo z

04/06/2019 35
Transformação de Rotação

• Exemplo:

04/06/2019 36
Transformadas
Geométricas em OpenGL
• Os vértices que definem
as primitivas
geométricas em
OpenGL são descritos
segundo um sistema de
eixos ortogonais
orientados pela regra da
mão direita:
04/06/2019 37
Transformadas Geométricas em
OpenGL
• O comando para transladar um objeto é:
– glTranslatef(TYPE x, TYPE y, TYPE z);

• Os parâmetros são as distâncias em cada


um dos eixos coordenados.

• Exemplo: para mover o ponto de visão ao


longo do eixo x de 10 unidades:
– glTranslatef(10.0, 0.0,0.0);
04/06/2019 38
Transformadas Geométricas em
OpenGL
• O comando que permite mudar as
dimensões de um objeto é:
– glScalef(TYPE x, TYPE y, TYPE z);

• Exemplo: para quadriplicar a altura de um


objeto:
– glScalef(1.0, 4.0, 1.0);

04/06/2019 39
Transformadas Geométricas em
OpenGL
• O comando para rotacionar um objeto é:
– glRotatef(TYPE angle,TYPE x, TYPE y, TYPE z);

• Tem como parâmetro o ângulo de rotação e as


coordenadas de um vetor que determina o eixo
de rotação (ângulos de Euler ).

• Exemplo: rotacionar o ponto de visão de 45º em


torno do eixo z:
– glTranslatef(45.0, 0.0, 0.0,1.0);

04/06/2019 40
Transformadas Geométricas em
OpenGL

• Executar o programa sobre transformadas


geométricas. (códigos cedido pelo
professor)

04/06/2019 41
Atividade 5 – entrega: dia da prova (manuscrito)
Considerando as figuras geométricas expressas pelos pontos de cada questão
abaixo. Pede-se:
a) Desenhe a figura num plano 2D.
b) Realize a transformação pedida.
c) Redesenhe a figura num plano 2D (no plano da questão ‘a’ se houver espaço).

1. quadrado: A(4,5) B(6,6) C(5,9) e D(3,8)


transformação: translação com Tx = 2 e Ty = -1.

2. quadrado: A(4,5) B(6,6) C(5,9) e D(3,8)


transformação: escala com Sx = 2 e Sy = 2.

3. triângulo: A(6,3) B(8,3) e C(7,5)


transformação: translação com Tx = -3 e Ty = -2.

4. triângulo: A(6,3) B(8,3) e C(7,5)


transformação: escala com Sx = 3 e Sy = 2.

04/06/2019 42
Exercícios didático
• Procure exemplos de nível básico e
intermediário. Compile-os e faça
modificações nestes programas para
aprender a utilizar a biblioteca gráfica.

04/06/2019 43
Referências
1. FOLEY, J. D.; VAM DAM, A.; FEINER, S. K.; HUGHES, J. F. Computer
graphics: principles and practice. 2. ed. Addison-Wesley, 1992.
2. HARRINGTON, S. Computer graphics: a programming approach. New York
: McGraw-Hill, 1987.
3. PLASTOK, R. A. & Kalley, G. Computação gráfica. São Paulo : McGraw-
Hill, 1987.
4. WATT, A. 3D Computer graphics. 2. ed. Reading : Addison-Wesley, 1993.
5. HILL, F. S. Jr. Computer Graphics using OpenGL. Prentice Hall Book
Company, 2001.
6. ANAND, V. B. Computer Graphics and Geometric Modelling for Engineers.
John Wiley & Sons, 1993.
7. HEARN, D. D. & BAKER, M.P. Computer Graphics. Prentice Hall, 1997.
8. WOOD et al. OpenGL(R) Programming Guide. Addison-Wesley, 1999.
9. ANGEL, E. Interactive Computer Graphics: A top-down approach with
OpenGL. Addison-Wesley, 2000.
10. AZEVEDO, E. & CONCI, A. Computação Gráfica-Teoria e Prática. Editora
Campus, 2003

04/06/2019 44

Você também pode gostar