439 Commits

Author SHA1 Message Date
Justin Kunimune
022a7c5c78 fix circles
I got the circles good.  first of all, none were appearing because the code deciding when to add them was all inverted.  more interestingly, I realized I can't put them on the same layer as the other country shapes because then they'll get obscured by stuff.  so I moved the circles to their own group.  I also made them much smaller.  finally, I made the Supermap.svg file a tiny bit smaller by styling borders more efficiently.
2023-09-04 11:28:19 -04:00
Justin Kunimune
975bac3293 updated Supermap.svg
idk if it was a good use of time, but I think I've figured out how to make the supermap look good.  mostly, I needed to supply it with data.
 but since I can no longer find the other dataset I was using on the internet, I've transitioned it to natural earth's populated places.  I remember havig issues with populated places last time, but it's possible that that was only because the labelranks are all rong in that dataset.  now I can finally focus on the circles!
2023-09-03 21:06:45 -04:00
Justin Kunimune
43a5799e2f simplify label placement code
this was silly.
2023-08-31 07:50:06 -04:00
Justin Kunimune
a84d479acc style political svg by class, not id
this is just a little more logical.
2023-08-29 12:28:08 -04:00
Justin Kunimune
edf00b6c4b write input maps directly
I refactord the map generation code.  it now updates the SVG files automaticly rather than waiting for the user to copy and paste the output into them.  I did this because I can't imagine doing that for all of them and can't beleve I used to think that was an acceptable waste of my own time.  naturally this caused some updates to the data and improvements to the code to get pushd to the SVGs.  most notably, the natural earth dataset reflects that the aral sea is gone.  I didn't update Supermap.svg because it turns out that one required a dataset that I can't find anywhere online.  I have that file still so I could update it, but I would really rather my work be reproducible, and am mad at myself for not documenting that file at all when I found it.  I'd like to get it working with the natural earth populated places shapefile, but we'll see.
2023-08-28 13:19:35 -04:00
Justin Kunimune
6ff08f3200 add circles for small countries
I ended up also refactoring quite a bit of the surrounding code, because did you know this code is really quite badly written?
2023-08-26 14:29:58 -07:00
Justin Kunimune
4e412dab55 Update Project_Default.xml 2023-08-24 21:52:24 -07:00
Justin Kunimune
aaf01a4dac stop using multilayered inverse raster
also change the filenames because they're .txts now, not .csvs.
2023-08-24 21:51:58 -07:00
Justin Kunimune
bceb9a07d3 update Elastik code for new data file format
I updated the polygon code to work on the new sometimes-inside-out-but-always-closed boundary polygons.  I also updated the parser to expect the word "boundary" rather than "border".  I also went ahead and tried to simplify the spline code based on the assumption that the nan gradients will never be used.
2023-08-19 20:33:41 -07:00
Justin Kunimune
a78f58eb9d make Supermap fonts smaller
idk why I didn't notice before, but it was Supercramped.
2023-08-19 20:29:10 -07:00
Justin Kunimune
cdd074e8a9 Lint everything
it's onestly weird to think that I originally wrote all this in an IDE that didn't check these things.  there was a *lot* of unused code, as it turns out.
2023-08-19 20:28:33 -07:00
Justin Kunimune
07dfc384bd use multilayered inverse raster
I set it to use the new projection format, where each section has its own inverse raster.  it does make the poles better in I and II, but it makes the ends of the tears much worse.  I need to keep tweaking, I gess.
2023-07-26 18:35:42 -07:00
Justin Kunimune
78a20224c2 patch up holes
it was the slite refactoring that broke it.
2023-07-23 16:30:05 -07:00
Justin Kunimune
6b74bfd0df reasonable stop condition
I set it up so if the iteration gets stuck in a local minimum, it will terminate and return that local minimum.  this seemd to work more or less perfectly a minute ago, but I broke it either by reducing the inverse raster resolution or by refactoring the cosine calculation slitely.
2023-07-23 13:45:07 -07:00
Justin Kunimune
1e4fe2e680 province map 2023-07-23 08:12:23 -07:00
Justin Kunimune
6410b5877c manual scaling
I implemented a scale term on the step limiter equal to 1/cos(ф).
2023-07-08 11:22:30 -07:00
Justin Kunimune
20ae6d4d24 geodesic acceleration
I think I may have made it worse...
2023-07-07 20:32:14 -07:00
Justin Kunimune
13e94aee98 Levenberg–Marquardt
the simple Gauss–Newton with Armije backstep was insufficiently robust, so I implemented LM.  it seems to work better, but it's still not good enuff.  the step size doesn't turn as much as I would expect when λ goes up.  I think next it's time to implement the geodesic acceleration correction term.
2023-07-05 18:45:21 -07:00
Justin Kunimune
e2c2aa0b48 code cleanup
I removed some unnecessary parameters and changed some spacing and documentation.
2023-07-05 18:43:34 -07:00
Justin Kunimune
ca0d6de292 watertight polygons
I fixd the polygons!  I just had to remove the equal-to-endpoint rule and add a more specific exception for λ=-π.
2023-06-19 20:28:33 -07:00
Justin Kunimune
4675409725 everyone loves nested optimization
I added a backstepping line search to each iteration of my Newton-Raphson solver.  it actually gets rid of most of those rifts in Elastic Earth III where the folding was causing Newton-Raphson to have difficulty.  but there are still a few spots that are struggling.  also, it turns out a few points are still not getting counted in any polygon.
2023-06-19 09:54:21 -07:00
Justin Kunimune
b5ecec4eb9 It's called the *Global* Map Projection
I fixd the polygon so it stops excluding certain regions from the projection.  I almost got it rite the last time I updated the polgon algorithm, but I forgot to remove the nearestSegment bit, which makes no sense with the crossings counting tecneke.
2023-06-18 09:39:25 -07:00
Justin Kunimune
5832a6c196 don't modify parameters
the problem was that I was modifying the initial gess rather than copying it, and that gess was getting passd to multiple sections and then ultimately returnd as the anser.  now it clones it when it starts the iteratinos and then copies it agen when returning it, so the problem went away.

