Skip to content

Feature: ISEA projection (generalized)#2

Closed
felixpalmer wants to merge 1 commit into
felix/polyhedral-dseafrom
felix/polyhedral-isea
Closed

Feature: ISEA projection (generalized)#2
felixpalmer wants to merge 1 commit into
felix/polyhedral-dseafrom
felix/polyhedral-isea

Conversation

@felixpalmer
Copy link
Copy Markdown
Owner

Overview

This PR is stacked on top of the root PR: OSGeo#4758 - please see there before reviewing

Adds support for the ISEA projection, implemented using the generic polyhedral projection code. Could be used to replace the existing isea projection

Change list

  • Add configuration files for implementing ISEA: hexakis_icosahedron.h
  • Add configurations for output nets: nets/isea2/***.h
  • Register new projection
  • Include in test render scripts

Example renders ISEA

isea_net isea_original

@@ -0,0 +1,135 @@
// Auto-generated by scripts/generate_isea_mapping.py — DO NOT EDIT
Copy link
Copy Markdown
Collaborator

@jerstlouis jerstlouis Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@felixpalmer Is the script committed in any of these PRs?
Couldn't we just generate this dynamically when setting up the projection instead? (I would personally prefer that over hardcoded constants).

We could even potentially support describing the polyhedron, and the mapping of great circles, with a parameter instead?

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Honestly I decided not to commit that as it was messy and I didn't want to make this large contribution even more complex. I'm not sure if such a polyhedron generator should be in PROJ, it feels a bit like feature creep.

Perhaps we could find a way to extract the values from a well-known source, e.g. https://dmccooey.com/polyhedra/DisdyakisTriacontahedron.txt

Open to discussion here, this was an area where I wasn't sure what would be best. If you have such a script then you could try adapting it for this purpose and we could see how it looks

Copy link
Copy Markdown
Collaborator

@jerstlouis jerstlouis Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given how flexible you have this already, and the original isea projection initially tried to support multiple polyhedron, and that the 1992 paper actually was about general "polyhedral", my preference would be a parameter to specify the polyhedron and generate these dynamically. But I'd like to discuss with you to better understand how flexible the code currently is in terms of going beyond Snyder (which implied the "center" of the face), and support for the Truncated Icosahedron etc.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My code to generate the 12 vertices of the icosahedron (centroids of the dodeahedron faces) is here:

https://github.com/ecere/dggal/blob/main/src/projections/ri5x6.ec#L345

and then the d120 vertices can easily be obtained by calculating the midpoints and then the centroids by using the normalized midpoints as done here:

https://github.com/ecere/dggal/blob/main/src/projections/ri5x6.ec#L103

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The polyhedron vertices are one thing, but calculating the net isn't so simple for all the various cases.

Once you have the net then just storing a bunch of triangles is simple, even it is verbose. I would argue that explicit is better than implicit in this case.

As a first iteration of supporting this in PROJ it would be simpler to omit the generators, and they could be added as a followup.

Let's discuss offline so we don't span the comments going back and forth

@felixpalmer
Copy link
Copy Markdown
Owner Author

Closing as ISEA is now in root PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants