Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Trigonometría con Mathf en Unity

Iniciado por kingtrase, Febrero 13, 2017, 04:35:19 PM

Tema anterior - Siguiente tema
Febrero 13, 2017, 04:35:19 PM Ultima modificación: Abril 02, 2017, 03:51:27 PM por kingtrase
Trigonometría con Mathf
 
Hola a todos, Me dispongo a hacer unas explicaciones de trigonometría Mathf y como funciona, y algo de explicaciones matematicas al respecto. Explicare los metodos mas importantes de la trigonometría.
 
Explicare primero los arcos de coseno, seno y tangente. explicando en ellos el coseno, seno y tangente a su vez. luego mostrare como funciona Mathf.cos, Mathf.sin y Mathf.tan aparte sin explicar matematicamente cada uno, ya que han sido explicados junto a sus arcos.
 
Mathf.Abs
 
Este es sencillo y facil de entender asi que no me entretengo, Abs retorna el valor absoluto de un valor X
 

Debug.Log(Mathf.Abs(-2045.34f));
//Vemos que estamos pasando el valor -2045.34f, el valor retornado sera 2045.34
//Si el valor que le pasamos a Mathf.Abs() es -10, este nos retornara 10.
//En definicion, Abs retornara el valor positivo.

 
Mathf.Acos
 
Esta devuelve el Arcocoseno de un valor, recordar que lo devuelve en radianes.
 
Que es coseno: Quiero explicar antes el coseno para poder entender mejor el arcocoseno. (Al igual que haré con seno, el codigo de ejemplo lo pondre para Mathf.Cos())
 

 
el coseno es la razon entre: El cateto adyacente (b) a dicho ángulo y la hipotenusa (c) en un triangulo rectangulo.
 
esto quiere decir que cos α = b / c
 
donde α es el valor angular con un dominio de [0,π]. (cuando hablamos de dominio, queremos decir un rango entre un minimo y un maximo, en este caso el minimo es 0 y el maximo 3.14159265359)
 
Esta es la grafica de coseno:
 
 
 
Que es Arcocoseno: Por definicion es la funcion recíproca de coseno, Esta es el arco cuyo coseno es alfa.
 

 
arcocoseno restringe el dominio de la funcion coseno a (x) [-1,1] donde su codominio (α) [0, π].
 
Donde x es el valor comprendido entre -1 y 1 de la linea que vemos en la imagen, y α es la  aceleración angular por unidad de tiempo.
 

float x = ; //0 es exactamente es exactamente la bisectriz del primer y el tercer cuadrante de la grafica de arcocoseno.
Debug.Log(Mathf.Acos(x));
//Devolvera (1/2)π radianes, que es 1,57 radianes. que en grados es 0.
//Si X fuese 0.7, Devolveria (1/4)π radianes, que es 0,785 radianes. que son 45 grados.

 
La tabla de valores comunes es:
 
Valor dominio X:    -1        -√2/2       -1/2        0       1/2        √2/2        1
 
            Angulos:   180      135       120        90        60          45         0
 
         Radianes:     π        3/4π       5/6π     1/2π    1/3π      1/4π       0
 
Que son Radianes:
 
El radian es la unidad de ángulo plano, en el sistema de medidas, 1rad = r. donde r es el radio de la circunferencia. y la circunferencia siempre vale 2π radianes. Esto quiere decir que 1 radian en valor decimal es equivalente la la longitud del radio. os dejo una imagen que aclara bastante la mente.
 

 
Mathf.Approximately
 
Segun la referencia oficial de unity: (Este metodo lo añado por que me parecia interesante)
 



   
      Compara dos valores de punto flotante si son similares.
Debido a la imprecisión del punto flotante no se recomienda comparar los flotantes usando el operador igual. p.ej. 1.0 == 10.0 / 10.0 puede no devolver true.
   

[/quote]

//En vez de:
if(1.0f == 10.0f / 10.0f)...
//Hacer esto:
if(Mathf.Aproximately( 1.0f, 10.0f / 10.0f )...

 
(Supongo que esto es mejor usarlo con valores float largos como pueda ser π.)
 
Mathf.Asin
 
Este metodo devuelve el arcoseno de un valor, Recordar que lo devuelve en Radianes.
 
Que es seno: Como con arcocoseno ya explique el coseno, con arcoseno explicare el seno.
 

 
el seno es la razon entre: El cateto opuesto (a) a dicho ángulo y la hipotenusa (c) en un triangulo rectangulo.
 
esto quiere decir que sen α = a / c  (La diferencia con coseno es que coseno usa cateto adyacente, y este usa el opuesto al ángulo)
 
donde α es el valor angular con un dominio de [0,π].
 
Esta es la grafica de seno:
 
Ahora que sabemos que es el seno: 
 



   
       
   
   
      La curva del coseno (antes vista) es la curva del seno desplazada

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE()_๑۩۞۩๑ 




Muy buen trigonotutorial! , yo hubiera agregado algo que se usa mucho que son las sinusoides temporales, como el efecto de "camera bobbing", y tambien en shaders como el efecto wave. Ejemplo:
 

cam. y += amplitud * Mathf.Sin(time * frecuencia + fase);
time += Time.deltaTime;

 
Gracias por el aporte

Me alegro que les guste muchachos, @lightbug queria añadir mas cositas pero por tiempo y longitud del post lo dejare para otra ocasion, muchas gracias!

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE()_๑۩۞۩๑ 



Wow. Menudo curro te has pegado.
 
Muchisimas gracias,mañana le pegare un repaso.

@hammer gracias tio, me alegro que te guste, espero te sirva y un saludo!

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE()_๑۩۞۩๑ 




Etiquetas: