<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def compute_fov(self, x, y, fov='PERMISSIVE', radius=None, light_walls=True, sphere=True, cumulative=False):
 """Compute the field-of-view of this Map and return an iterator of the points touched. Args: x (int):
 Point of view, x-coordinate. y (int):
 Point of view, y-coordinate. fov (Text):
 The type of field-of-view to be used. Available types are: 'BASIC', 'DIAMOND', 'SHADOW', 'RESTRICTIVE', 'PERMISSIVE', radius (Optional[int]):
 Maximum view distance from the point of view. A value of 0 will give an infinite distance. light_walls (bool):
 Light up walls, or only the floor. sphere (bool):
 If True the lit area will be round instead of square. cumulative (bool):
 If True the lit cells will accumulate instead of being cleared before the computation. Returns: Iterator[Tuple[int, int]]: An iterator of (x, y) points of tiles touched by the field-of-view. """

        # refresh cdata
        if radius is None: # infinite radius
            radius = 0
        if cumulative:
            fov_copy = self.fov.copy()
        lib.TCOD_map_compute_fov(
            self.map_c, x, y, radius, light_walls, _get_fov_type(fov))
        if cumulative:
            self.fov[:] |= fov_copy
        return zip(*np.where(self.fov))