1 / 17

Rotação

Fundamentos de Computação Gráfica Prof. Marcelo Gattass. Rotação. Guilherme Schirmer de Souza. 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.

george
Download Presentation

Rotação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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. • http://pt.wikipedia.org/wiki/Teoria_de_quaternions • http://www.cs.wisc.edu/graphics/Courses/559-f2001/Examples/Gl3D/MyArcBall.cpp • http://www.java-tips.org/other-api-tips/jogl/arcball-rotation-nehe-tutorial-jogl-port.html

  17. http://rainwarrior.thenoos.net/dragon/arcball.html • http://www.tecgraf.puc-rio.br/~mgattass/Quaternios.pdf • http://www.tecgraf.puc-rio.br/~mgattass/fcg/material/shoemake92.pdf

More Related