Horizons are geologically significant surfaces that can be extracted from seismic images. Color coding of horizons based on amplitude or other attributes can help reveal ancient sedimentary environments and structural features. Extracted horizons are also used for building structure models and stratigraphic interpretations. We propose two methods for constructing seismic horizons aligned with reflectors in a 3D seismic image. The first method generates horizons one at a time; the second method generates an entire volume of horizons at once by first computing a relative geologic time volume from seismic normal vectors. Rather than gradually building a horizon by extending one or more seed points to a surface along seismic reflectors, both of our methods generate whole horizons at once by solving partial differential equations derived from seismic normal vectors. The most significant new aspect of both methods is the ability to specify, perhaps interactively during interpretation, a small number of control points that may be scattered throughout a 3D seismic image. Experiments revealed that with our method, control points enable the extraction of more accurate horizons from seismic images in which noise, unconformities, and faults are apparent. These points represent constraints that we implemented as preconditioners in the conjugate gradient method used to construct horizons.