<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def orthogonal_basis(self):
 """Return an orthogonal basis to this direction. Note ---- Only implemented in 3D. Returns ------- :obj:`tuple` of :obj:`Direction` The pair of normalized Direction vectors that form a basis of this direction's orthogonal complement. Raises ------ NotImplementedError If the vector is not 3D """

        if self.dim == 3:
            x_arr = np.array([-self.data[1], self.data[0], 0])
            if np.linalg.norm(x_arr) == 0:
                x_arr = np.array([self.data[2], 0, 0])
            x_arr = x_arr / np.linalg.norm(x_arr)
            y_arr = np.cross(self.data, x_arr)
            return Direction(x_arr, frame=self.frame), Direction(y_arr, frame=self.frame)
        raise NotImplementedError('Orthogonal basis only supported for 3 dimensions')