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

Rotação

  • Upload
    zaria

  • View
    32

  • Download
    1

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Rotação

Fundamentos de Computação Gráfica

Prof. Marcelo Gattass

Guilherme Schirmer de Souza

Page 2: Rotação

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.

Page 3: Rotação

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

Page 4: Rotação

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:

Page 5: Rotação

Pontos xyz (base da câmera)

Conversão do xyz para a base

do arcball

Obtenção da matriz de rotação

Correção dos eixos do arcball

Matriz Quatérnio

Pontos xyz (base da câmera)

Conversão de xyz para a base

do arcball

Obtenção do quatérnio de

rotação

Correção dos eixos do arcball

Page 6: Rotação

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:

Page 7: Rotação

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.0THEN 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.

Page 8: Rotação

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:

33122111111)( eaeaeafeR

33222211222 )( eaeaeafeR

33322311333)( eaeaeafeR

Page 9: Rotação

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:

ez.zarc-ey.zarc-ex.zarc-

ez.yarc-ey.yarc-ex.yarc-

ez.xarc-ey.xarc-ex.xarc-

Page 10: Rotação

Matriz de Rotação

A seguinte matriz realiza a rotação de um objeto em torno de um eixo (ex, ey,ez) qualquer:

1000

0)cos1(cossin)cos1(sin)cos1(

0sin)cos1()cos1(cossin)cos1(

0sin)cos1(sin)cos1()cos1(cos

2

2

2

zxzyyzx

xyzyzyx

yxzzxyx

eeeeeee

eeeeeee

eeeeeee

M

onde θ é o ângulo de rotação dos pontos ao redor do eixo e.

Page 11: Rotação

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:

10Xptpte Já o cosθ é obtido através do produto

interno entre os mesmos dois pontos:).(cos 10 ptpt

O senθ é naturalmente obtido através da relação trigonométrica

1cos22 xxsen

Page 12: Rotação

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.

Page 13: Rotação

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):

)),,(,(cos zyx eeeq

Page 14: Rotação

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;

Page 15: Rotação

Software

Page 16: Rotação

Referências

Notas de Aula. http://pt.wikipedia.org/wiki/Teoria_de_qu

aternions 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

Page 17: Rotação

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