mirror of
https://github.com/csharpee/Map-Projections.git
synced 2025-12-07 00:00:07 -05:00
The first of the Danseiji
I started putting in finalised Danseiji datasets. I also added a new input, just for ritual purposes, and also ran the Plotter for the heck of it. My new maps fare surprisingly poorly against established names like Robinson, and even Kavrayskiy. I think I need to rework my metrics slightly. Now, I know how that sounds, but to be fair, the current area metric was designed to ensure Gall-Peters did not beat Behrmann. I made sure it did not pay too much heed to the extremely distorted parts, and paid more attention to the vast moderately-distorted regions. I'm starting to think now, though, that those regions are a lot more important than I'd thought. I'll try to make them as intuitive as possible, while still reasonably conforming to what I think makes a good map.
This commit is contained in:
parent
8d4acd1bde
commit
36070bf6a8
BIN
input/Relief.png
Normal file
BIN
input/Relief.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 37 KiB |
@ -115,20 +115,18 @@ public abstract class MapApplication extends Application {
|
||||
private static final KeyCombination CTRL_ENTER = new KeyCodeCombination(KeyCode.ENTER, KeyCodeCombination.CONTROL_DOWN);
|
||||
|
||||
|
||||
public static final Projection[] FEATURED_PROJECTIONS = { Arbitrary.DANSEIJI_III, Arbitrary.DANSEIJI_IV, Cylindrical.MERCATOR,
|
||||
public static final Projection[] FEATURED_PROJECTIONS = { Cylindrical.MERCATOR, // the set of featured projections for the ComboBox
|
||||
Cylindrical.EQUIRECTANGULAR, Cylindrical.EQUAL_AREA, Cylindrical.GALL_STEREOGRAPHIC,
|
||||
Azimuthal.STEREOGRAPHIC, Azimuthal.POLAR, Azimuthal.EQUAL_AREA, Azimuthal.GNOMONIC,
|
||||
Azimuthal.PERSPECTIVE, Conic.LAMBERT, Conic.EQUIDISTANT, Conic.ALBERS,
|
||||
Polyhedral.LEE_TETRAHEDRAL_RECTANGULAR, Polyhedral.ACTUAUTHAGRAPH,
|
||||
Polyhedral.AUTHAPOWER, Octohedral.KEYES_BASIC_M, Pseudocylindrical.SINUSOIDAL,
|
||||
Pseudocylindrical.MOLLWEIDE, Tobler.TOBLER, Lenticular.AITOFF,
|
||||
Lenticular.VAN_DER_GRINTEN, ArbitraryPseudocylindrical.ROBINSON,
|
||||
WinkelTripel.WINKEL_TRIPEL, Misc.PEIRCE_QUINCUNCIAL, Misc.TWO_POINT_EQUIDISTANT,
|
||||
Pseudocylindrical.LEMONS }; //the set of featured projections for the ComboBox
|
||||
Pseudocylindrical.SINUSOIDAL, Pseudocylindrical.MOLLWEIDE, Tobler.TOBLER,
|
||||
Lenticular.AITOFF, Lenticular.VAN_DER_GRINTEN, ArbitraryPseudocylindrical.ROBINSON,
|
||||
WinkelTripel.WINKEL_TRIPEL, Arbitrary.DANSEIJI_O, Octohedral.KEYES_BASIC_M,
|
||||
Polyhedral.LEE_TETRAHEDRAL_RECTANGULAR, Misc.PEIRCE_QUINCUNCIAL, Pseudocylindrical.LEMONS };
|
||||
|
||||
public static final String[] PROJECTION_CATEGORIES = { "Cylindrical", "Azimuthal", "Conic",
|
||||
"Polyhedral", "Pseudocylindrical", "Lenticular", "Other", "Invented by Justin" }; //the overarching categories by which I organise my projections
|
||||
public static final Projection[][] ALL_PROJECTIONS = {
|
||||
public static final Projection[][] ALL_PROJECTIONS = { // every projection I have programmed
|
||||
{ Cylindrical.EQUAL_AREA, Cylindrical.EQUIRECTANGULAR, Cylindrical.GALL_ORTHOGRAPHIC,
|
||||
Cylindrical.GALL_STEREOGRAPHIC, Cylindrical.HOBO_DYER, Cylindrical.LAMBERT,
|
||||
Cylindrical.MERCATOR, Cylindrical.MILLER, Cylindrical.PLATE_CARREE },
|
||||
@ -138,7 +136,7 @@ public abstract class MapApplication extends Application {
|
||||
{ Polyhedral.AUTHAGRAPH, Octohedral.CAHILL_CONCIALDI, Octohedral.CAHILL_KEYES,
|
||||
Octohedral.KEYES_BASIC_M, Octohedral.KEYES_BUTTERFLY, Polyhedral.DYMAXION,
|
||||
Polyhedral.LEE_TETRAHEDRAL_RECTANGULAR, Polyhedral.LEE_TETRAHEDRAL_TRIANGULAR,
|
||||
Octohedral.WATERMAN },
|
||||
Polyhedral.VAN_LEEUWEN, Octohedral.WATERMAN },
|
||||
{ Pseudocylindrical.ECKERT_IV, Pseudocylindrical.KAVRAYSKIY_VII,
|
||||
Pseudocylindrical.MOLLWEIDE, ArbitraryPseudocylindrical.NATURAL_EARTH,
|
||||
ArbitraryPseudocylindrical.ROBINSON, Pseudocylindrical.SINUSOIDAL, Tobler.TOBLER },
|
||||
@ -147,10 +145,11 @@ public abstract class MapApplication extends Application {
|
||||
{ Snyder.GS50, Misc.GUYOU, Misc.HAMMER_RETROAZIMUTHAL, Pseudocylindrical.LEMONS,
|
||||
Misc.PEIRCE_QUINCUNCIAL, Misc.TWO_POINT_EQUIDISTANT, Misc.FLAT_EARTH },
|
||||
{ Arbitrary.DANSEIJI_O, Arbitrary.DANSEIJI_I, Arbitrary.DANSEIJI_II,
|
||||
Arbitrary.DANSEIJI_III, Arbitrary.DANSEIJI_IV, MyProjections.EXPERIMENT,
|
||||
Polyhedral.AUTHAPOWER, Polyhedral.ACTUAUTHAGRAPH, MyProjections.MAGNIFIER,
|
||||
MyProjections.PSEUDOSTEREOGRAPHIC, Polyhedral.TETRAGRAPH,
|
||||
MyProjections.TWO_POINT_EQUALIZED } }; // every projection I have programmed
|
||||
Arbitrary.DANSEIJI_III, Arbitrary.DANSEIJI_IV, Arbitrary.DANSEIJI_V,
|
||||
Arbitrary.DANSEIJI_VI, Arbitrary.DANSEIJI_VII, Arbitrary.DANSEIJI_VIII,
|
||||
MyProjections.EXPERIMENT, Polyhedral.AUTHAPOWER, Polyhedral.ACTUAUTHAGRAPH,
|
||||
MyProjections.MAGNIFIER, MyProjections.PSEUDOSTEREOGRAPHIC,
|
||||
Polyhedral.TETRAGRAPH, MyProjections.TWO_POINT_EQUALIZED } };
|
||||
|
||||
private static final String[] ASPECT_NAMES = { "Standard", "Transverse", "Cassini", "Atlantis",
|
||||
"Jerusalem", "Point Nemo", "Longest Line", "Cylindrical", "Tetrahedral", "Antipode",
|
||||
|
||||
@ -32,6 +32,7 @@ import image.SavableImage;
|
||||
import javafx.application.Application;
|
||||
import javafx.concurrent.Task;
|
||||
import javafx.stage.Stage;
|
||||
import maps.Arbitrary;
|
||||
import maps.ArbitraryPseudocylindrical;
|
||||
import maps.Azimuthal;
|
||||
import maps.Conic;
|
||||
@ -50,7 +51,7 @@ import maps.WinkelTripel;
|
||||
/**
|
||||
* A program to generate and output an HTML snippet listing and explaining all of my maps
|
||||
*
|
||||
* @author jkunimune
|
||||
* @author Justin Kunimune
|
||||
*/
|
||||
public class MapExplainer extends Application {
|
||||
|
||||
@ -63,15 +64,15 @@ public class MapExplainer extends Application {
|
||||
Cylindrical.GALL_STEREOGRAPHIC, Azimuthal.STEREOGRAPHIC.transverse(),
|
||||
Azimuthal.POLAR.transverse(), Azimuthal.EQUAL_AREA.transverse(),
|
||||
Azimuthal.GNOMONIC.transverse(), Azimuthal.ORTHOGRAPHIC.transverse(),
|
||||
Conic.LAMBERT, Conic.EQUIDISTANT, Conic.ALBERS,
|
||||
Polyhedral.LEE_TETRAHEDRAL_RECTANGULAR, Polyhedral.AUTHAGRAPH,
|
||||
Pseudocylindrical.SINUSOIDAL, Pseudocylindrical.MOLLWEIDE, Tobler.TOBLER,
|
||||
Lenticular.HAMMER, Lenticular.AITOFF, Lenticular.VAN_DER_GRINTEN,
|
||||
ArbitraryPseudocylindrical.ROBINSON, WinkelTripel.WINKEL_TRIPEL, Octohedral.CAHILL_KEYES,
|
||||
Conic.LAMBERT, Conic.EQUIDISTANT, Conic.ALBERS, Pseudocylindrical.SINUSOIDAL,
|
||||
Pseudocylindrical.MOLLWEIDE, Tobler.TOBLER, Lenticular.AITOFF,
|
||||
Lenticular.VAN_DER_GRINTEN, ArbitraryPseudocylindrical.ROBINSON,
|
||||
WinkelTripel.WINKEL_TRIPEL, Polyhedral.AUTHAGRAPH,
|
||||
Polyhedral.LEE_TETRAHEDRAL_RECTANGULAR, Octohedral.CAHILL_KEYES,
|
||||
Octohedral.CAHILL_CONCIALDI, Misc.PEIRCE_QUINCUNCIAL.transverse(), Snyder.GS50,
|
||||
Misc.TWO_POINT_EQUIDISTANT, Misc.HAMMER_RETROAZIMUTHAL, Misc.FLAT_EARTH },
|
||||
{ MyProjections.PSEUDOSTEREOGRAPHIC, Polyhedral.TETRAGRAPH, Polyhedral.AUTHAPOWER,
|
||||
Polyhedral.ACTUAUTHAGRAPH, MyProjections.TWO_POINT_EQUALIZED.transverse() } };
|
||||
{ Arbitrary.DANSEIJI_O, Arbitrary.DANSEIJI_IV, Arbitrary.DANSEIJI_V, Polyhedral.TETRAGRAPH,
|
||||
Polyhedral.AUTHAPOWER, Polyhedral.ACTUAUTHAGRAPH } };
|
||||
|
||||
private PixelMap inputSkew, inputPole, inputNone, inputEast, inputWest;
|
||||
|
||||
|
||||
@ -47,6 +47,7 @@ import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.scene.layout.StackPane;
|
||||
import javafx.stage.Stage;
|
||||
import maps.Arbitrary;
|
||||
import maps.ArbitraryPseudocylindrical;
|
||||
import maps.Azimuthal;
|
||||
import maps.Cylindrical;
|
||||
@ -74,12 +75,14 @@ public class MapPlotter extends Application {
|
||||
Cylindrical.PLATE_CARREE, Cylindrical.GALL_ORTHOGRAPHIC, Cylindrical.BEHRMANN,
|
||||
Cylindrical.GALL_STEREOGRAPHIC };
|
||||
private static final Projection[] AZIMUTHAL = { Azimuthal.POLAR };
|
||||
private static final Projection[] PSEUDOCYL = { Pseudocylindrical.MOLLWEIDE, ArbitraryPseudocylindrical.ROBINSON,
|
||||
ArbitraryPseudocylindrical.NATURAL_EARTH, Pseudocylindrical.KAVRAYSKIY_VII, Tobler.TOBLER };
|
||||
private static final Projection[] PSEUDOCYL = { Pseudocylindrical.MOLLWEIDE,
|
||||
ArbitraryPseudocylindrical.ROBINSON, ArbitraryPseudocylindrical.NATURAL_EARTH,
|
||||
Pseudocylindrical.KAVRAYSKIY_VII, Tobler.TOBLER };
|
||||
private static final Projection[] LENTICULAR = { Lenticular.AITOFF,
|
||||
Lenticular.VAN_DER_GRINTEN, WinkelTripel.WINKEL_TRIPEL };
|
||||
Lenticular.VAN_DER_GRINTEN, WinkelTripel.WINKEL_TRIPEL, Arbitrary.DANSEIJI_O,
|
||||
Arbitrary.DANSEIJI_I, Arbitrary.DANSEIJI_II };
|
||||
private static final Projection[] TETRAHEDRAL = { Polyhedral.LEE_TETRAHEDRAL_RECTANGULAR,
|
||||
Polyhedral.AUTHAGRAPH, Polyhedral.ACTUAUTHAGRAPH };
|
||||
Polyhedral.AUTHAGRAPH, Polyhedral.VAN_LEEUWEN };
|
||||
private static final Projection[] CHEATY = { Pseudocylindrical.LEMONS,
|
||||
Octohedral.KEYES_BASIC_M, Polyhedral.DYMAXION, Octohedral.CAHILL_CONCIALDI };
|
||||
private static final Projection[] OTHER = { Misc.PEIRCE_QUINCUNCIAL };
|
||||
|
||||
@ -1,3 +1,24 @@
|
||||
/**
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2017 Justin KuPermission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
package apps;
|
||||
|
||||
import java.io.File;
|
||||
@ -22,34 +43,10 @@ import maps.Snyder;
|
||||
import maps.Tobler;
|
||||
import maps.WinkelTripel;
|
||||
|
||||
/**
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2017 Justin Kunimune
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A script that automatically manufactures a slew of projections in standard aspect.
|
||||
*
|
||||
* @author jkunimune
|
||||
* @author Justin Kunimune
|
||||
*/
|
||||
public class MapProducer extends Application {
|
||||
|
||||
|
||||
32306
src/data/danseijiI.csv
32306
src/data/danseijiI.csv
File diff suppressed because it is too large
Load Diff
32247
src/data/danseijiII.csv
32247
src/data/danseijiII.csv
File diff suppressed because it is too large
Load Diff
31719
src/data/danseijiIII.csv
31719
src/data/danseijiIII.csv
File diff suppressed because it is too large
Load Diff
32269
src/data/danseijiIV.csv
32269
src/data/danseijiIV.csv
File diff suppressed because it is too large
Load Diff
32291
src/data/danseijiO.csv
32291
src/data/danseijiO.csv
File diff suppressed because it is too large
Load Diff
@ -42,52 +42,46 @@ public class Arbitrary {
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_O = new ArbitraryProjection(
|
||||
"Danseiji O", "The optimal conventional lenticular map.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiO.csv");
|
||||
true, Type.OTHER, Property.COMPROMISE, false, "danseijiO.csv");
|
||||
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_I = new ArbitraryProjection(
|
||||
"Danseiji I", "The optimal conventional equal-area map.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiI.csv");
|
||||
true, Type.OTHER, Property.COMPROMISE, false, "danseijiI.csv");
|
||||
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_II = new ArbitraryProjection(
|
||||
"Danseiji II", "Like Danseiji O, but with more weight given to shapes.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiII.csv");
|
||||
"Danseiji II", "An optimised map that gives more weight to shapes rather than sizes.",
|
||||
true, Type.OTHER, Property.COMPROMISE, false, "danseijiII.csv");
|
||||
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_III = new ArbitraryProjection(
|
||||
"Danseiji III", "A map optimised to move distortion from the continents into the oceans.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiIII.csv");
|
||||
true, Type.OTHER, Property.COMPROMISE, true, "danseijiIII.csv");
|
||||
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_IV = new ArbitraryProjection(
|
||||
"Danseiji IV", "A map optimised to show off the continents by compressing the oceans.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiIV.csv");
|
||||
true, Type.OTHER, Property.COMPROMISE, true, "danseijiIV.csv");
|
||||
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_V = new ArbitraryProjection(
|
||||
"Danseiji V", "A map optimised to show off the continents by compressing the oceans.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiV.csv");
|
||||
|
||||
"Danseiji V", "A map optimised to display landmasses accurately and without interruption.",
|
||||
true, Type.OTHER, Property.COMPROMISE, true, "danseijiV.csv");
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_VI = new ArbitraryProjection(
|
||||
"Danseiji VI", "A map where area is approximately proportional to population.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiVI.csv");
|
||||
"Danseiji VI", "A compromise conventional map, where both physical area and population affect size.",
|
||||
true, Type.OTHER, Property.COMPROMISE, true, "danseijiVI.csv");
|
||||
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_VII = new ArbitraryProjection(
|
||||
"Danseiji VII", "A compromise conventional map, where both physical area and population affect size.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiVII.csv");
|
||||
"Danseiji VII", "A compromise unconventional map, where both physical area and population affect size.",
|
||||
true, Type.OTHER, Property.COMPROMISE, true, "danseijiVII.csv");
|
||||
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_VIII = new ArbitraryProjection(
|
||||
"Danseiji VIII", "A compromise unconventional map, where both physical area and population affect size.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiVIII.csv");
|
||||
|
||||
|
||||
public static final ArbitraryProjection DANSEIJI_IX = new ArbitraryProjection(
|
||||
"Danseiji IX", "A map preserving the oceans over landmasses.",
|
||||
true, Type.OTHER, Property.COMPROMISE, "danseijiIV.csv");
|
||||
"Danseiji VIII", "A map optimised to show off the oceans at the expense of landmasses.",
|
||||
true, Type.OTHER, Property.COMPROMISE, true, "danseijiVIII.csv");
|
||||
|
||||
|
||||
|
||||
@ -99,8 +93,11 @@ public class Arbitrary {
|
||||
private double[][][] pixels; // the pixel values, for inverse mapping
|
||||
private double[][] edge; // the indices of the edge vertices
|
||||
|
||||
public ArbitraryProjection(String title, String description, boolean interrupted, Type type, Property property, String filename) {
|
||||
super(title, description, 0, 0, interrupted ? 0b1010 : 0b1011, type, property, 4);
|
||||
public ArbitraryProjection(
|
||||
String title, String description, boolean interrupted, Type type, Property property,
|
||||
boolean basedOnLand, String filename) {
|
||||
super(title, description, 0, 0, interrupted ? 0b1010 : 0b1011, type, property, 4,
|
||||
new String[0], new double[0][], !basedOnLand);
|
||||
this.filename = filename;
|
||||
}
|
||||
|
||||
|
||||
@ -161,7 +161,7 @@ public class Polyhedral {
|
||||
|
||||
|
||||
public static final PolyhedralProjection ACTUAUTHAGRAPH = new PolyhedralProjection(
|
||||
"EquaHedral", "A holey authalic tetrahedral projection to put AuthaGraph to shame.",
|
||||
"EquaHedral", "An interrupted authalic tetrahedral projection.",
|
||||
0b1010, Configuration.TETRAHEDRON_WIDE_VERTEX, Property.EQUAL_AREA, 3,
|
||||
new String[] {"Sinus length"}, new double[][] {{0, 60, 20}}) {
|
||||
|
||||
@ -225,6 +225,22 @@ public class Polyhedral {
|
||||
};
|
||||
|
||||
|
||||
public static final Projection VAN_LEEUWEN = new PolyhedralProjection(
|
||||
"van Leeuwen", "An uninterrupted equal-area tetrahedral projection. It's more accurately known as \"the Vertex-oriented great circle projection applied to a tetrahedron\", but the guy who copublished it with Leeuwen calls it \"the van Leeuwen projection\" on his website, so I think this is fine.",
|
||||
0b1011, Configuration.TETRAHEDRON_WIDE_VERTEX, Property.EQUAL_AREA, 3) {
|
||||
|
||||
public double[] faceProject(double lat, double lon) {
|
||||
ACTUAUTHAGRAPH.setParameters(0);
|
||||
return ACTUAUTHAGRAPH.faceProject(lat, lon);
|
||||
}
|
||||
|
||||
public double[] faceInverse(double r, double th) {
|
||||
ACTUAUTHAGRAPH.setParameters(0);
|
||||
return ACTUAUTHAGRAPH.faceInverse(r, th);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
public static final Projection DYMAXION = new PolyhedralProjection(
|
||||
"Dymaxion", "A polyhedral projection that slices up the oceans as much as possible without slicing up any landmasses.",
|
||||
0b1110, Configuration.DYMAXION, Property.COMPROMISE, 3) {
|
||||
|
||||
@ -42,7 +42,7 @@ public class Tobler {
|
||||
"Tobler Hyperelliptical", "An equal-area projection shaped like a hyperellipse.",
|
||||
2*Math.PI, 0, 0b1001, Type.PSEUDOCYLINDRICAL, Property.EQUAL_AREA, 4,
|
||||
new String[]{"Std. Parallel","alpha","K"},
|
||||
new double[][] {{0,89,30}, {0,1,.46}, {1,5,3.7}}) { //optimal parameters are 30.6,.50,3.63, but these defaults are more recognizably Tobler
|
||||
new double[][] {{0,89,37.5}, {0,1,0.0}, {1,5,3.0}}) { //optimal parameters are 30.6,.50,3.63, but these defaults are more recognizably Tobler
|
||||
|
||||
private static final int N = 20000;
|
||||
private double alpha, kappa, epsilon; //epsilon is related to gamma, but defined somewhat differently
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user