sábado, 9 de outubro de 2010

Problema 3.8

Este é um problema trivial do ponto de vista da programação, mas que obriga a ter conhecimentos sobre o domínio (neste caso trigonometria). Não existe um modo único de encontrar as fórmulas que definem o módulo (r), e o ângulo (teta) em função de x e de y. Aqui, optámos por usar o teorema de Pitágoras para chegar ao módulo e o arco tangente para obter o ângulo. Quem tiver dúvidas vai ter que rever os seus conhecimentos sobre trigonometria...


def cartesiana_para_polar(x,y):
""" converte de coordenadas cartesianas para polares."""
r = sqrt(x**2 + y**2)
theta = math.atan(float(y)/x)
return r, theta


Nota: Usar a função atan() pode trazer problemas pois o quadrante do ângulo não é determinada. Por exemplo, se as coordenadas forem (1,1) e (-1,-1) , vamos ter sempre o mesmo resultado, 45º, e não esse, na primeira situação, e 135º na segunda. Também há problemas caso o ponto seja (1,0). A solução está em usar atan2():



def cartesiana_para_polar(x,y):
""" converte de coordenadas cartesianas para polares."""
r = sqrt(x**2 + y**2)
theta = math.atan2(y,x)
return r, theta


Notar a vírgula a separar os argumentos, em vez da divisão.

Sem comentários:

Enviar um comentário