Glad to see more graphics work being done in Go. This is built on `pinhole`, which is built on `gg`, a 2D rendering library that I wrote. How many layers deep can we get? :)
gg and pinhole made this easy to write. The globe package really just deals with mapping (lat, lng) space to cartestian coordinates (and also includes some land/country datasets).
I've been following you on github for a long time (since the minecraft clone you made in C was featured in /r/programming). You are insane man, I love your work.
It's always nice seeing unique projects in Golang appear like this. Also worth noting that this includes the ability to upload directly to imgur via the github.com/mattn/imgur tool. Once thing that I particularly love about Go is the built-in testing suite which mmcloughlin makes good use of.
The only critique I have here is to see some benchmarks! :)
The map in the readme is puzzling me. It's almost like a riddle: what is there a lot of in the UK, east America, Portugal, and barely any of in Norway, Spain, and Belgium? It looks country-related, since you can see the borders defined pretty well. Is it the Starbucks data? It would explain why Finland appears to have a few, compared to its neighbours.
How possible / appropriate would it be to utilize this library to create an interactive version similar to this example using d3: https://www.jasondavies.com/maps/rotate/
Does anyone know why isn’t it possible to get the same perspective (preserving scale, distances, areas) in Google Earth Web?
For example, you wouldn’t be able to get the shapes of continents along with the size of the whole globe in Google Earth visually match the projection under “line” example in README.
There are lots of different map projections[1] and coordinate systems[2]. As the old joke goes, "the best thing about standards is there are so many to choose from!"
If you want to map whole planet’s surface onto a plane then sure, there’re tons of options (Dymaxion projection is my favorite). I can’t understand why areas and distances would be distorted if user manipulates a 3D globe though; yet it seems to be the case here.
That is exactly the problem. It is easy for programmers to start with a 3D sphere and start randomly projecting things on to it. However the earth itself is an ellipsoid that bulges around the equator, so again you have a projection problem of people trying to put one shape onto a different shape.
The left and right side of the rectangle are correctly bent around the shape of the globe. However, the top and bottom sides of the rectangle are not. Is this intention (or am I being stupid?)
The red lines are the shortest paths between the corners of the rectangle, not lines of constant latitude (which would follow the latitude lines drawn on the globe).
Looks really cool! How many points can one draw with this before it becomes too slow?
I did a similar looking 3D globe animation with WebGL once and the total number of points was quite an issue
I guess I wanted to use it to visualize data coming from other Go projects I was working on, so it made sense. A tiny example of this is https://github.com/mmcloughlin/spherand which correctly generates random points on a sphere. I also had seen pinhole (https://github.com/tidwall/pinhole) and thought it would be fun to play around with.
Team friendlyness, simplicity, readability, tooling, native compilation, built in syntax for concurrency and really fast compilation times for large projects.
Few of these, honestly, benefit one man side projects. If you want to learn Go (for whatever reason) its fine, but otherwise I personally would prefer more expressive and less dogmatic language.
Two people see cool sideproject in Go, his thoughts "damn this looks good, I need to learn Go", my thoughts "Whyyy you do this in Go and not D? Simplistic Go has no strong sides here! Why nobody promotes my favourite language with things like this, it deserves hype no less!"
I guess it's because no one is writing anything "cool" in D?
Simplistic Go has a lot going for it - focussing on knocking out cool projects rather than the minutiae of build/package/dependency systems is one of them.
Its because D has way less developers, support and, consequently, way less hype, than a language backed by one of the biggest world corporations in existence.
Anyway, care to elaborate whats wrong with excellent build/package/dependency system in D called Dub? Never had any problems with it.
https://github.com/fogleman/gg