def generate_similar_points_manhattan(self, nb_steps, step_size, return_array=False):
<EOL>points = np.zeros((nb_steps + <NUM_LIT:1> + nb_steps + <NUM_LIT:2>*(nb_steps**<NUM_LIT:2>), <NUM_LIT:2>), dtype=np.float32)<EOL>yy = np.linspace(self.y - nb_steps * step_size, self.y + nb_steps * step_size, nb_steps + <NUM_LIT:1> + nb_steps)<EOL>width = <NUM_LIT:1><EOL>nth_point = <NUM_LIT:0><EOL>for i_y, y in enumerate(yy):<EOL><INDENT>if width == <NUM_LIT:1>:<EOL><INDENT>xx = [self.x]<EOL><DEDENT>else:<EOL><INDENT>xx = np.linspace(self.x - (width-<NUM_LIT:1>)//<NUM_LIT:2> * step_size, self.x + (width-<NUM_LIT:1>)//<NUM_LIT:2> * step_size, width)<EOL><DEDENT>for x in xx:<EOL><INDENT>points[nth_point] = [x, y]<EOL>nth_point += <NUM_LIT:1><EOL><DEDENT>if i_y < nb_steps:<EOL><INDENT>width += <NUM_LIT:2><EOL><DEDENT>else:<EOL><INDENT>width -= <NUM_LIT:2><EOL><DEDENT><DEDENT>if return_array:<EOL><INDENT>return points<EOL><DEDENT>return [self.deepcopy(x=points[i, <NUM_LIT:0>], y=points[i, <NUM_LIT:1>]) for i in sm.xrange(points.shape[<NUM_LIT:0>])]<EOL>
Generate nearby points to this keypoint based on manhattan distance.

To generate the first neighbouring points, a distance of S (step size) is moved from the
center point (this keypoint) to the top, right, bottom and left, resulting in four new
points. From these new points, the pattern is repeated. Overlapping points are ignored.

The resulting points have a shape similar to a square rotated by 45 degrees.

Parameters
----------
nb_steps : int
    The number of steps to move from the center point. nb_steps=1 results in a total of
    5 output points (1 center point + 4 neighbours).

step_size : number
    The step size to move from every point to its neighbours.

return_array : bool, optional
    Whether to return the generated points as a list of keypoints or an array
    of shape ``(N,2)``, where ``N`` is the number of generated points and the second axis contains
    the x- (first value) and y- (second value) coordinates.

Returns
-------
points : list of imgaug.Keypoint or (N,2) ndarray
    If return_array was False, then a list of Keypoint.
    Otherwise a numpy array of shape ``(N,2)``, where ``N`` is the number of generated points and
    the second axis contains the x- (first value) and y- (second value) coordinates.
    The center keypoint (the one on which this function was called) is always included.