From 54e33f91513f73935ac724a001f31251394bbfba Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 16 Sep 2020 17:33:48 +0200 Subject: [PATCH] save extra model parameters --- config.cpp | 9 +++++++++ models.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/config.cpp b/config.cpp index c1104f13..7c35c523 100644 --- a/config.cpp +++ b/config.cpp @@ -496,6 +496,11 @@ EX void initConfig() { addsaver(pconf.collignon_parameter, "collignon-parameter", 1); addsaver(pconf.collignon_reflected, "collignon-reflect", false); + addsaver(pconf.aitoff_parameter, "aitoff-parameter"); + addsaver(pconf.miller_parameter, "miller-parameter"); + addsaver(pconf.loximuthal_parameter, "loximuthal_parameter"); + addsaver(pconf.winkel_parameter, "winkel_parameter"); + addsaver(vid.plevel_factor, "plevel_factor", 0.7); addsaver(vid.creature_scale, "3d-creaturescale", 1); @@ -2699,6 +2704,10 @@ EX unordered_map params = { {"mgrid", vid.multiplier_grid}, {"mring", vid.multiplier_ring}, {"collignon", pconf.collignon_parameter}, + {"aitoff", pconf.aitoff_parameter}, + {"loxidromic", pconf.loximuthal_parameter}, + {"miller", pconf.miller_parameter}, + {"winkel", pconf.winkel_parameter}, {"levellines", levellines}, #endif }; diff --git a/models.cpp b/models.cpp index 42959fc1..4d1252cd 100644 --- a/models.cpp +++ b/models.cpp @@ -626,6 +626,47 @@ EX namespace models { }); } + if(vpmodel == mdMiller) { + dialog::addSelItem(XLAT("parameter"), fts(vpconf.miller_parameter), 'b'); + dialog::add_action([](){ + dialog::editNumber(vpconf.miller_parameter, -1, 1, .1, 4/5., XLAT("parameter"), + "The Miller projection is obtained by multiplying the latitude by 4/5, using Mercator projection, and then multiplying Y by 5/4. " + "Here you can change this parameter." + ); + }); + } + + if(vpmodel == mdLoximuthal) { + dialog::addSelItem(XLAT("parameter"), fts(vpconf.loximuthal_parameter), 'b'); + dialog::add_action([](){ + dialog::editNumber(vpconf.loximuthal_parameter, -M_PI/2, M_PI/2, .1, 0, XLAT("parameter"), + "This model is similar to azimuthal equidistant, but based on loxodromes (lines of constant geographic direction) rather than geodesics. " + "The loximuthal projection maps (the shortest) loxodromes to straight lines of the same length, going through the starting point. " + "This setting changes the latitude of the starting point." + ); + }); + } + + if(among(vpmodel, mdAitoff, mdHammer, mdWinkelTripel)) { + dialog::addSelItem(XLAT("parameter"), fts(vpconf.aitoff_parameter), 'b'); + dialog::add_action([](){ + dialog::editNumber(vpconf.aitoff_parameter, -1, 1, .1, 1/2., XLAT("parameter"), + "The Aitoff projection is obtained by multiplying the longitude by 1/2, using azimuthal equidistant projection, and then multiplying X by 1/2. " + "Hammer projection is similar but equi-area projection is used instead. " + "Here you can change this parameter." + ); + }); + } + + if(vpmodel == mdWinkelTripel) { + dialog::addSelItem(XLAT("mixing proportion"), fts(vpconf.winkel_parameter), 'B'); + dialog::add_action([](){ + dialog::editNumber(vpconf.winkel_parameter, -1, 1, .1, 1, XLAT("parameter"), + "The Winkel Tripel projection is the average of Aitoff projection and equirectangular projection. Here you can change the proportion." + ); + }); + } + if(vpmodel == mdSpiral && !euclid) { dialog::addSelItem(XLAT("spiral angle"), fts(vpconf.spiral_angle) + "°", 'x'); dialog::add_action([](){