Buscar

ACFrOgBN196PCcsujAy8oWnp0uQWuqbqnZ9-JhEQ4WmjLrinPyh-yDxJJ5sgZ9Jb7I6FpY5jXUdbPD5fi7tFOg-R-KicW1NIG50ZNYPkJGC5rQPe5--19_4fYzJ07TsgGZY_C26EhA8mDd2vfCAA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Computação II Auxílio de Laboratório 7
Este documento serve para ajudar a quem não conhece a matemática por trás da lista 7, ele acompanha a
lista 7, não é autoexplicativo.
1. (2 pontos) A função calcularAngulo recebe números seno e coseno, verifique se seno2+ coseno2 = 1,
senão, retorna None pois isso significa que seno e coseno não representam seno e cosseno de um ângulo.
Calcule arco coseno do coseno – pode usar a função math.acos, para calcular o ângulo. Só que cos(α) =
cos(−α), portanto arco coseno de coseno retorna α ∈ [0, π] mesmo que o ângulo α original foi de (π, 2π).
Portanto temos que usar o seno – a gente sabe que sin(α) < 0 para α ∈ (π, 2π).
2. (5 pontos) O método analisarIsometria recebe uma matriz Ab de formato (2,3) (não precisa conferir).
A última coluna da Ab representa um vetor de translação b. Se a submatriz A formada pelas primeiras
duas linhas e colunas da Ab for orthogonal, ela representa uma isometria. Mas se np.transpose(A)@A
não for igual à matriz de identidade, retorna a mensagem "A transformacao não é uma isometria.".
Use o método np.allclose para conferir se duas matrizes são iguais.
Se A for orthogonal, calcule o determinante dela. Se np.linalg.det(A) for menor que 0, sabemos que
há reflexão na transformação. Nesse caso sabemos que a matriz de rotação pode ser calculada como
A = A@np.transpose(R), onde R representa a matriz de reflexão, i.e., R = np.array([[1,0],[0,-1]]).
Calcule o ângulo de rotação a partir dos elementos da matriz de rotação A usando o método calcularAngulo.
Se o ângulo for diferente de zero, inclua essa informação na string de retorno.
Confere se o vetor de translação b é diferente de vetor nulo, se for diferente, inclua a informação que há
uma translação na transformaçao.
3. (3 pontos) O método comporIsometria recebe três parâmetros de entrada: um ângulo (em radianos),
um vetor de translação b cujo valor default é um vetor de zeros, e um valor booleano cujo valor default é
False que indica se há reflexão em torno de eixo x ou não na isometria a ser composta.
Cria um np.ndarray representando a matriz de rotação A a partir do ângulo passado como parâmetro,
usando as funções math.cos math.sin, veja o exercício 2 para saber como é a matriz de rotação definida.
Se haver reflexão na transformação, faça A a ser igual a multiplicação matricial de A com a matriz
R = np.array([[1,0],[0,-1]]).
A matriz aumentada a ser retornada é igual á Ab = np.column_stack((A,b)).
1

Continue navegando