Noticias

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

¿Como calcular la distacia entre dos vectores de la forma más eficiente?

Iniciado por ftejada, Junio 25, 2015, 09:20:37 AM

Tema anterior - Siguiente tema
Hola a todos.... tengo una dudilla
 
Se que en terminos de com***cion el tema de calcular la raiz cuadrada es una acción que consume bastante. Y para calcular la distancia (Vector3.distance) imagino que debe hacer la raiz cuadrada...
 
Mi pregunta es ¿Existe alguna funcion en la API de Unity para calcular solo el cuadrado de la distancia entre dos vectores? es decir el mismo calculo que la funcion Vector3.Distance pero sin utilizar la raiz cuadrada.
 
He buscado en la interface pero no he visto ninguna que pueda ser...
 
Espero vuestra respuesta, un saludo y gracias....

Leete bien todas las respuestas de este enlace: http://answers.unity3d.com/questions/125882/vectordistance-performance.html
 
 
Si aún así quieres probar con una fórmula que no dependa de raíz cuadrada, usa ésto: http://www.claysturner.com/dsp/FastMagnitude.pdf

Cita de: pioj date=1435233818Leete bien todas las respuestas de este enlace: http://answers.unity3d.com/questions/125882/vectordistance-performance.html" rel="external nofollow">http://answers.unity3d.com/questions/125882/vectordistance-performance.html
 
 
Si aún así quieres probar con una fórmula que no dependa de raíz cuadrada, usa ésto: http://www.claysturner.com/dsp/FastMagnitude.pdf" rel="external nofollow">http://www.claysturner.com/dsp/FastMagnitude.pdf
Gracias por contestar... voy a verlo. Saludos

Entiendo que quieres hacer el calculo de distancia pero sin realizar el ultimo paso la raiz cuadrada (ya que si vas a comparar no te hace falta) No es asi??
Vale entonces porque no realizas la operacion manualmente es decir si lo que dices es cierto Vector2.distance es Mathf.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)) siendo a y b las posiciones no??
Entonces porque no simplemente escribes: (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)
 
PD: No se si el distance susara la raiz a lo mejor usa algun algoritmo dificil para un ser humano pero que sea menos cargante en cuanto a com***cion y que saque un resultado aproximado

Pioj ya te ha dado la respuesta. sqrMagnitude te devuelve la longitud de un vector, pero antes de aplicarle la "molesta" raíz cuadrada.

Etiquetas: