//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; }