18 Commits

Author SHA1 Message Date
Justin Kunimune
9ae6c2a668 Put the scissors down!
I (finally) made it automatically snip paths that are obviously crossing
interruptions. This should make vector maps look world better straight
out of the program, and will be crucial to mass-producing vector maps.
There's some room for improvement regarding the handling of closepaths,
but all in all, this is a big step up.

I also got a new input, fixed some minor issues with the new
Cahill-Keyes (did you know it's pronounced /kais/?), and might have
fixed the sporadic BufferOverflowExceptions, but I'm not sure about the
last one, as that problem is extremely difficult to reproduce, but I
have a strong suspicion it has something to do with threads, and I added
a bunch of Platform.runLater()s, so we'll see.
2018-02-09 22:43:58 -10:00
Justin Kunimune
a9b5978b9c What projection even is this?
I fixed a bug relating to the display of obscure map projection titles
that seems to have cropped up with Java 9 and finally made conformal
conic behave a little bit better when it degenerates to Mercator.
2018-01-21 21:18:55 -10:00
Justin Kunimune
9f820aba78 A perfect fit
I made it so that saved SVG files have their dimensions changed to fit
the new map projection shape. I know I said that I already did that, but
this time it actually works. I also instilled a couple of checks to
prevent my projections from going to infinity or NaN.
2018-01-21 19:42:07 -10:00
Justin Kunimune
63bb238c38 Episode IX
I upgraded to Java 9. To be completely honest, I thought more would
change and am slightly disappointed. I did make use of that new Map.of()
method, which was a lot of fun. The upgrade also sized up my app, I
guess to account for the high-resolution nature of my screen. Also the
reformatting size thing doesn't actually work.
2018-01-21 12:53:52 -10:00
Justin Kunimune
9eb0b785c0 That's no Equirectangular projection!
I added some functionality such that when it saves new SVG, it edits the
Metadata and dimensions to properly reflect the new projection. It
doesn't quite work yet, though. There's some new syntax that I want to
use for this...
2018-01-21 10:31:06 -10:00
Justin Kunimune
4825c12b2b What's it take to get a good map around here?
I created a new Waterman projection for Wikipedia and in the process changed a few things to make the resulting image better. Aren't real applications to reveal shortcomings in one's product the best?
2018-01-18 15:17:35 -10:00
Justin Kunimune
d753fec73f I don't need you, Crates, whoever you are!
I found out that some of my svg landmass strings got corrupted to oddly-shaped landmasses at some unknown point in time. I also found out that the sources that I cited for said images were completely wrong. So I decided to cut ties and just make all of my own svg inputs from scratch. I used the data from Natural Earth, which I can now access with my improved coding skill (the last time I tried to use Natural Earth, I couldn't figure out how to open their shapefiles, which is why I turned to SVG in the first place). I expanded my zupplementary Python scripts in preparation to redo all of them from my new source. Except Political.svg. That's made by the same person who does Natural Earth using the same data, and is already a great image.
So I cleared out my old SVGs, updated the README to use real sources, and added some notes to myself in the Java files.
2018-01-17 15:45:16 -10:00
Justin Kunimune
b7cf4345fd I make maps with _direction_ and MAGNITUDE
I added a few more vector inputs that I've been wanting for some time. My Tissot one I actually don't love, but it is based heavily on Eric Gaba's Tissot maps that are all over Wikipedia that I want to replace because they lack indicatrices in the most important locations: the poles and the prime meridian. After I fix Wikipedia, I might make a new one without a graticule and with more indicatrices.
I also made my program slightly better at loading new SVG maps and fixed Landmasses to not have a weird broken Antarctica.
2018-01-14 14:27:35 -10:00
Justin Kunimune
c83c71bc23 In its original form
I changed up a few map projections to look more like they did when they were first published. I added a triangular version of Lee, I changed AuthaGraph to have the aspect built in, and I fixed all of the ones without aspects to actually not have aspects (there was a bug there that I fixed).
I also cleaned up SVGMap a bit to try to make it work better with this great Tissot's indicatrices image I found, but the image was too messy, and I couldn't make it work.
2018-01-13 17:17:03 -10:00
Justin Kunimune
7d84f4a1a3 Seyek-Llihac
I started on the inverse of Cahill-Keyes. I just have the arrangement
done for now; I'll do the specific projection equations next.
2018-01-09 21:15:35 -10:00
Justin Kunimune
cfa31402a4 Meridians and parallels intertwined like wild vines
I added a graticule to raster maps! This took quite a while to complete, and it still has major issues. Namely, those annoying horizontal lines where it crosses from one side of the map to the other. I've contemplated several methods for dealing with that, and I'm starting to like an intelligent system that knows where the interruptions are and breaks lines that cross it. I don't have the details worked out. This also took a while, so I might take a break from that and finally get around to doing the inverse projection for Cahill-Keyes.
2018-01-09 17:02:49 -10:00
Justin Kunimune
d22a6773c7 A perfect fit
I altered the SVG saving code so that it actually properly fits the map to the artboard. While I was at it, I altered a few .project() methods that were returning NaN, which was messing up the SVG.
2018-01-09 10:14:57 -10:00
Justin Kunimune
22cb631818 Over the Cahill
I've finished Cahill-Keyes! It took a lot of reading, a lot of geometry,
and a lot of if statements. But now it's perfect. Now all I need is an
inverse projection.
2017-12-28 22:02:13 -10:00
Justin Kunimune
35e0dacf0f I'm back - and bigger than ever!
I changed Projection to define "width" and "height" attributes rather than an "aspectRatio" attribute. I'm not sure if it saves any code, and it's definitely less efficient this way, bit it makes the math parts of the code a whole lot more readable and more consise. It also makes my conics work a little bit better.
2017-11-21 17:23:58 -05:00
Justin Kunimune
5207b1999c Final Deliverables
I updated all my images and html based on the new parameters.
2017-08-28 16:11:51 -10:00
Justin Kunimune
abc3bd80f1 Where credit is due
I went through my images, recorded their sources if I could find them,
and replaced them with certifieably open-source alternatives if not.
I also fixed a minor issue with saving.
2017-08-27 15:40:49 -10:00
Justin Kunimune
3dcb0b77d4 Now accepting all (most) input
I refined my SVG parser to be open to more commands and such. It still
does not take kindly to arcs, but it's pretty darn good. I tried it out
with some new maps, and it looks great.
2017-08-26 14:39:07 -10:00
Justin Kunimune
40201f6f46 Parsing, for real this time
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.
2017-08-25 21:06:56 -10:00