<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def unproject(self, x, y, z=-1.0):
 """Receive x and y as screen coordinates and returns a point in world coordinates. This function comes in handy each time we have to convert a 2d mouse click to a 3d point in our space. **Parameters** x: float in the interval [-1.0, 1.0] Horizontal coordinate, -1.0 is leftmost, 1.0 is rightmost. y: float in the interval [1.0, -1.0] Vertical coordinate, -1.0 is down, 1.0 is up. z: float in the interval [1.0, -1.0] Depth, -1.0 is the near plane, that is exactly behind our screen, 1.0 is the far clipping plane. :rtype: np.ndarray(3,dtype=float) :return: The point in 3d coordinates (world coordinates). """


        source = np.array([x,y,z,1.0])
    
        # Invert the combined matrix
        matrix = self.projection.dot(self.matrix)
        IM = LA.inv(matrix)
        res = np.dot(IM, source)
        
        return res[0:3]/res[3]