A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Fundamentos de Computação Gráfica Prof. Marcelo Gattass

Apresentações semelhantes


Apresentação em tema: "Fundamentos de Computação Gráfica Prof. Marcelo Gattass"— Transcrição da apresentação:

1 Fundamentos de Computação Gráfica Prof. Marcelo Gattass
Rotação Guilherme Schirmer de Souza

2 Introdução O objetivo dessa apresentação é fazer uma breve descrição teórica do terceiro trabalho da disciplina de Fundamentos de Computação Gráfica. O trabalho consistia em rotacionar um objeto em torno de um eixo qualquer através da utilização de um Arcball.

3 Arcball Arcball é uma técnica de computação gráfica que utiliza o mouse como entrada para ajustar a orientação espacial de um objeto. Para isso é utilizada uma esfera ao redor desse objeto e através do clique e arraste de um determinado ponto da esfera através do mouse tal objeto é rotacionado. Figura 1

4 Técnicas de Rotação Existem diversas técnicas de rotação para girar objetos no espaço tridimensional. Nesse trabalho foram utilizadas duas técnicas de rotação: matriz de rotação e quatérnios. Os diagramas abaixo mostram um esquemático de cada técnica:

5 Pontos xyz (base da câmera) Pontos xyz (base da câmera)
Matriz Quatérnio Pontos xyz (base da câmera) Pontos xyz (base da câmera) Conversão do xyz para a base do arcball Conversão de xyz para a base do arcball Obtenção da matriz de rotação Obtenção do quatérnio de rotação Correção dos eixos do arcball Correção dos eixos do arcball

6 Pontos xyz – base da câmera
Para que a rotação de um arcball possa ser realizada, é necessário obter um arco de rotação. Tal arco é obtido quando o usuário clica na esfera e arrasta o mouse, tendo assim dois pontos dessa esfera em relação a base da câmera. Tais pontos são obtidos através do seguinte processo:

7 pt.x = (screen.x – center.x)/radius;
pt.y = (screen.y – center.y)/radius; r = pt.x*pt.x + pt.y*pt.y; IF r > 1.0 THEN s = 1.0/Sqrt[r]; pt.x = s*pt.x; pt.y = s*pt.y; pt.z = 0.0; ELSE pt.z =Sqrt[1.0 - r]; onde pt é o ponto da esfera, screen é o ponto da imagem (ponto bidimensional) e center é o centro da esfera na imagem.

8 Conversão de pontos entre bases
Suponhamos duas bases {e1,e2,e3} e {f1,f2,f3}. Para convertermos da primeira base para a segunda temos o seguinte conjunto de equações:

9 Logo, para transformamos os pontos da base da câmera {(1,0,0), (0,1,0),(0,0,1)} para a base do arcball {(arc->ex.x, arc->ey.x, arc->ez.x),(arc->ex.y, arc->ey.y, arc->ez.y),(arc->ex.z, arc->ey.z, arc->ez.z)} basta multiplicar tais pontos pela matriz:

10 Matriz de Rotação A seguinte matriz realiza a rotação de um objeto em torno de um eixo (ex, ey,ez) qualquer: onde θ é o ângulo de rotação dos pontos ao redor do eixo e.

11 O eixo e é obtido através da normal do plano formado pelo dois pontos do arco de rotação. Tal normal é calculada através do produto vetorial dos dois pontos: Já o cosθ é obtido através do produto interno entre os mesmos dois pontos: O senθ é naturalmente obtido através da relação trigonométrica

12 Correção dos eixos do arcball
Após ser feita a rotação do arcball, é necessário fazer a atualização dos eixos desse arcball. Essa atualização é feita através da multiplicação de cada eixo do arcball pela matriz inversa de rotação.

13 Quatérnio de Rotação Quatérnio é uma ramificação da matemática que generaliza o cálculo vetorial e os números complexos. Em computação gráfica são muito úteis para realizar rotações de objetos. Um quatérnio de rotação é determinado pelo cosseno do ângulo de rotação (parte real) e o eixo de rotação (parte imaginária):

14 Finalmente, para finalizar a técnica por quatérnio, basta converter esse para uma matriz de rotação para após isso ser feito o ajuste dos eixos. Tal matriz é calculada pela seguinte forma: Matrix m; m.m[0] = 1 - 2*(q.y*q.y + q.z*q.z); m.m[1] = 2*(q.x*q.y + q.z*q.w); m.m[2] = 2*(q.x*q.z - q.y*q.w); m.m[3] = 0; m.m[4] = 2*(q.x*q.y - q.z*q.w); m.m[5] = 1 - 2*(q.x*q.x + q.z*q.z); m.m[6] = 2*(q.y*q.z + q.x*q.w); m.m[7] = 0; m.m[8] = 2*(q.x*q.z + q.y*q.w); m.m[9] = 2*(q.y*q.z - q.x*q.w); m.m[10] = 1 - 2*(q.x*q.x + q.y*q.y); m.m[11] = 0; m.m[12] = 0; m.m[13] = 0; m.m[14] = 0; m.m[15] = 1;

15 Software

16 Referências Notas de Aula.

17


Carregar ppt "Fundamentos de Computação Gráfica Prof. Marcelo Gattass"

Apresentações semelhantes


Anúncios Google