def between(origin, destination)
      vector = Vector.new(origin, destination)

      if vector.diagonal? || vector.orthogonal?
        point_counter = origin.point
        direction = vector.direction
        _squares = []

        while point_counter != destination.point
          point_counter = point_counter + direction
          square = find_by_x_and_y(point_counter.x, point_counter.y)
          if square && square.point != destination.point
            _squares.push(square)
          end
        end
      else
        _squares = []
      end

      self.class.new(squares: _squares)
    end
def between(origin, destination)
      vector = Vector.new(origin, destination)

      if vector.diagonal? || vector.orthogonal?
        point_counter = origin.point
        direction = vector.direction
        _squares = []

        while point_counter != destination.point
          point_counter = point_counter + direction
          square = find_by_x_and_y(point_counter.x, point_counter.y)
          if square && square.point != destination.point
            _squares.push(square)
          end
        end
      else
        _squares = []
      end

      self.class.new(squares: _squares)
    end
Returns squares between a and b.
 Only squares that are in the same diagonal will return squares.

 @param [Square] a
   a square.

 @param [Square] b
   another square.

 @return [SquareSet]

 ==== Example:
   # Get all squares between square_a and square_b
   square_set.between(square_a, square_b)