I tweaked MapExplainer to be a little bit better, corrected some minor issues with the Projection metadata, added real descriptions to my custom parameterised projections, and fixed a critical bug with WinkelTripel's inverse solution.
I spent a while tweaking my optimization algorithm and trying to figure out why it sucks so much (i.e. why it keeps giving me trash maps), and I think I figured it out. Gradient descent sucks. At least, with this system it does. The functions are too stiff, the numbers too variable in orders of magnitude. Tobler never reaches a good set of parameters because one of its parameters uses degrees instead of radians, so it descends 3,000 times slower. How messed up is that?
I did some research, and I think Broyden-Fletcher-Goldfarb-Shanno is what I want to use. I read up on it and know exactly how I would implement it, if I actually cared that much.
As fun as BFGS would be to implement and use, I go back to school tomorrow and want this done. To that end, I added a slight modification to my gradient descent to deal with the degrees-radians issue and increased the number of iterations drastically. I tried doing a basic Newton's method with the derivative, but I did it one-dimensionally, so it sucked. I just really didn't want to deal with matrices. So here we are. Good enough, I say.
I implemented more advanced SVG parsing and manipulation. It's somewhat
slower now, I think because I changed the way it skips vertices to save
time, but it was necessary to enable slightly more advanced SVG reading
(which I have yet to test). All the projections work, though. I also
changed my coordinate system. I also broke the bit where it does not
draw long lines.
I added the forward solution to the Lemons projection, which is
currently a bit wrong, but I'm going to replace it with a Cassini type
thing in a bit, anyway.
I also spiffed up the comments and changed how Antipode works slightly.
I made a program to automatically generate HTML snippets to fill the
projection page in my GH-Pages branch. It also automatically produces
nice pictures to go with it. I also threw in a nifty new transverse
feature, primarily for azimuthal maps. And I now represent properties
and types as enums. And I fixed a bug in 2 point equidistant. And fixed
some unicode issues.
I invented another map projection, this one specifically designed for
small oblong regions. I think it looks pretty cool if I do say so
myself. There are holes at the bounds of my parameter, so I'll have to
take care of that, but honestly, I'm so sick of limits right now.
So, representing projcetions as classes was kind of a horrible idea and
also impossible. That's okay. I still implemented two of the things I
wanted to implement: storing projections as variables such that I can
distribute them among several (like, fifteen), and a formal system
for a long time ive had to poop
i think i should get that looked at
hahahahahahaha just kidding i love being constapated
for processing parameters. Al6so, Wink7el Tripel is tot9ally broe5kn. i
9think it mig3ht be an 7issue with N5ewton Raph9son Appro1ximation. I'll
look i6nto that l8r.