Fundamentos de Computação Gráfica Prof.: Marcelo Gattass Interface para rotações Tipo ArcBall Hildebrando Trannin Definição Objetivo: implementar um algoritmo para realizar a rotação de um cubo utilizando o conceito de arcball Entrada: Saída: captura do movimento do mouse cubo girado de acordo com movimento do mouse no arcball Rotação Rotação em torno de um eixo arbitrário z ê – eixo de rotação θ – ângulo de rotação ê y x Matriz resultante após alguns cálculos cos (1 cos )e x2 e e (1 cos ) e z sin M x y e x e z (1 cos ) e y sin 0 e y e x (1 cos ) e z sin e z e x (1 cos ) e y sin cos (1 cos )e y2 e y e z (1 cos ) e x sin e z e y (1 cos ) e x sin cos (1 cos )e z2 0 0 0 0 0 1 Quatérnios Números complexos no R3 q = a+bi+cj+dk q = (s, v), s – parte real e v – vetor que representa parte imaginária Facilita o cálculo das rotações em torno de um eixo q cos , sin ê 2 2 ê – eixo de rotação θ – ângulo de rotação Realização da rotação através do produto de quatérnios Rotação de um ponto em torno de um eixo rotação = q p q-1 p = (0 , r) - ponto na forma de quatérnio q = (s,v) - quatérnio representando a rotação (ângulo e eixo) ArcBall Definição: interface para rotação de um objeto 3D através da utilização do mouse a – eixo de rotação θ – ângulo de rotação Propriedade conservativa Implementação Etapas do algoritmo utilizando quatérnio 1. 2. 3. 4. Encontra os pontos inicial e final de movimentação do mouse na esfera do arcball adaptando-os aos eixos do objeto Gera o quatérnio desses dois pontos Multiplica o quatérnio final pelo conjugado do inicial e encontra o quatérnio de rotação Recalcula os eixos do objeto a partir da transposta da matriz de rotação calculada a partir do quatérnio de rotação Implementação Etapas do algoritmo sem quatérnio 1. 2. 3. 4. 5. Encontra os pontos inicial e final de movimentação do mouse na esfera do arcball adaptando-os aos eixos do objeto Calcula o produto vetorial desses dois pontos para encontrar o eixo de rotação Calcula o produto escalar para encontrar o cosseno do ângulo de rotação. Para encontrar o ângulo é utilizado o arco-cosseno Calcula a matriz de rotação a partir do ângulo e do eixo Recalcula os eixos do objeto a partir da transposta da matriz de rotação Referências http://www.tecgraf.puc-rio.br/~mgattass ARCBALL: A User Interface for Specifying Three-Dimensional Orientation Using a Mouse - Ken Shoemake Utilização de quatérnios para representação de rotações em 3D - Sergio Coutinho de Biasi e Marcelo Gattass