  We envision programmable matter as a system of nano-scale agents (called
particles) with very limited computational capabilities that move and compute
collectively to achieve a desired goal. We use the geometric amoebot model as
our computational framework, which assumes particles move on the triangular
lattice. Motivated by the problem of sealing an object using minimal resources,
we show how a particle system can self-organize to form an object's convex
hull. We give a distributed, local algorithm for convex hull formation and
prove that it runs in $\mathcal{O}(B)$ asynchronous rounds, where $B$ is the
length of the object's boundary. Within the same asymptotic runtime, this
algorithm can be extended to also form the object's (weak) $\mathcal{O}$-hull,
which uses the same number of particles but minimizes the area enclosed by the
hull. Our algorithms are the first to compute convex hulls with distributed
entities that have strictly local sensing, constant-size memory, and no shared
sense of orientation or coordinates. Ours is also the first distributed
approach to computing restricted-orientation convex hulls. This approach
involves coordinating particles as distributed memory; thus, as a supporting
but independent result, we present and analyze an algorithm for organizing
particles with constant-size memory as distributed binary counters that
efficiently support increments, decrements, and zero-tests --- even as the
particles move.
