Pular para o conteúdo principal

Destaque

Dia 298 a 303 - Matemática com Freya Holmer #6

 

Trigonometria

Ângulos

    Ângulos, sempre são relativos a algo (tipo eu tenho um triangulo e quero saber o ângulo de uma de suas arestas em relação a outra) e pode ser em relação a um eixo

Nessa imagem aqui o ângulo é calculado em relação ao eixo X positivo.

    Tem varias formas de dizer um ângulo, podemos usar o grau, ou podemos usar voltas (1 volta = 360°, 0,5 volta = 180°, 0.75 = 270°, 0.25 = 90°) e voltas também poderiam ser expressas em frações (1 volta = 1, 0,5 volta = 1/2 , 0.25 = 1/4).
E também temos os radianos.

    Na matemática temos o TAU que é igual a circunferência de um circulo de raio 1, TAU vale 6.28... (normalmente o TAU não é chamado assim, ele é chamado de 2PI (já que ele é 2x o valor de PI)).
  • PI = C/ D (circunferência, diâmetro)
  • TAU = C/r (circunferência, raio)
    Então por exemplo, 90° (0,25 ou 1/4 de volta) seriam 0,25 TAU., se fosse PI ficaria 0,25 * 2PI = 0,5PI o que não é muito intuitivo...
  • r * ângulo = circunferência 

Seno e Cosseno

    Sabe eu nunca entendi isso de seno, cosseno e tangente... mas é tão simples, quando as coisas tem um uso prático... em vez de ser apenas teórico, tudo parece se tornar mais claro.

    Mas é extremamente simples, é apenas um DOT do ângulo, nos dois eixos horizontal e vertical. e isso nos permite converter entre vetor2D e "ângulo", então Cosseno é o Dot do eixo X, e Seno é o Dot do eixo Y.

Agora, o relacionamento entre Cos/Sen e DOT. 
OBS: o ^ na imagem representa o vetor normalizado e o |A| representa o comprimento do vetor, e o símbolo grego alfa representa o ângulo.

    Fiz uns testes, fiz um circulo, tentei fazer uma espiral... acabei fazendo um tipo de shuriken estranha :/ e umas outras formas legais, enfim matemática é foda.

Tangente

    O Tangente é o comprimento de uma direção perpendicular ao vetor em direção ao eixo X a a partir do vetor. (o vídeo acima torna essa explicação mais clara)
    Observando a tangente (olhe o vídeo denovo) podemos notar que ela e o vetor e o eixo X sempre vão formar um triangulo retângulo.
OBS: conforme o vetor for se tornando mais próximo de se tornar paralelo ao eixo Y, a tangente vai aumentando, até que ela se torne infinita.

exemplo de uso

    Um exemplo, temos objetos em uma cena e queremos que a câmera exiba todos eles e para isso eu vou alterar o campo de visão (FOV) da câmera, então eu preciso descobrir o ângulo, eu posso usar a distância dos objetos e conseguir o valor de b, o valor de a seria um pouquinho mais complicado de calcular, mas não é impossível e a partir disso existem algumas formulas matemáticas que se podem ser usadas, que relacionam os catetos opostos e adjacentes de um triangulo com a tan/cos/sen do ângulo.

fonte: Trigonometric functions wikipedia

    Na Unity temos o Mathf.Tan(); e o Mathf.Atan(); .pelo que entendi da explicação (1:29h aprox.) se eu usar essa formula acima eu teria a Tangente de alfa, mas se eu calcular o Arco Tangente (Atan) eu terei o ângulo de alfa...
(Dia 299 - 05/03 - vou rever depois a ultima parte que vi)

    Em outro momento ela diz que a versão normal da função (cos, sin, tan) vai do ângulo para a coordenada, enquanto a versão "a" (acos, asin, atan) ela vai da coordenada para o ângulo.
(na verdade o que ela dá é o comprimento e com isso dá pra descobrir a coordenada) 

Também temos o Atan2 que converte de uma direção para um ângulo.

Outros

    Além de Seno, Cosseno e Tangente existem outras, mas ela diz serem meio que opcionais, normalmente apenas aquelas 3 bastam para fazer tudo.

Exemplos práticos 

De ângulo para vetor

(Dia 300 - 06/03 - Até 1:54h)

De vetor para ângulo


    Se de ângulo para vetor, você usa sin e cos, então de vetor para ângulo você poderia usar o inverso, ou seja asin e acos.
    Mas o problema é que asin e acos, recebem um dos eixos e retornam um ângulo em rad, o problema disso é que eles por si só não diferenciam se o vetor está do lado negativo ou positivo do outro eixo.
    Então um acos poderia retornar 45°, sendo 45° ou 315°, já que ambos os vetores teriam o mesmo valor em x. logo asin e acos sempre daria uma resposta entre 0° e 180°, você poderia fazer toda uma lógica para descobrir o quadrante e o ângulo exato, mas é mais fácil usar o atan2, que já faz isso tudo para você.

Ângulo entre dois vetores


OBS: Nesse aqui ela citou que na prática, tem que dar um clamp no dot entre -1 e 1, matematicamente isso nunca ocorreria, mas quando devido a detalhes técnicos pode acontecer, deve ter relação com floats...
(Dia 301 -07/03 - Até 2:25h) 


Triângulos

    As vezes tem problemas que podem ser decompostos em triângulos, quando se trata de descobrir um ângulo de um triangulo, você precisa ter ao menos 2 informações.


    E também é possível inverter as formulas, por exemplo, se eu tiver a tangente e o cateto adjacente, eu posso:

Tan = O/A
O = Tan * A

    Alias a Freya, possui essa ferramenta aqui bem legal: Triangle Solver
(Dia 302 -08/03 - Até 2:38h) 

Determinant

    Como eu tinha dito antes, o Cosseno é basicamente um Dot usando o vetor do ângulo e a direção do eixo X, temos também uma forma de descobrir o Seno usando apenas esses dois vetores, que é usando o determinante.
    O determinante é considerado o Cross do 2D, por que ele meio que retorna a área seguindo a mesma logica do Cross 3D, ele retorna o dobro da área de um triangulo feito usando os dois vetores.

(Dia 303 -09/03 - fim) 

Comentários