click aqui para voltar ao indice geral

Movimento rígido de uma figura qualquer

Nesta página, procuraremos mostrar:

  • como reduzir o movimento rígido de uma figura qualquer ao movimento de um conjunto FINITO de seus pontos
  • como implementar eficientemente, via matrizes, esse movimento




Reduzindo o movimento de uma figura ao de um conjunto FINITO de seus pontos



O interesse de atingir esse objetivo está em que ele nos possibilitará reduzir o movimento rígido da figura à uma multiplicação de duas matrizes, de um modo semelhante ao que já fizemos com a transformação do quadrado do primeiro exemplo que vimos quando introduzimos a idéia de transformação.

A desejada redução é bastante fácil de ser conseguida: basta que façamos uma discretização da figura a movimentar.
Para que entendamos melhor tal discretização, imaginemos que queiramos fazer o movimento rígido de um sólido qualquer, como uma bola. Para isso, iniciamos dividindo a superfície desse sólido em um número finito de triângulos ( se conveniente, podemos usar qualquer outro polígono plano ) com o que substituímos o sólido dado por uma sua versao fio de arame. É muito fácil vermos que a versão fio de arame pode ser uma representação tão fiel quanto quizermos do sólido dado: tudo o que precisamos fazer é usar uma quantidade adequadamente grande de triângulos convenientemente pequenos.


Resta observarmos que para fazer um movimento rígido qualquer da figura fio de arame basta fazermos o movimento de cada um dos vértices dos triângulos que a compõe, pois os movimentos rígidos preservam a linearidade dos lados dos triângulos.


A realização EFICIENTE do movimento rígido de uma figura qualquer



O teorema de Euler nos leva quase lá

Ele nos diz que qualquer movimento rígido pode ser escrito como uma composição M.R.T de movimentos rígidos básicos adequados: T = translação, R = rotação e M = reflexão. Mas essa composição ainda não está pronta para o uso prático. Com efeito: é fácil escrever a expressão de T, mas as de R e M só são fáceis nos casos que já vimos anteriormente: rotações em torno da origem e reflexões em torno de retas passando pela origem no caso plano e versões semelhantes no caso espacial. Contudo, é fácil ver - ao menos no caso plano - que os demais casos de reflexões e rotações podem ser escritos como composição de translações e os casos fáceis de rotações e reflexões.

Por exemplo:
seja fazer uma rotacão de Ø graus em torno de um centro C dado. É fácil ver que essa rotação pode ser feita do seguinte modo, dado um ponto P a rotar:

  • acho P' = T -C ( P ) , onde T -C é a translação que leva o centro C até a origem
  • faço a rotação de Ø graus de P' em torno da origem, obtendo P" = R( P' )
  • acho P''' = T C ( P" ), onde T C é a transformação que leva a origem até o centro C, tendo que P''' = resultado da rotação de Ø graus de P em torno do centro C.

de modo que a rotação desejada pode ser escrita como a composição:

T C . R . T -C

onde cada transformação dessa composição é um movimento rígido básico fácil, e do qual já sabemos escrever a representacão matricial. Com efeito, indicando por u e v as coordenadas do centro C, temos:

para T -C :

x ' = - u + 10 . x
y '   - v   01 y



para a rotação R :

x ' = cos Ø- sen Ø . x
y '   sen Øcos Ø y



e para T C :
x ' = u + 10 . x
y '   v   01 y

Imitando o que foi feito para as rotações, o leitor poderá facilmente ver que as reflexões em torno de uma reta que não passa pela origem podem ser escritas na forma :

T C . M . T -C

onde M é uma reflexão do tipo fácil, ou seja: relativamente a uma reta pela origem.

Consequentemente, pelo teorema de Euler, qualquer movimento rígido plano pode ser escrito como a composição de até sete translações, reflexões e rotações do tipo fácil, ou seja: para as quais conhecemos representação matricial.

O caso espacial é mais complicado, mas continua sendo possível mostrar que qualquer rotação e reflexão pode ser escrita usando-se uma quantidade adequada de translações e de rotações e reflexões do tipo fácil. Comprovaremos a veracidade disso em exemplos abaixo.

Implementação eficiente do teorema de Euler

É fácil ver que as translações dificultam a exploração da decomposição de qualquer movimento rígido em termos de transformações que tem uma fácil de achar representação matricial. Há, contudo, uma saída simples: em vez de usar as coordenadas cartesianas ( x,y ) no plano e ( x,y,z ) no espaço, usaremos as chamadas coordenadas homogêneas ( x,y,1 ) no plano e ( x,y,z,1 ) no espaço. Com esse artifício, conseguiremos expressar as translações - bem como as rotações e reflexões - como um produto matricial. Vejamos como fazer isso no plano e espaço:

  • no plano

    cada transformação da forma:

    x ' = u + ab . x
    y '   v   cd y

    é substituída por uma transformação envolvendo uma única matriz, através de:

    x ' = abu . x
    y '   cdv   y
    1   001   1



    exemplo:
    Pelo que vimos acima, a rotação de ângulo Ø e centro C = ( u,v ) era expressa em coordenadas cartesianas pela composição de transformações

    T C . R . T -C.

    Usando coordenadas homogêneas, essa concatenação de transformações fica vantajosamente substituída pelo correspondente produto matricial:



    x ' = 10u . cos Ø- sen Ø0 . 10 - u . x
    y '   01v   sen Ø cos Ø0   01 - v   x
    1   001  
    0
    0
    1   00 1   1

    Para ilustrar um caso concreto, vejamos como rotar de 45 graus o triângulo de vértices P1 = ( 0,0 ) , P2 = ( 1,1 ) , P3 = (5,2 ) em torno do centro C = ( -1,-1 ).

    Como sen 45 = cos 45 = 0.707 ( aprox ) , pelo que vimos acima a matriz desta rotação é

    10-1 . 0.707- 0.7070 . 10 1 = 0.707-0.707
    -1
    01-1   0.707 0.7070   01 1   0.7070.707 0.414
    001  
    0
    0
    1   00 1   00 1


    De modo que as coordenadas do triângulo ROTADO são:



    x1 ' x2 ' x3 ' = 0.707-0.707-1 . 0 1 5
    y1 ' y2 ' y3 '   0.7070.7070.414   0 1 2
    1 1 1   001   1 1 1
  • no espaco

    cada transformação da forma:


    x ' = u+ abc . x
    y '   v  def   y
    z'   w  ghi   z


    é substituída por uma transformação envolvendo uma única matriz, através de:

    x ' = ab c u . x
    y '   de f v   y
    z'   gh i w   z
    1   00 0 1   1

click aqui para voltar ao indice geral