Expose icosahedron faces, base cell mapping, and IJK orientation?
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 6.5k
- Forks
- 627
- Avg merge
- 3d 21h
- Merged PRs (30d)
- 6
Description
I've been thinking a lot about the various corner cases (no pun intended) the various algos have run into with pentagons where the triangles corners meet.
I think it would be a useful debugging tool (and a useful teaching aide, as well) if the 20 icosahedron faces could be exposed from the API with their coordinates and orientations (perhaps the orientation implicit from the coordinates, first pair being the furthest in the I direction, next furthest in the J, last furthest in the K?).
It would make it easier to see what coordinate orientation changes are required to transition "through" a pentagon and how there are a few different rules depending on which icosahedron you're transitioning from (since as I recall, 5 of the faces have all of their I directions meet at the same point near the north pole, another 5 have the I directions meet at the same point near the south pole, and an equatorial-like ring of 10 triangles have alternating orientations for the I direction, leading to 2 or three sets of icosahedron points when grouped by which orientations for each face are "pointed at" that point.
Functions like that could help with figuring out the h3Line issue, for instance (perhaps this only occurs at some pentagons and not others, and these things could help us figure out why), and could also help out with the occasional bugs that have cropped up across edges in the shared hexagons (should they have two icosahedron face parents)?
Its unclear to me if the H3Index should have a new mode to declare them (perhaps? h3ToParent on a base cell could return a value that way).
Something I've been thinking about since I feel half or more of the issues with the algos hitting pentagons is due to it not being clear in our minds how the coordinate orientations are being changed.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the API and the H3Index discussion, especially the proposed h3ToParent behavior for base cells and the relationship to h3Line. Define how icosahedron face coordinates, base-cell mapping, and IJK orientations should be represented and exposed, then verify that the design addresses pentagon transitions and shared-hexagon edge cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- api
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100