import java.util.Scanner;

public class Vector 
{
  static Scanner teclado = new Scanner(System.in);
  
  double x=0;
  double y=0;
  double r=0;
  double ang=0;
  
  
  
  public static void main(String[] args) 
  { 
    System.out.println("Operaciones con vectores en el plano");
    
    System.out.print("Vector 1");
    Vector v1 = new Vector();
    if (  v1.leerVector()==true )
    {
      System.out.print("(x,y)="+v1.toStringRectangular());
      v1.calcularPolar();
      System.out.print(v1.toStringPolar());
    }
    else 
    {return;}
    
    boolean repetir = true;
    for (int i=2;repetir==true;++i)
    {
      System.out.print("\n\nVector "+  i );
      Vector v2 = new Vector();
      if ( v2.leerVector()==true)
      {
        if (i==2)
        {
          System.out.print("(x,y)="+ v2.toStringRectangular());
          v2.calcularPolar();
          System.out.print(v2.toStringPolar());
          
          Vector respuesta = new Vector ();
          
          System.out.print("\n\nVector"+(i-1)+ " + " +"Vector"+(i)+"=");
          respuesta = v1.sumar(v2); 
          System.out.print(respuesta.toStringRectangular());
          System.out.print("\nVector"+(i)+ " + " +"Vector"+(i-1)+"=");
          respuesta = v2.sumar(v1);
          System.out.print(respuesta.toStringRectangular());
          System.out.print("\nVector"+(i-1)+ " - " +"Vector"+(i)+"=");
          respuesta = v1.restar(v2);
          System.out.print(respuesta.toStringRectangular());
          System.out.print("\nVector"+(i)+ " - " +"Vector"+(i-1)+"=");
          respuesta = v2.restar(v1);
          System.out.print(respuesta.toStringRectangular());
          System.out.println();
          respuesta=v1;
        }
      }
      else 
      {repetir = false;}
      
      if (i>2) 
      {
        v1=v2;//para copiar los valores anteriores de la respuesta y no eliminarlos (crear una copia)
        v2 = new Vector();
        if (v2.leerVector()==true)
        {
          System.out.print("(x,y)="+ v2.toStringRectangular());
          v2.calcularPolar();
          System.out.print(v2.toStringPolar());
          
          Vector respuesta = new Vector ();
          
          System.out.print("\n\nVector"+(i-1)+ " + " +"Vector"+(i)+"=");
          respuesta = v1.sumar(v2); 
          System.out.print(respuesta.toStringRectangular());
          System.out.print("\nVector"+(i)+ " + " +"Vector"+(i-1)+"=");
          respuesta = v2.sumar(v1);
          System.out.print(respuesta.toStringRectangular());
          System.out.print("\nVector"+(i-1)+ " - " +"Vector"+(i)+"=");
          respuesta = v1.restar(v2);
          System.out.print(respuesta.toStringRectangular());
          System.out.print("\nVector"+(i)+ " - " +"Vector"+(i-1)+"=");
          respuesta = v2.restar(v1);
          System.out.print(respuesta.toStringRectangular());
          System.out.println();
          v1=respuesta;
        }
        else 
        {repetir = false;}
      }
      
    }//for
  }//main_____________________________
  
  public boolean leerVector()
  {
    System.out.println("\nV (x,y):");
    System.out.print("\nx:"); 
    x=teclado.nextDouble(); 
    System.out.print("\ny:");
    y=teclado.nextDouble();
    if(x==0 || y==0)
    {return false;}
    else 
      return true;
  }//rectangular___________________________
  
  public void calcularPolar()
  {
    System.out.print("\n(r, angulo):"); 
    r=Math.sqrt((x*x)+(y*y));
    ang=Math.atan2(y,x);;
    
  }//polar___________________________
  
  public String toStringRectangular()
  {
    return String.format("( %,.2f , %,.2f )",x,y);
  }//rectangulares___________________________
  
  public String toStringPolar()
  {
    return String.format("( %,.2f , %,.2f )",r,ang);
  }//polares___________________________
  
  public Vector sumar(Vector otra)
  {
    Vector resultado = new Vector ();
    resultado.x = this.x + otra.x;
    resultado.y = this.y + otra.y;
    return resultado;
  }//sumar___________________________
  
  public Vector restar(Vector otra)
  {
    Vector resultado = new Vector ();
    resultado.x = this.x - otra.x;
    resultado.y = this.y - otra.y;
    return resultado;
  }//restar___________________________
  
}//class
