Rework Mosaic Tool
This MR reworks the Mosaic Tool to improve mosaic making even further.
(Side note about rotations, which I commented out for now from the FOV computation: yes they exceed bounds, but not too much)
Tiles are now rendered as transparent red gradient in an attempt to clarify the display. Target Field of View is rendered under tiles to make holes, where tiles fail to overlap, more apparent. Tiles are now rotated to show their actual orientation when capturing. Tiles render their sequence order, RA/DEC and angle against the mosaic center as overlay.
Fields now dynamically update rendering and other dependent settings:
- Overlap is given more user interface emphasis, and updates Grid.
- Grid updates Field of View.
- Field of View updates Grid.
The
Reset
button is renamedCover FOV
and resets the Field of View from Grid. Field of View can be configured once, then Overlap can be used to control the number of tiles. All controls now have more or less detailed tooltips.
Tiles may now overlap up to 90 percent, allowing single-stack mosaics.
Tiles are now sequenced to minimise telescope movement by default (S-shaped mosaic).
The Right Ascension of tiles is now adjusted from the declination of the tile itself instead of the mosaic center, in an attempt to resolve the offset issue clearly visible near celestial poles. Because this is still a plane projection, the solution is not perfect but should be usable with proper overlap. The following screenshot is a mosaic set on Polaris:
I chose to prevent tile generation when its rotation exceeds 90 degrees compared to the center tiles of the mosaic. Still, it does not prevent the end-user to force the algorithm to behave weird near celestial poles. The mosaic size is still limited to 10x10, but I think the tool could be processing more.
In the code, the UI is now a protected opaque member of the Mosaic class, which reduce the build dependency (a bit). I did not change the Tiles themselves to QGraphicItem
s (this will remain a to-do for now) so the font size used to render texts is a bit hacky and will not scale well.