orangeadam3 / terra121

A Minecraft Terrain Generating Mod for Cubic Chunks 1.12.2. attempting to generate real terrain, biomes, and features on a 1:1 scale
MIT License
282 stars 40 forks source link

[Suggestion] Universal Transverse Mercator Projection #77

Closed LexSong closed 4 years ago

LexSong commented 4 years ago

Wikipedia: Universal Transverse Mercator

The UTM system divides the Earth into 60 zones, each 6° of longitude in width. The amount of distortion is held below 1 part in 1,000 inside each zone.

I wrote a script to demonstrate what it looks like if we put all the zones together into one single map: world

Each zone is 668,224m east to west, 20,000km south to north, or 41,764 by 1,250,000 chunks in Minecraft. I think it's an interesting alternative way to map the whole world while keeping the distortion minimal. The boundaries between the zones will be an issue. However, we should be able to config what zone each chunk should belong to, and to put boundaries into oceans or deserts, for example.

orangeadam3 commented 4 years ago

Any projection needs to be a bijective mapping (not having duplicate locations) and in terms of overall distortion, this seems fairly similar to equirectangular. Look at the size of Antarctica. There is always distortion, some maps are just better at hiding it.

LexSong commented 4 years ago

Locally distortion should be minimal. Just look at the size of Iceland, British Isles, and Svalbard. Globally the map would look like equirectangular projection. However, we duplicate high latitude regions instead of distorting them.

We could avoid duplication and just filling the gaps with oceans, but I would argue that it may actually look worse: Image

I don't see bijective mapping is an issue here. Each zone should be a bijective mapping and we could easily determine the zone number by checking the longitude.

orangeadam3 commented 4 years ago

It does need to be bijective because a reverse function is also required. You are welcome to fork and try to implement the version with oceans filling the gaps. Projections are just child-classes of GeographicProjection (I could give you more details if you are interested). I can't promise bte would adopt it but I would be happy to add it as an option to my mod.

LexSong commented 4 years ago

Close this issue as #82 is merged