Marble/GeoPainter: Difference between revisions

From KDE TechBase
m (Ochurlaud moved page Projects/Marble/GeoPainter to Marble/GeoPainter)
(Page moved to community wiki)
 
Line 1: Line 1:
= Notes about GeoPainter =
{{ Moved To Community }}
 
== Concepts ==
Horizon is a spherical projection concept to decide if a point is on the viewer's side or the other.
    It is NOT dependent on viewport visibility
 
Dateline is a repeatX issue, so that a line crossing the dateline does not lead to a tear the whole map wide
 
Pole is an issue for projections which cannot draw it as a point (or even not at all)
 
Projection Drawing depends on tessellation
Tessellation is a geodetic issue, determining how to connect points. Options:
        NoTessellation: straight screen coordinates lines between projected points
        Tessellate: great circle line between projected points
                    needs horizon and dateline check
        FollowLatitude: special case when latitude is same, walk on the latitude circle
 
        do we need rhumb line (line of constant compass course)??
 
Need to keep in mind that tessellating must keep polygons that still allow fill.
 
== Current code ==
- systematically looks for poles and datelines, splitting the polyline into ones which don't cross idl or pole
 
- looking for datelines is a recursive calculus to identify latitude at which the idl is crossed
 
- iterates all points, determines
        - if horizon is crossed
        - if and which tessellation is needed
        - adds points to one QVector<QPointF>
 
== Complications ==
- looking for dateline is not necessary for Spherical, very hard for NoTessellation (screen vs Geo space)
 
- because of repeatX we calculate all possible points depending on viewport radius, then let painter frame down to visible viewport

Latest revision as of 04:47, 26 October 2016

This page is now on the community wiki.