mirror of
https://github.com/csharpee/Map-Projections.git
synced 2025-12-23 00:00:06 -05:00
Infinitessimal Mutated AuthaGraph Offspring
It's terrible and I love it. I'm just changing some naming conventions to correspond to how others on the internet have taken to describe my AuthaGraph approximation. The most recent name is the backronym "IMAGO", as in "Imago Mundi", which I think is fantastic. I also parametrised IMAGO a bit, seeing that the AuthaGraph layout with the power law changed actually looks very interesting. Also also, I forgot to add Bertin to my list. It's there now.
This commit is contained in:
parent
5809c3078a
commit
ad5be4264c
@ -139,10 +139,11 @@ public abstract class MapApplication extends Application {
|
|||||||
{ Pseudocylindrical.ECKERT_IV, Pseudocylindrical.KAVRAYSKIY_VII,
|
{ Pseudocylindrical.ECKERT_IV, Pseudocylindrical.KAVRAYSKIY_VII,
|
||||||
Pseudocylindrical.MOLLWEIDE, ArbitraryPseudocylindrical.NATURAL_EARTH,
|
Pseudocylindrical.MOLLWEIDE, ArbitraryPseudocylindrical.NATURAL_EARTH,
|
||||||
ArbitraryPseudocylindrical.ROBINSON, Pseudocylindrical.SINUSOIDAL, Tobler.TOBLER },
|
ArbitraryPseudocylindrical.ROBINSON, Pseudocylindrical.SINUSOIDAL, Tobler.TOBLER },
|
||||||
{ Lenticular.AITOFF, Lenticular.BERTIN, Lenticular.HAMMER, Lenticular.STREBE_95,
|
{ Lenticular.AITOFF, Lenticular.HAMMER, Lenticular.STREBE_95,
|
||||||
Lenticular.VAN_DER_GRINTEN, WinkelTripel.WINKEL_TRIPEL },
|
Lenticular.VAN_DER_GRINTEN, WinkelTripel.WINKEL_TRIPEL },
|
||||||
{ Snyder.GS50, Misc.GUYOU, Misc.HAMMER_RETROAZIMUTHAL, Pseudocylindrical.LEMONS,
|
{ Lenticular.BERTIN, Snyder.GS50, Misc.GUYOU, Misc.HAMMER_RETROAZIMUTHAL,
|
||||||
Misc.PEIRCE_QUINCUNCIAL, Misc.TWO_POINT_EQUIDISTANT, Misc.FLAT_EARTH },
|
Pseudocylindrical.LEMONS, Misc.PEIRCE_QUINCUNCIAL, Misc.TWO_POINT_EQUIDISTANT,
|
||||||
|
Misc.FLAT_EARTH },
|
||||||
{ Arbitrary.DANSEIJI_O, Arbitrary.DANSEIJI_I, Arbitrary.DANSEIJI_II,
|
{ Arbitrary.DANSEIJI_O, Arbitrary.DANSEIJI_I, Arbitrary.DANSEIJI_II,
|
||||||
Arbitrary.DANSEIJI_III, Arbitrary.DANSEIJI_IV, Arbitrary.DANSEIJI_V,
|
Arbitrary.DANSEIJI_III, Arbitrary.DANSEIJI_IV, Arbitrary.DANSEIJI_V,
|
||||||
Arbitrary.DANSEIJI_VI, Arbitrary.DANSEIJI_VII, Arbitrary.DANSEIJI_VIII,
|
Arbitrary.DANSEIJI_VI, Arbitrary.DANSEIJI_VII, Arbitrary.DANSEIJI_VIII,
|
||||||
|
|||||||
@ -96,10 +96,18 @@ public class Polyhedral {
|
|||||||
|
|
||||||
|
|
||||||
public static final PolyhedralProjection AUTHAGRAPH = new PolyhedralProjection(
|
public static final PolyhedralProjection AUTHAGRAPH = new PolyhedralProjection(
|
||||||
"AuthaGraph", "A hip new Japanese map that is almost equal-area and would be super great if they actually published their equations.",
|
"IMAGO (AuthaGraph)", "Authagraph is a hip new Japanese map that is almost equal-area and would be super great if "
|
||||||
0b1011, Configuration.AUTHAGRAPH, Property.COMPROMISE, 3) {
|
+ "they actually published their equations. This is technically just an approximation, also known as the Infinitessimal "
|
||||||
|
+ "Mutated AuthaGraph Offspring.",
|
||||||
|
0b1011, Configuration.AUTHAGRAPH, Property.COMPROMISE, 3,
|
||||||
|
new String[] {"Power"}, new double[][] {{.5,1,.68}}) {
|
||||||
|
|
||||||
private final double[] POLE = {Math.toRadians(77), Math.toRadians(143), Math.toRadians(17)};
|
private final double[] POLE = {Math.toRadians(77), Math.toRadians(143), Math.toRadians(17)};
|
||||||
|
private double k;
|
||||||
|
|
||||||
|
public void setParameters(double... params) {
|
||||||
|
this.k = params[0];
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double[] project(double lat, double lon) { //apply a pole shift to AuthaGraph
|
public double[] project(double lat, double lon) { //apply a pole shift to AuthaGraph
|
||||||
@ -116,7 +124,7 @@ public class Polyhedral {
|
|||||||
public double[] faceProject(double lat, double lon) {
|
public double[] faceProject(double lat, double lon) {
|
||||||
final double tht = Math.atan((lon - Math.asin(Math.sin(lon)/Math.sqrt(3)))/Math.PI*Math.sqrt(12));
|
final double tht = Math.atan((lon - Math.asin(Math.sin(lon)/Math.sqrt(3)))/Math.PI*Math.sqrt(12));
|
||||||
final double p = (Math.PI/2 - lat) / Math.atan(Math.sqrt(2)/Math.cos(lon));
|
final double p = (Math.PI/2 - lat) / Math.atan(Math.sqrt(2)/Math.cos(lon));
|
||||||
return new double[] { Math.pow(p,.707)*Math.sqrt(3)/Math.cos(tht), tht };
|
return new double[] { Math.pow(p,k)*Math.sqrt(3)/Math.cos(tht), tht };
|
||||||
}
|
}
|
||||||
|
|
||||||
protected double[] faceInverse(double r, double th) {
|
protected double[] faceInverse(double r, double th) {
|
||||||
@ -126,15 +134,15 @@ public class Polyhedral {
|
|||||||
.001);
|
.001);
|
||||||
final double R = r / (Math.sqrt(3)/Math.cos(th));
|
final double R = r / (Math.sqrt(3)/Math.cos(th));
|
||||||
return new double[] {
|
return new double[] {
|
||||||
Math.PI/2 - Math.pow(R,1.41)*Math.atan(Math.sqrt(2)/Math.cos(lon)), lon };
|
Math.PI/2 - Math.pow(R,1/k)*Math.atan(Math.sqrt(2)/Math.cos(lon)), lon };
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
public static final PolyhedralProjection AUTHAPOWER = new PolyhedralProjection(
|
public static final PolyhedralProjection AUTHAPOWER = new PolyhedralProjection(
|
||||||
"TetraPower", "A parametrised, rearranged, open-source version of my AuthaGraph approximation.",
|
"TetraPower", "A parametrised, simplified version of my AuthaGraph approximation.",
|
||||||
0b1011, Configuration.TETRAHEDRON_WIDE_VERTEX, Property.COMPROMISE, 4,
|
0b1011, Configuration.TETRAHEDRON_WIDE_VERTEX, Property.COMPROMISE, 4,
|
||||||
new String[] {"Power"}, new double[][] {{.25,1,.7}}) {
|
new String[] {"Power"}, new double[][] {{.5,1,.6}}) {
|
||||||
|
|
||||||
private double k;
|
private double k;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user