Object.prototype.distance_3d = function(other)
{
    var Yo = this;
    var Objetivo = other;

    var Nx = 0;
    var Ny = 0;
    var Nz = 0;

    var DistanciaDelObjetivo = 0;

    var DistanciaExactaX = Objetivo.x - Yo.x;
    var DistanciaExactaY = Objetivo.y - Yo.y;
    var DistanciaExactaZ = Objetivo.z - Yo.z;

    if (DistanciaExactaX < 0)
    {
        Nx = -1;
    } 
    else
    {
        Nx = 1;
    }

    if (DistanciaExactaY < 0)
    {
        Ny = -1;
    } 
    else 
    {
        Ny = 1;
    }

    if (DistanciaExactaZ < 0)
    {
        Nz = -1;
    }
     else 
    {
        Nz = 1;
    }

    var TotalDeYX = DistanciaExactaY * Ny + DistanciaExactaZ * Nz + DistanciaExactaX * Nx;
    var XPorcentaje = DistanciaExactaX * Nx / TotalDeYX;
    var YPorcentaje = DistanciaExactaY * Ny / TotalDeYX;
    var ZPorcentaje = DistanciaExactaZ * Nz / TotalDeYX;
    DistanciaDelObjetivo = (DistanciaExactaX * Nx *(XPorcentaje)) + (DistanciaExactaY * Ny *(YPorcentaje)) + (DistanciaExactaZ * Nz *(ZPorcentaje));

    return DistanciaDelObjetivo;
}
Object.prototype.distance_2d = function(other)
{
    var Yo = this;
    var Objetivo = other;

    var Nx = 0;
    var Ny = 0;

    var DistanciaDelObjetivo = 0;

    var DistanciaExactaX = Objetivo.x - Yo.x;
    var DistanciaExactaY = Objetivo.y - Yo.y;

    if (DistanciaExactaX < 0)
    {
        Nx = -1;
    } 
    else
    {
        Nx = 1;
    }

    if (DistanciaExactaY < 0)
    {
        Ny = -1;
    } 
    else 
    {
        Ny = 1;
    }

    var TotalDeYX = DistanciaExactaY * Ny + DistanciaExactaX * Nx;
    var XPorcentaje = DistanciaExactaX * Nx / TotalDeYX;
    var YPorcentaje = DistanciaExactaY * Ny / TotalDeYX;
    
    

    DistanciaDelObjetivo = 
    (DistanciaExactaX * Nx *(XPorcentaje)) 
    + 
    (DistanciaExactaY * Ny *(YPorcentaje)) 
    ;
    
    return DistanciaDelObjetivo;
}