We present an output-sensitive algorithm that guarantees optimality in worst case and efficiency in practice to compute the intersection of two simple polygons, whose time complexity is O(n log n+k), and of which space complexity is O(n+k), where n=|P|+|Q|, k is the number of intersection points boundaries of P and Q. We also present an O(n) time O(n) space algorithm to compute two polygons which are star-shaped and their kernels are intersected.