Skip to content

What problem do the distortion verteces solve ? Why are they there/necessary ? Better/more clear explanation desired... #971

@SkybuckFlying

Description

@SkybuckFlying

Introduction:

UBER H3 pentagons/hexagons/polygons sometimes have 5,6,7,8,9,10 verteces, so they can be weird. These additional verteces are called "distortion" verteces.

The UBER H3 library seems to inject them across/on top of edges as illustrated/described by a few postings, examples are:

https://stackoverflow.com/questions/60727617/how-many-possible-h3-geoboundary-vertex-configurations-are-there
https://observablehq.com/@nrabinowitz/h3-index-inspector#85080013fffffff
https://observablehq.com/@nrabinowitz/h3-index-inspector#85080003fffffff%0A%0A
https://observablehq.com/@nrabinowitz/h3-index-inspector#cell-428

Also other github uber-h3 issues:

#755 (comment)
#760

The explanation given for the distortion vertices from the first link is:

"At odd resolutions, cell edges that cross an edge of the icosahedron will have additional distortion vertices added to account for the change in projection plane (at even resolutions, the cells are aligned with the icosahedron edges and do not require this)." by nrabinowitz on Mar 17, 2020 at 20:17

I don't quite understand this explanation, I don't understand projection plane entirely, or maybe I do a little bit.

I thought I saw more documentation about this somewhere, I think it mentioned that it also effects to coordinate system ? Though I am not sure, maybe I imagined it.

So here is the deal/questions:

  1. Why are these distortion verteces necessary ?

  2. What problem do they solve ?

  3. What would happen if they are left out ?
    3.1 Would it cause coordinate issues ?
    3.2 or indexing issues ? For example Lattitude Longitude to Index or visa versa ? Or H3 coordinate to something else or vice versa ? Could it happen that it ends up on the wrong polygon or index or something like that ? Could it give wrong coordinates ?

  4. Might it be possible to leave out these distortion verteces for algorithms that might be effected by it ?

  5. Maybe modify the UBER-H3 implemention to make distortion verteces optional ? Maybe not all applications require these distortion verteces and could do without it ?

Some more clearification on this, plus maybe examples of what would go wrong without these distortion vertices would be much appreciated !

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions