Jump to content

getDistanceBetweenPoints2D


Alexs

Recommended Posts

Buenas tardes, para quienes lo deseen les dejo estas dos fórmulas que son el reemplazo matemático equivalente a 'getDistanceBetweenPoints2D' y 'getDistanceBetweenPoints3D' y que se ejecutan a un aproximado de 112.5% de velocidad en comparación:

--Para puntos cartesianos bidimensionales: 
(( (x2 - x1)^2 + (y2 - y1)^2 ) ^ .5) 
  
--Su extensíon al espacio tridimensional: 
(( (x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2 ) ^ .5) 
  
--Basta con reemplazar las variables x1, y1, z1, x2, y2 y z2 para obtener la distancia entre los puntos. 
  

Siéntanse libres de añadir todo lo necesario para un uso más cómodo dentro de MTA.

Edited by Guest
Link to comment
xD con math.sqrt es lo mismo y sin usar esa funcion.

La función math.sqrt obtiene la raíz cuadrada, equivalente matemático de elevar a un medio de la unidad, así que no, no es lo mismo. Esas funciones sólo aplican la fórmula geométrica de distancia entre puntos cartesianos y su análogo tridimensional.

Link to comment
Yo estoy contento con mis funciones default pero aún así, muy buen aporte.

Pues las funciones hacen exactamente lo mismo, con la diferencia de que es más rápido aplicar la fórmula que llamar a una función de MTA. Eso es útil dentro de eventos como 'onClientRender'.

Puedes almacenar la función en una variable fuera del render.. es lo mismo.

Link to comment
Puedes almacenar la función en una variable fuera del render.. es lo mismo.

No lo es. Si lo piensas un segundo te darás cuenta de que aplicar la fórmula matemática es más eficiente y rápido por obvios motivos.

En detalle, ejecutar directamente 'getDistanceBetweenPoints3D' tarda .00048 milisegundos; ejecutar la función almacenada en una variable tarda .00045 milisegundos; ejecutar la fórmula matemática desde una función ocupa .00054 milisegundos; pero, finalmente, utilizar la fórmula de manera directa tardaría aproximadamente .0004 milisegundos.

Queda claro cual es la mejor opción.

* Actualizo el post para aclarar el mejor método de uso.

Edited by Guest
Link to comment

Basta con ver los tiempos de ejecución para ver que no funciona así, además la solución sería tan sencilla como cambiar el nombre.

Igualmente, es innegable que es más rapido hacer aplicación directa de la fórmula (sin utilizar una función por medio) para obtener una mayor eficiencia. Si tú no deseas eso, entonces sigue utilizando las funciones que MTA innecesariamente provee.

Edited by Guest
Link to comment
En fin. Buen trabajo :)

PD: Lo que me falta por aprender Matemáticas.

Es la formula básica del teorema de pitagoras, sencillamente resta las coordenadas para posicionarlo en el origen y luego obtiene la suma de los cuadrados de los catetos (la distancia de cada punto al origen) y obtiene la raíz cuadrada que sería el valor de la hipotenusa (la distancia entre los puntos).

Esto:

maxresdefault.jpg

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...