martes, 14 de julio de 2009

Calcula la distancia entre dos puntos de cualquier lugar del sistema de coordenadas

Si los puntos se encuentran en cualquier lugar del sistema de coordenadas, la distancia queda determinada por la relación:


Para demostrar esta relación se deben ubicar los puntos A(x1,y1) y B(x2,y2) en el sistema de coordenadas, luego formar un triángulo rectángulo de hipotenusa AB y emplear el teorema de pitágoras.


El algoritmo que se debe seguir para calcular la distancia entre los puntos A(7,5) y B (4,1) es el siguiente:






El resultado es 5 unidades.




Código en Java
package javaapplication1;


import javax.swing.JOptionPane;


public class Main {


public static void main(String[] args) {


double x1,x2,y1,y2,d; //Declaración de la variables


//Lectura de datos


x1 = Double.parseDouble(JOptionPane.showInputDialog("Ingrese x del punto A:"));


y1 = Double.parseDouble(JOptionPane.showInputDialog("Ingrese y del punto A:"));


x2 = Double.parseDouble(JOptionPane.showInputDialog("Ingrese x del punto B:"));


y2 = Double.parseDouble(JOptionPane.showInputDialog("Ingrese y del punto B:"));


//procesamiento


d = Math.hypot(x2-x1, y2-y1);


//Muestra de los resultados


JOptionPane.showMessageDialog(null, "La distancia entre los puntos \nA("+x1+","+y1+") y B("+x2+","+y2+") es ="+d);


}//fin main
}//fin clase

En este ejemplo hemos utilizado el método Math.hypot(x,y) => que devuelve el teorema de pitagoras justo lo que necesitamos, tambien podríamos haber utilizado Math.sqrt(Math.Pow(x2-x1),2+Math.pow(y2-y1,2))

7 comentarios:

  1. Tambien lo puedes hacer como objeto...
    esta es la manera en como yo lo realize..

    //creas un class llamado Coordenada

    class Coordenada
    {
    //atributos privados
    private double x;
    private double y;

    double leeDatos(String v)
    {
    double n;
    try
    {
    n=Double.parseDouble(v);
    }
    catch(Exception e)
    {
    n=0;
    }
    return n;
    }

    public Coordenada(String m)
    {
    String n[]=m.split(",");
    x=leeDatos(n[0]);
    y=leeDatos(n[1]);
    }

    //constructor
    public Coordenada(double v)
    {
    setX(v);
    setY(v);
    }

    public Coordenada(Coordenada otro)
    {
    setX(otro.getX());
    setY(otro.getY());
    }

    //sets y gets
    void setX(double x_)
    {
    x=x_;
    }
    void setY(double y_)
    {
    y=y_;
    }
    double getX()
    {
    return x;
    }
    double getY()
    {
    return y;
    }
    //sobre carga
    public String toString()
    {
    return x+"";
    }

    public Coordenada equals(Coordenada otro)
    {
    d=Math.sqrt((getX()-otro.getX())*(getX()-otro.getX())+(getY()-otro.getY())*(getY()-otro.getY()));
    Coordenada tmp=new Coordenada(d);
    return tmp;
    }
    }



    //creas un nuevo class llamado TesCoordenada

    import javax.swing.*;
    class TesCoordenada
    {
    public static void main(String arg[])
    {
    String lee;
    Coordenada a,b,c;
    lee=JOptionPane.showInputDialog("PRIMERA COORDENADA");
    a=new Coordenada(lee);

    lee=JOptionPane.showInputDialog("SEGUNDA COORDENADA");
    b=new Coordenada(lee);

    c=a.equals(b);
    JOptionPane.showMessageDialog(null,"La Distancia es: "+c);
    System.exit(0);
    }
    }

    ResponderEliminar
  2. hola tengo una duda digamos que tengo una matriz [m][3] filas y columnas en cada fila tengo almacenadas las coordenadas de x, y y z de un punto, deseo calcular las distancias de la matriz [m][3] con esta otra de 3 por n columnas digamos que esta matriz tiene coordenadas y deseo conocer la distancia.. para este caso como seria el codigo para que calcule la distancia de la matriz m por 3 con la matriz de 3 por n

    yo calculo las distancias pero para un componente de la matriz por favor ayudenme necesito explicitamente el codigo para que la formula de la distancia se repita tantas veces como puntos coordenados hallan

    muchas gracias

    ResponderEliminar
  3. Buenas tengo una duda, ese resultado viene dado en que medida?, metro, kilometro...

    ResponderEliminar
  4. y si es para calcular la distancia entre dos putnos pero de coordenadas X, Y y Z?, es decir en 3 dimensiones

    ResponderEliminar
  5. me aparece en consola emergente? que hace posible eso?

    ResponderEliminar