I also made the cropAtPi checkbox work, which was onestly the thing I was doing in the first place (I had no idea this was the root of the problem).  and I removed the projected border because I realized I didn't actually need it to implement cropAtPi
2023-06-17 18:09:11 -07:00
Justin Kunimune
b04f756b48 exact inverse solution
the edges of the mesh are a little crunchy now, which is weird because I thaut I set the termination condition to prevent that, but overall this looks quite good.  I hope it's correct.
2023-06-14 23:01:23 -07:00
Justin Kunimune
8494073bf1 smooth dateline
I made the projection smooth at the antimeridian, because it was bothering me.  it looks great now.  well, I did also notice that a bunch of points near the poles are going to NaN in the vector mapdesiner now, but that doesn't seem to be related to this change, so I'll deal with it later.
2023-06-10 09:46:59 -07:00
Justin Kunimune
a1d581e849 try and fail
I made an attempt to fix the error messages you get with Elastic II.  it didn't work.  I'm leaving this change in because I think it will probably be better in some situations regardless of the current errors.
2023-06-10 09:29:44 -07:00
Justin Kunimune
f950e04d54 basic inverse projection
I implemented the simplest possible inverse projection.  I did end up converting the raster to cartesian coordinates so that the dateline doesn't get screwd up, but other than that it's very simple.  now it's just a question of adding that Newton Raphson layer on top.
2023-06-10 09:28:48 -07:00
Justin Kunimune
d8c3b3c758 stop abbreviating words for no reason
because god forbid I have a function name longer than fifteen caracters; no one would read that!

