//copy constructor
 public Segment(Segment cpy)
 {
     startX = cpy.StartX;
     endX = cpy.EndX;
     startY = cpy.StartY;
     endY = cpy.EndY;
     m = cpy.getM();
     b = cpy.getB();
     lX = cpy.getLX();
     hX = cpy.getHX();
     vert = cpy.isVert();
 }
 //checks if segments intersect on given interval
 public bool intersect(Segment inter)
 {
     float interX;
     //returns false if lines are parallel
     if (inter.getM() == m && inter.getB() == b)
     {
         return false;
     }
     //if one of the segments is verticle, chacks if second segment intersects it
     if (vert)
     {
         if (startX < inter.getHX() && startX > inter.getLX())
         {
             return true;
         }
     }
     else if (inter.isVert())
     {
         if (inter.startX < hX && inter.startX > lX)
         {
             return true;
         }
     }
     //else determines point of intersection based on m and b values and checks if intersection on interval bounded by the segments
     else
     {
         interX = (b - inter.b) / (inter.m - m);
         if (interX > lX && interX < hX)
         {
             return true;
         }
     }
     
     return false;
 }