|
|
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
| |
This page is now on the community wiki.