class callVector
{
  public static void main(String [] args)
  {
    //Decalaration of varaibles
    
    //Two points
    Point3D pt1 = new Point3D(1,2,3);
    Point3D pt2 = new Point3D(4,5,6);
    Point3D pt3 = new Point3D(7,8,9);
    Point3D pt4 = new Point3D(0,10,11);
    Point3D de = new Point3D(1,1,1);
    
    //Two lines
    Line3D Line1 = new Line3D(pt1,pt2);
    Line3D Line2 = new Line3D(pt3,pt4);
    Line3D cpyOfLine1 = new Line3D(Line1);
    Line3D Line3 = new Line3D();
    
    //Two vectors
    Vector3D obj1 = new Vector3D();
    Vector3D obj2 = new Vector3D(Line1);
    Vector3D obj3 = new Vector3D(obj2);
    Vector3D unitVectorobj2 = new Vector3D();
    Vector3D dotVector = new Vector3D();
    Vector3D crossVector = new Vector3D();
    
    //Testing the toString method for Line3D
    System.out.println("pt1 = " + pt1);
    System.out.println("pt2 = " + pt2);
    System.out.println("pt3 = " + pt3);
    System.out.println("pt4 = " + pt4);
    System.out.println("Line1 (pt1, pt2) = " + Line1);
    System.out.println("Line2 (pt3, pt4) = " + Line2);
    System.out.println("cpyOfLine1 = " + cpyOfLine1);
    System.out.println("Line3 = " + Line3);
    System.out.println("Line 1 = Line 2: " + Line1.equals(Line2));
    
    //Testing the equals method for Vector3D
    System.out.println("_____________________________________________________");
    System.out.println("TEST equals:");
    System.out.println("obj2 = " + obj2);
    System.out.println("obj3 = " + obj3);
    System.out.println("obj2 = obj3: " + obj2.equals(obj3));
    
    //Testing the areVectorsEqual method
    System.out.println("_____________________________________________________");
    System.out.println("TEST areVectorsEqual:");
    System.out.println("Line1 = " + Line1);
    System.out.println("Line2 = " + Line2);
    System.out.println("Line1 vector = Line2 Vector: " + Line1.areVectorsEqual(Line2));
    
    //Testing the norm method
    System.out.println("_____________________________________________________");
    System.out.println("TEST norm:");
    System.out.println("obj2 = " + obj2);
    System.out.println("obj2 norm = " + obj2.norm());
    
    //Testing the scalar multiple method
    System.out.println("_____________________________________________________");
    System.out.println("TEST scalarMult:");
    System.out.println("obj2 = " + obj2);
    obj2.scalarMult(2);
    System.out.println("2*obj2 = " + obj2);
    
    //Testing the unit vetcor
    System.out.println("_____________________________________________________");
    System.out.println("TEST unitVector:");
    System.out.println("obj2 = " + obj2);
    System.out.println("unit vector obj2 = " + obj2.unitVector());
    
    //Testing the dot product method
    System.out.println("_____________________________________________________");
    System.out.println("TEST dotProduct:");
    System.out.println("obj2 = " + obj2);
    System.out.println("obj3 = " + obj3);
    System.out.println("obj2 . obj3 = " + Vector3D.dotProduct(obj2,obj3));
    
    //Testing the cross product method
    System.out.println("_____________________________________________________");
    System.out.println("TEST crossProduct:");
    System.out.println("obj2 = " + obj2);
    System.out.println("obj3 = " + obj3);
    System.out.println("obj2 X obj3 = " + Vector3D.crossProduct(obj2,obj3));
    
    //Testing the isParallel method
    System.out.println("_____________________________________________________");
    System.out.println("TEST isParallel:");
    System.out.println("obj2 = " + obj2);
    System.out.println("obj3 = " + obj3);
    System.out.println("obj2 || obj3 = " + obj2.isParallel(obj3));        
  }
}
