  Given $S= \{v_1, \dots, v_n\} \subset \mathbb{R} ^m$ and $p \in \mathbb{R}
^m$, testing if $p \in conv(S)$, the convex hull of $S$, is a fundamental
problem in computational geometry and linear programming. First, we prove a
Euclidean {\it distance duality}, distinct from classical separation theorems
such as Farkas Lemma: $p$ lies in $conv(S)$ if and only if for each $p' \in
conv(S)$ there exists a {\it pivot}, $v_j \in S$ satisfying $d(p',v_j) \geq
d(p,v_j)$. Equivalently, $p \not \in conv(S)$ if and only if there exists a
{\it witness}, $p' \in conv(S)$ whose Voronoi cell relative to $p$ contains
$S$. A witness separates $p$ from $conv(S)$ and approximate $d(p, conv(S))$ to
within a factor of two. Next, we describe the {\it Triangle Algorithm}: given
$\epsilon \in (0,1)$, an {\it iterate}, $p' \in conv(S)$, and $v \in S$, if
$d(p, p') < \epsilon d(p,v)$, it stops. Otherwise, if there exists a pivot
$v_j$, it replace $v$ with $v_j$ and $p'$ with the projection of $p$ onto the
line $p'v_j$. Repeating this process, the algorithm terminates in $O(mn \min
\{\epsilon^{-2}, c^{-1}\ln \epsilon^{-1} \})$ arithmetic operations, where $c$
is the {\it visibility factor}, a constant satisfying $c \geq \epsilon^2$ and
$\sin (\angle pp'v_j) \leq 1/\sqrt{1+c}$, over all iterates $p'$. Additionally,
(i) we prove a {\it strict distance duality} and a related minimax theorem,
resulting in more effective pivots; (ii) describe $O(mn \ln
\epsilon^{-1})$-time algorithms that may compute a witness or a good
approximate solution; (iii) prove {\it generalized distance duality} and
describe a corresponding generalized Triangle Algorithm; (iv) prove a {\it
sensitivity theorem} to analyze the complexity of solving LP feasibility via
the Triangle Algorithm. The Triangle Algorithm is practical and competitive
with the simplex method, sparse greedy approximation and first-order methods.
