public FrameArea intersect(FrameArea other) throws NoIntersectionException {
		if (other == null) {
			throw new NoIntersectionException();
		}
		
		if (getMaxX() < other.getMinX() ||
			getMinX() > other.getMaxX() ||
			getMaxY() < other.getMinY() ||
			getMinY() > other.getMaxY()) {
			throw new NoIntersectionException();
		}
		
		int inter_min_x = getMinX() > other.getMinX() ? getMinX() : other.getMinX();
		int inter_min_y = getMinY() > other.getMinY() ? getMinY() : other.getMinY();
		int inter_max_x = getMaxX() < other.getMaxX() ? getMaxX() : other.getMaxX();
		int inter_max_y = getMaxY() < other.getMaxY() ? getMaxY() : other.getMaxY();
		
		return new FrameArea(inter_min_x, inter_min_y, inter_max_x, inter_max_y);
	}