In geometry, a bitangent to a curveC is a lineL that touches C in two distinct points P and Q and that has the same direction as C at these points. That is, L is a tangent line at P and at Q.

The four bitangents of two disjoint convex polygons may be found efficiently by an algorithm based on binary search in which one maintains a binary search pointer into the lists of edges of each polygon and moves one of the pointers left or right at each steps depending on where the tangent lines to the edges at the two pointers cross each other. This bitangent calculation is a key subroutine in data structures for maintaining convex hullsdynamically (Overmars & van Leeuwen 1981). Pocchiola and Vegter (1996a, 1996b) describe an algorithm for efficiently listing all bitangent line segments that do not cross any of the other curves in a system of multiple disjoint convex curves, using a technique based on pseudotriangulation.

Bitangents may be used to speed up the visibility graph approach to solving the Euclidean shortest path problem: the shortest path among a collection of polygonal obstacles may only enter or leave the boundary of an obstacle along one of its bitangents, so the shortest path can be found by applying Dijkstra's algorithm to a subgraph of the visibility graph formed by the visibility edges that lie on bitangent lines (Rohnert 1986).

Related concepts

A bitangent differs from a secant line in that a secant line may cross the curve at the two points it intersects it. One can also consider bitangents that are not lines; for instance, the symmetry set of a curve is the locus of centers of circles that are tangent to the curve in two points.