I've managed to get plenty accomplished on Windows and Python 3 (32-bit), but I do worry every time I want to install a package that I'll have problems. Case in point: the PIL package apparently has a complete fork to get it to work with Python 3, which took me a while to figure out. That was only after looking at some unrelated library called Construct, which was way more complicated than what I needed.
I did get this made at least:
Maybe the rest of this post should go in the science thread.
That's a cylindrical projection of the solar energy received by a planet's surface over the course of a single day for the planet. Full white means that that section of the planet's surface is receiving approximately as much power as Earth would from the sun at its peak (1 Solar Luminosity). Full black means no power. The solar system in question consists of two medium-small binary stars in a close orbit, plus that planet and its single ring. You can see at the start of the animation that the planet's surface is darker because one star is hidden behind the other, but it rapidly becomes visible as its orbit progresses. The top of the image is brighter than the bottom because the ring is reflecting some of the stars' light back to the planet, and the dark line through the center is a shadow cast by the planet's ring. I'm considering adding support for the planet's minor satellites, but they're tiny and it's already getting pretty slow if I turn up the resolution very much. I think maybe the ring is reflecting too much light back, but I set its albedo to be the same as the moon.
By the way, this could probably be considered a terrible, terrible example of needless complexity, since I'm doing this for a
text based game that I'm developing. This is a debug image generated for my purposes. I want to have realistic day and night cycles for the unusual solar configuration and ring, so a simulator was the easiest way to get that. It will also let me theoretically add in some weather simulation later, although at that point I might have to move the astronomical calculations to another process (I gather that Python doesn't support concurrent threads so you must use multiple processes?). If I do that I can probably ramp up the resolution a bit and decrease the update interval since it's not like second-by-second updates matter much.
Oh well, at least I was able to verify that my hand calculations on the system were reasonably valid and that a planet at that orbit should be habitable and have a pretty stable climate. The simulator already showed me something unexpected: the planet has only about a 5 degree tilt so I figured seasons would be very mild. The ring makes an enormous difference though, maybe making the seasons more pronounced than on Earth. More experimenting is needed.
All told it works out to about 1,000 lines of Python code I think, consisting of tons and tons and tons of trigonometry and linear algebra. I shudder to think how much C++ code this would have taken.