The afw.::image::Wcs class is not a well-written base class for Wcs, but is instead a thin layer on wcslib. Furthermore it contains a number of methods that I think can be eliminated or made free functions, including:
(note that the middle two of these mutate the Wcs yet are marked "const".)
Here are concrete suggestions:
- Change Wcs to an abstract base class for Wcs that knows nothing about wcslib
- Make Wcs and its subclasses immutable
- Think carefully about which methods we really need. Make other required behavior a free function.
- Make a new subclass of Wcs that wraps wcslib
- Rename TanWcs to TanSipWcs, for clarity. The current name is very confusing to those not familiar with the code.