Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Combinando Transformações | Transformações Geométricas
Modelagem Geométrica com Python

Combinando Transformações

Deslize para mostrar o menu

Ao trabalhar com formas geométricas, muitas vezes é necessário aplicar mais de uma transformação a uma forma. Esse processo é chamado de composição de transformações. A ordem em que você aplica as transformações—como translação, rotação e escala—é extremamente importante, pois cada transformação altera a posição, o tamanho ou a orientação da forma de uma maneira que afeta a próxima operação.

Suponha que você comece com um polígono e queira transladá-lo (movê-lo), depois rotacioná-lo e, por fim, escalá-lo. Se você mudar a ordem—por exemplo, escalar primeiro, depois rotacionar e, por último, transladar—poderá obter um resultado muito diferente. Isso ocorre porque as transformações não são comutativas: A seguida de B nem sempre produz o mesmo resultado que B seguida de A.

Para combinar transformações, aplique cada uma à forma em sequência. Cada etapa utiliza o resultado da etapa anterior como entrada. Essa abordagem permite construir manipulações complexas a partir de operações simples, mas é fundamental estar sempre atento à ordem.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define a simple triangle polygon polygon = np.array([ [0, 0], [1, 0], [0.5, 1], [0, 0] ]) # Translation: move by (2, 1) def translate(points, tx, ty): return points + np.array([tx, ty]) # Rotation: rotate by theta degrees around origin def rotate(points, theta_deg): theta = np.radians(theta_deg) rotation_matrix = np.array([ [np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)] ]) return points @ rotation_matrix.T # Scaling: scale by (sx, sy) def scale(points, sx, sy): scaling_matrix = np.array([ [sx, 0], [0, sy] ]) return points @ scaling_matrix.T # Apply transformations translated = translate(polygon, 2, 1) rotated = rotate(translated, 45) scaled = scale(rotated, 1.5, 0.5) # Plotting plt.figure(figsize=(6, 6)) plt.plot(polygon[:, 0], polygon[:, 1], 'bo-', label='Original') plt.plot(translated[:, 0], translated[:, 1], 'go-', label='Translated') plt.plot(rotated[:, 0], rotated[:, 1], 'ro-', label='Rotated') plt.plot(scaled[:, 0], scaled[:, 1], 'mo-', label='Scaled') plt.legend() plt.axis('equal') plt.title('Combining Translation, Rotation, and Scaling') plt.show()
question mark

Qual afirmação melhor descreve por que a ordem de aplicação das transformações importa ao combiná-las?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 7

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 2. Capítulo 7
some-alt