O básico que a maioria não explica direito
A diferença entre rotação e translação é, na prática, a diferença entre mover um objeto de um ponto a outro sem girá-lo e fazer esse objeto girar em torno de um eixo. Ponto. Mas quando você entra no mundo real — seja em computação gráfica, robótica, animação 3D ou até mesmo em desenvolvimento de jogos — as coisas complicam rápido. Eu trabalhava com um sistema de posicionamento de câmeras em um motor 3D interno e tinha um problema recorrente: objetos que deveriam simplesmente se deslocar pelo cenário acabavam girando de forma inesperada só porque a ordem das operações de transformação não estava clara. A causa? Translações aplicadas antes de rotações em sistemas que usam matrizes de transformação homogêneas. Se você faz uma translação e depois uma rotação, o ponto de pivô da rotação muda. O objeto gira em torno da origem global, não do seu próprio centro. Isso gera comportamentos que parecem bugs mas são matemática pura.
qual a diferença entre rotação e translação na prática
Vamos deixar claro cada um e depois mostrar onde as pessoas erram. Rotação é a mudança de orientação de um objeto em torno de um ponto ou eixo. Na prática, você especifica um ângulo e um eixo (em 3D) ou apenas um ângulo (em 2D). O objeto mantém sua posição relativa ao eixo, mas sua orientação muda. Em computação gráfica, isso é representado por matrizes de rotação, que dependem da ordem dos eixos: rotação em X, depois Y, depois Z produz resultados diferentes de Z, Y, X. Esse é um erro clássico. Eu vi colegas perderem meia manhã debuggando uma animação que só estava "rodando errado" porque o engine aplicava as rotações na ordem Euler padrão e o artista esperava outra coisa.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Translação é o deslocamento de todo o objeto ao longo de uma direção, sem alterar sua orientação. Você especifica um vetor (dx, dy, dz) e cada ponto do objeto é movido por esse vetor. Simples. O problema é que translação, sozinha, é sempre previsível. É só quando você mistura com rotação que as coisas ficam confusas. Um detalhe que pouca gente menciona: em sistemas de coordenadas homogêneas, translação não é uma operação linear. Por isso usamos matrizes 4x4 para representar transformações 3D. A rotação ocupa o canto superior esquerdo 3x3 da matriz, e a translação fica na última coluna. Multiplicar vetores por essa matriz aplica ambas as transformações de uma vez. O truque é que a ordem de multiplicação das matrizes define a ordem das transformações, e isso é contra-intuitivo para quem está começando. Matriz A multiplicada por B aplica B primeiro, depois A. Isso é o oposto do que o cérebro tende a pensar naturalmente.
Outro ponto onde os iniciantes tropeçam: rotação local vs. rotação global. Quando você gira um objeto, pode girá-lo em torno do seu próprio sistema de coordenadas local ou em torno do sistema de coordenadas global. Em motores como Unity, você tem transform.Rotate() (rotação local) e transform.RotateRelative() (rotação global). Escolher o errado gera animações que parecem quebradas, mas na verdade são corretas — só não no referencial que você esperava. Quanto à translação, o erro mais comum é assumir que mover um objeto para uma posição específica é apenas chamar setPosition(x, y, z). Em pipelines de renderização com skinned mesh ou hierarquias de pais e filhos, a posição final depende de todas as transformações da cadeia. Se o pai se move, o filho acompanha. Se você transladar o filho diretamente sem considerar o espaço do pai, o resultado não é onde você espera.
Na minha experiência, a solução para esses problemas não é decorar fórmulas. É visualizar o sistema de coordenadas em cada nível da hierarquia e entender que rotação altera a orientação do eixo local do objeto, enquanto translação altera a posição da origem desse eixo. Se você tiver dúvida sobre o comportamento de uma transformação, desenhe os eixos X, Y, Z em papel antes de confiar no engine. Funciona. Para quem quer testar isso na prática, recomendo usar ferramentas gratuitas como Blender. Criar dois cubos, aplicar uma rotação de 90 graus no eixo Z e depois transladar um deles em 5 unidades no eixo X mostra imediatamente a diferença. Aplique a translação primeiro e depois a rotação e compare o resultado. A ordem importa. Sempre.