  We provide a remarkably simple algorithm to compute all (at most four) common
tangents of two disjoint simple polygons. Given each polygon as a read-only
array of its corners in cyclic order, the algorithm runs in linear time and
constant workspace and is the first to achieve the two complexity bounds
simultaneously. The set of common tangents provides basic information about the
convex hulls of the polygons---whether they are nested, overlapping, or
disjoint---and our algorithm thus also decides this relationship.

Computational Geometry