but yeah, I hate past me, so here's a much better function name.
2023-06-10 09:21:21 -07:00
Justin Kunimune
0afb0b157b more like De-clipse! (got 'em)
delete eclipse files because eclipse is bad.
2023-06-10 09:19:06 -07:00
Justin Kunimune
ca8842cd56 continuity
I made the gradients continuus along the borders.
2023-06-08 20:00:35 -07:00
Justin Kunimune
7329d54c0f make orthodromes finer
I need this so I can use orthodromes to test my meshes.
2023-06-08 19:20:32 -07:00
Justin Kunimune
6127018257 the dangers of copying and pasting code
I found the issue . it was a 2 that should have ben a 4, and a bunch of λs that should have been фs.  easy.
2023-06-07 20:57:16 -07:00
Justin Kunimune
9a10802727 Elastic Earth projections
I implemented the Elastic projections!  this is just a first pass, so of course there are issues to be worked out.  the oceanic one has a few particular longitudes that it won't project, and the gradient calculation seems to be rong near the section edges.  I also haven't synckd up the section gradients at seams.  overall, tho, I'm surprised how good I got the gradient calculation, and the interpolation in general, on the first try.  I also haven't done any of the inverse projection yet, but I intend to do a better job with these ones than I did with Danseiji's inverse projections.

I also did some light refactoring; Meshed -> Danseiji and setParameters -> initialize, and +docstrings, so that accounts for most of the modified files.
2023-06-06 21:05:39 -07:00
Justin Kunimune
0a4a3ff1b9 new input map
I made a political input map with administrative boundries at level 1.  it’s not very good.
2023-06-06 08:23:42 -07:00
Justin Kunimune
8ec7547e58
Update README.md 2023-06-05 23:24:37 -04:00
Justin Kunimune
0482c8572f
fix formatting in README.md 2023-04-11 21:48:09 -04:00
Justin Kunimune
6154dcb2de
add more installation notes
I’m annoyed that JavaFX 20 is not back-compatible.  back-compatibility is not highly valued enuff in the software industry.
2023-04-11 21:47:30 -04:00
Justin Kunimune
a1096e66e0
move an "and" and link to *Flattening the Earth* 2023-03-31 13:43:22 -04:00
Justin Kunimune
b31f8fa540 update README.md 2023-03-31 13:24:10 -04:00
Justin Kunimune
96e96d07e3 handle transparency correctly
yeah, a little surprising I hadn’t done this before now.
2023-03-15 12:14:57 -04:00
Justin Kunimune
eaaadbb188 updated input map generation
I made a map for Nutopia's "Pole to pole" and it involved cleaning up some of this old code.  I may have broken the graticules; I didn't test ti.
2022-12-17 20:38:24 -10:00
Justin Kunimune
d78764aa0d taking it to the next level
I thaut I increased the version last time, but it seems I did not.
2022-04-18 14:53:44 -04:00
Justin Kunimune
361e5d56e7 babieeee
I made a new map projection which is a zoomd in single face of a cahill-keyes projection, because it was requested.
2022-04-18 14:49:21 -04:00
Justin Kunimune
9317a98505 seven ate nine
I made it so that you can load a single image as just one octant of a globe.  it saves on memory when the maps are large.
2022-04-18 14:49:07 -04:00
Justin Kunimune
5c7e5223f1
sweet jesus what have I done
I explaind what I did.
2022-02-12 14:50:49 -05:00
Justin Kunimune
a831c29bd7 Speed of light!
I rote a script to automatically convert a bunch of equirectangular projections to dymaxion projections.  I had to refactor the other main apps slitely, because they were structured very poorly.
2022-02-12 14:47:31 -05:00
Justin Kunimune
5f0f13f1d9 So smart!
I opend this in IntelliJ.  it really is so much better than Eclipse.
2022-02-12 14:45:36 -05:00
Justin Kunimune
30dac48db7 welcome to the future 2021-04-25 21:30:07 -04:00
Justin Kunimune
564d144475 Alolan Egzecutable
I updated the executables with the graticule thing
2021-04-25 21:04:51 -04:00
Justin Kunimune
6920a1ae5f Graticule opcions!
I made it so that you can edit the graticule opcions.  it's in a configuracion text file.  I haven't documented this anywhere yet.  it's kind of jank.
2021-04-25 08:38:28 -04:00