Looking at some historical data about water, I noticed that people were determining bond angles from infrared spectra. How is this done? Aside from having a bunch of absorption frequencies indicating the modes?
This is done the same way that bond length is determined from infrared spectra.
We fit the spectra to a potential energy surface (PES), such that when the PES is fed through the Schroedinger equation, the differences in eigenvalues correspond as closely as possible to the energies of the spectral lines. The parameters of the PES are changed at each iteration until the fit to the spectral energies no longer improves significantly. The bond angles, bond lengths, and atomization energies are usually parameters of the PES model, so fitted values for them (along with their uncertainties) are obtained quite directly (for this reason, the procedure is often called a Direct Potential Fit or DPF).