28 octubre 2013

rectngulo

import java.awt.geom.Point2D;
import java.util.Scanner;

/**
 * @author Nestor Fico Cuchuyrume Mamani
 * @version 1.0 Creada 23 de Octubre del 2013.
 */
public class DemoRect {

public static void main(String [] args)
{
Scanner sc=new Scanner(System.in);

double x,y,x1,y1;

System.out.print("Ingrese primera esquina del 1er rectangulo: ");
x=sc.nextDouble();
y=sc.nextDouble();
System.out.print("Ingrese segunda esquina del 1er rectangulo: ");
x1=sc.nextDouble();
y1=sc.nextDouble();

Point2D.Double p1 = new Point2D.Double(min(x,x1),min(y,y1));
Point2D.Double p2 = new Point2D.Double(max(x,x1),max(y,y1));




System.out.print("Ingrese primera esquina del 2er rectangulo: ");
x=sc.nextDouble();
y=sc.nextDouble();
System.out.print("Ingrese segunda esquina del 2er rectangulo: ");
x1=sc.nextDouble();
y1=sc.nextDouble();

Point2D.Double p3 = new Point2D.Double(min(x,x1),min(y,y1));
Point2D.Double p4 = new Point2D.Double(max(x,x1),max(y,y1));


MiRectangulo rectangulo1=new MiRectangulo(p1,p2);
MiRectangulo rectangulo2=new MiRectangulo(p3,p4);

System.out.println("Rectanulo A = "+rectangulo1);
System.out.println("Rectanulo B = "+rectangulo2);

rectangulo2.CasoRectangulo(rectangulo1);

}

/**
* Para determinar los puntos inferiores
* @param x double
* @param x1 double
* @return regresa menor valor
*/
public static  double min(double x,double x1){
if(x return x;
else
return x1;
}
/**
* Para determinar los puntos superiores
* @param x double
* @param x1 double
* @return regresa mayor valor
*/
public static  double max(double x,double x1){
if(x return x1;
else
return x;
}
}



////////////////////////////////////////////////////////////////////////////////////////


import java.awt.geom.Point2D;


public class MiRectangulo {
/**
* puntoInferiorIzq representara las coordenadas del
* punto inferior izquierdo del rectangulo.
* puntoSuperiorDer representara las coordenadas del
* punto superior derecho del rectangulo.
*/
private Point2D.Double puntoInferiorIzq;
private Point2D.Double puntoSuperiorDer;

/**
* constructor de la clase para inicializar directamente
* con dos puntos con sus respectivas coordenadas
* @param pt1 double
* @param pt2 double
*/
MiRectangulo(Point2D.Double pt1, Point2D.Double pt2) {
setPuntoInferiorIzq(pt1);
setPuntoSuperiorDer(pt2);
}

/**
* Asigna valores deseados a punto inferior izquierda
* @param pt con cordenaas x e y
*/
public void setPuntoInferiorIzq(Point2D.Double pt) {

puntoInferiorIzq=new Point2D.Double(pt.x,pt.y);

}
/**
* Asigna valores deseados a punto superior derecha
* @param pt con cordenaas x e y
*/
public void setPuntoSuperiorDer(Point2D.Double pt) {

puntoSuperiorDer=new Point2D.Double(pt.x,pt.y);
}
/**
* @return punto inferior izquierda del rectangulo
*/
public Point2D.Double getPuntoInferiorIzq() {

return puntoInferiorIzq;
}
/**
* @return punto superior derecha del rectangulo
*/
public Point2D.Double getPuntoSuperiorDer() {

return puntoSuperiorDer;
}
/**arr toma valores de los x e y de los puntos
* para hallar el area y verificar casos
* @param rx, rectangulo x para comparar con el rectangulo 1
* El for que se muestra ordena los valores del array en cada fila
* xx es la suma de las longitudes horizontales de los rectangulos
* yy es la suma de las longitudes verticales de los rectangulos
*/
public void CasoRectangulo(MiRectangulo rx)
{
int i,j,k;
double x;
double [][] arr = {
{rx.puntoInferiorIzq.x,rx.puntoSuperiorDer.x,puntoInferiorIzq.x,puntoSuperiorDer.x},
{rx.puntoInferiorIzq.y,rx.puntoSuperiorDer.y,puntoInferiorIzq.y,puntoSuperiorDer.y},
                  };

for(k=0; k      for (i=1; i            j=i;        
           while (j>0 && arr[k][j-1]>arr[k][j]){
           
                 x=arr[k][j];
                 arr[k][j]=arr[k][j-1];
                 arr[k][j-1]=x;
                 j--;
           }
     }
}

double area=Math.abs((arr[0][2]-arr[0][1])*(arr[1][2]-arr[1][1]));

double xx=Math.abs(puntoSuperiorDer.x-puntoInferiorIzq.x)+Math.abs(rx.puntoSuperiorDer.x-rx.puntoInferiorIzq.x);
double yy=Math.abs(puntoSuperiorDer.y-puntoInferiorIzq.y)+Math.abs(rx.puntoSuperiorDer.y-rx.puntoInferiorIzq.y);

if(xx
System.out.println("Rectanguloa A y B son disjuntos.");
}
else{
if(area==0){

System.out.println("Rectanguloa A y B se tocan.");
        }
else{
System.out.println("Rectanguloa A y B se sobreponen.");
System.out.println("Area sobrepuesta = "+Math.abs(area));
}

}
}


//Muestra las coordenada como: ([1.0, 2.0], [23.0, 4.0])
public String toString(){

return "(["+puntoInferiorIzq.x+", "+puntoInferiorIzq.y+"], ["+puntoSuperiorDer.x+", "+puntoSuperiorDer.y+"])";
}

}

No hay comentarios: