From 0f10a4f72778334c807fe0583d17b0b37c50719d Mon Sep 17 00:00:00 2001 From: Felix Palmer Date: Fri, 17 Apr 2026 11:25:17 +0200 Subject: [PATCH] Feature: ISEA projection (generalized) --- src/pj_list.h | 1 + src/projections/polyhedral.cpp | 18 +++ src/projections/polyhedral/nets/isea2/isea2.h | 135 ++++++++++++++++++ .../polyhedra/hexakis_icosahedron.h | 135 ++++++++++++++++++ test/render_nets.sh | 4 + test/unit/test_polyhedral.cpp | 1 + 6 files changed, 294 insertions(+) create mode 100644 src/projections/polyhedral/nets/isea2/isea2.h create mode 100644 src/projections/polyhedral/polyhedra/hexakis_icosahedron.h diff --git a/src/pj_list.h b/src/pj_list.h index 5f8c7fa651..4828e53a3a 100644 --- a/src/pj_list.h +++ b/src/pj_list.h @@ -79,6 +79,7 @@ PROJ_HEAD(imoll_o, "Interrupted Mollweide Oceanic View") PROJ_HEAD(imw_p, "International Map of the World Polyconic") PROJ_HEAD(dsea, "Dodecahedral Snyder Equal Area") PROJ_HEAD(isea, "Icosahedral Snyder Equal Area") +PROJ_HEAD(isea2, "Icosahedral Snyder Equal Area (generalized)") PROJ_HEAD(kav5, "Kavrayskiy V") PROJ_HEAD(kav7, "Kavrayskiy VII") PROJ_HEAD(krovak, "Krovak") diff --git a/src/projections/polyhedral.cpp b/src/projections/polyhedral.cpp index 50616362a3..9d2204a6fa 100644 --- a/src/projections/polyhedral.cpp +++ b/src/projections/polyhedral.cpp @@ -24,12 +24,14 @@ #include "polyhedral/sphere.h" #include "polyhedral/polyhedra/decakis_dodecahedron.h" +#include "polyhedral/polyhedra/hexakis_icosahedron.h" #include "polyhedral/polyhedra/hexakis_tetrahedron.h" #include "polyhedral/nets/dsea/a5.h" #include "polyhedral/nets/dsea/crescent.h" #include "polyhedral/nets/dsea/dsea.h" #include "polyhedral/nets/dsea/icosahedron.h" #include "polyhedral/nets/dsea/two_flower.h" +#include "polyhedral/nets/isea2/isea2.h" #include "polyhedral/nets/tsea/tsea.h" #include "proj.h" @@ -113,6 +115,22 @@ PJ *PJ_PROJECTION(dsea) { return P; } +PROJ_HEAD(isea2, "Icosahedral Snyder Equal Area (generalized)") "\n\tSph"; +constexpr double ISEA_STD_LAT_DEG = 58.282525588539; +constexpr double ISEA_STD_LON_DEG = 11.25; +PJ *PJ_PROJECTION(isea2) { // TODO rename to `isea`? + auto *Q = static_cast( calloc(1, sizeof(pj_polyhedral_data))); + if (nullptr == Q) return pj_default_destructor(P, PROJ_ERR_OTHER /*ENOMEM*/); + P->opaque = Q; + + polyhedral::load_triangles(Q, hexakis_icosahedron::SPH_TRI, nets::isea2::isea2::FACE_TRI); + polyhedral::set_orient_from_angles(Q, ISEA_STD_LAT_DEG, ISEA_STD_LON_DEG, 0.0); + + P->fwd = polyhedral_fwd; + P->inv = polyhedral_inv; + return P; +} + PROJ_HEAD(tsea, "Tetrahedral Snyder Equal Area") "\n\tSph"; PJ *PJ_PROJECTION(tsea) { auto *Q = static_cast(calloc(1, sizeof(pj_polyhedral_data))); diff --git a/src/projections/polyhedral/nets/isea2/isea2.h b/src/projections/polyhedral/nets/isea2/isea2.h new file mode 100644 index 0000000000..455869c16c --- /dev/null +++ b/src/projections/polyhedral/nets/isea2/isea2.h @@ -0,0 +1,135 @@ +// Auto-generated by scripts/generate_isea_mapping.py — DO NOT EDIT + +#ifndef NETS_ISEA2_ISEA2_H +#define NETS_ISEA2_ISEA2_H + +namespace nets { namespace isea2 { namespace isea2 { + +// Planar triangle vertices (net coordinates) +// [tri][vertex: 0=apex, 1=left, 2=right][x, y] +constexpr double FACE_TRI[120][3][2] = { + {{-2.40918201171050805e+00, 8.69338676867416282e-01}, {-2.71032976317432217e+00, 1.04320641224089972e+00}, {-2.40918201171050850e+00, 1.56480961836134957e+00}}, + {{-2.40918201171050805e+00, 8.69338676867416282e-01}, {-3.01147751463813584e+00, 5.21603206120449858e-01}, {-2.71032976317432217e+00, 1.04320641224089972e+00}}, + {{-2.40918201171050805e+00, 8.69338676867416282e-01}, {-2.40918201171050805e+00, 5.21603206120449747e-01}, {-3.01147751463813584e+00, 5.21603206120449858e-01}}, + {{-2.40918201171050805e+00, 8.69338676867416282e-01}, {-1.80688650878287982e+00, 5.21603206120449525e-01}, {-2.40918201171050805e+00, 5.21603206120449747e-01}}, + {{-2.40918201171050805e+00, 8.69338676867416282e-01}, {-2.10803426024669394e+00, 1.04320641224089949e+00}, {-1.80688650878287982e+00, 5.21603206120449525e-01}}, + {{-2.40918201171050805e+00, 8.69338676867416282e-01}, {-2.40918201171050850e+00, 1.56480961836134957e+00}, {-2.10803426024669394e+00, 1.04320641224089949e+00}}, + {{-1.20459100585525425e+00, 8.69338676867416504e-01}, {-1.50573875731906792e+00, 1.04320641224089972e+00}, {-1.20459100585525447e+00, 1.56480961836134957e+00}}, + {{-1.20459100585525425e+00, 8.69338676867416504e-01}, {-1.80688650878288115e+00, 5.21603206120449858e-01}, {-1.50573875731906792e+00, 1.04320641224089972e+00}}, + {{-1.20459100585525425e+00, 8.69338676867416504e-01}, {-1.20459100585525425e+00, 5.21603206120449747e-01}, {-1.80688650878288115e+00, 5.21603206120449858e-01}}, + {{-1.20459100585525425e+00, 8.69338676867416504e-01}, {-6.02295502927627124e-01, 5.21603206120449858e-01}, {-1.20459100585525425e+00, 5.21603206120449747e-01}}, + {{-1.20459100585525425e+00, 8.69338676867416504e-01}, {-9.03443254391440798e-01, 1.04320641224089972e+00}, {-6.02295502927627124e-01, 5.21603206120449858e-01}}, + {{-1.20459100585525425e+00, 8.69338676867416504e-01}, {-1.20459100585525447e+00, 1.56480961836134957e+00}, {-9.03443254391440798e-01, 1.04320641224089972e+00}}, + {{ 7.40148683083437653e-17, 8.69338676867416282e-01}, {-3.01147751463813618e-01, 1.04320641224089972e+00}, { 1.23259516440783095e-32, 1.56480961836134957e+00}}, + {{ 7.40148683083437653e-17, 8.69338676867416282e-01}, {-6.02295502927627124e-01, 5.21603206120449636e-01}, {-3.01147751463813618e-01, 1.04320641224089972e+00}}, + {{ 7.40148683083437653e-17, 8.69338676867416282e-01}, { 1.11022302462515679e-16, 5.21603206120449525e-01}, {-6.02295502927627124e-01, 5.21603206120449636e-01}}, + {{ 7.40148683083437653e-17, 8.69338676867416282e-01}, { 6.02295502927627235e-01, 5.21603206120449414e-01}, { 1.11022302462515679e-16, 5.21603206120449525e-01}}, + {{ 7.40148683083437653e-17, 8.69338676867416282e-01}, { 3.01147751463813618e-01, 1.04320641224089949e+00}, { 6.02295502927627235e-01, 5.21603206120449414e-01}}, + {{ 7.40148683083437653e-17, 8.69338676867416282e-01}, { 1.23259516440783095e-32, 1.56480961836134957e+00}, { 3.01147751463813618e-01, 1.04320641224089949e+00}}, + {{ 1.20459100585525425e+00, 8.69338676867416393e-01}, { 9.03443254391440576e-01, 1.04320641224089972e+00}, { 1.20459100585525425e+00, 1.56480961836134957e+00}}, + {{ 1.20459100585525425e+00, 8.69338676867416393e-01}, { 6.02295502927627124e-01, 5.21603206120449858e-01}, { 9.03443254391440576e-01, 1.04320641224089972e+00}}, + {{ 1.20459100585525425e+00, 8.69338676867416393e-01}, { 1.20459100585525425e+00, 5.21603206120449858e-01}, { 6.02295502927627124e-01, 5.21603206120449858e-01}}, + {{ 1.20459100585525425e+00, 8.69338676867416393e-01}, { 1.80688650878288160e+00, 5.21603206120449747e-01}, { 1.20459100585525425e+00, 5.21603206120449858e-01}}, + {{ 1.20459100585525425e+00, 8.69338676867416393e-01}, { 1.50573875731906792e+00, 1.04320641224089972e+00}, { 1.80688650878288160e+00, 5.21603206120449747e-01}}, + {{ 1.20459100585525425e+00, 8.69338676867416393e-01}, { 1.20459100585525425e+00, 1.56480961836134957e+00}, { 1.50573875731906792e+00, 1.04320641224089972e+00}}, + {{ 2.40918201171050894e+00, 8.69338676867416504e-01}, { 2.10803426024669527e+00, 1.04320641224089972e+00}, { 2.40918201171050939e+00, 1.56480961836134957e+00}}, + {{ 2.40918201171050894e+00, 8.69338676867416504e-01}, { 1.80688650878288160e+00, 5.21603206120449858e-01}, { 2.10803426024669527e+00, 1.04320641224089972e+00}}, + {{ 2.40918201171050894e+00, 8.69338676867416504e-01}, { 2.40918201171050894e+00, 5.21603206120449636e-01}, { 1.80688650878288160e+00, 5.21603206120449858e-01}}, + {{ 2.40918201171050894e+00, 8.69338676867416504e-01}, { 3.01147751463813584e+00, 5.21603206120449858e-01}, { 2.40918201171050894e+00, 5.21603206120449636e-01}}, + {{ 2.40918201171050894e+00, 8.69338676867416504e-01}, { 2.71032976317432261e+00, 1.04320641224089972e+00}, { 3.01147751463813584e+00, 5.21603206120449858e-01}}, + {{ 2.40918201171050894e+00, 8.69338676867416504e-01}, { 2.40918201171050939e+00, 1.56480961836134957e+00}, { 2.71032976317432261e+00, 1.04320641224089972e+00}}, + {{-2.40918201171050850e+00, 1.73867735373483406e-01}, {-2.71032976317432217e+00, 1.38777878078144568e-16}, {-3.01147751463813584e+00, 5.21603206120449858e-01}}, + {{-2.40918201171050850e+00, 1.73867735373483406e-01}, {-2.40918201171050850e+00, -5.21603206120449858e-01}, {-2.71032976317432217e+00, 1.38777878078144568e-16}}, + {{-2.40918201171050850e+00, 1.73867735373483406e-01}, {-2.10803426024669482e+00, 2.77555756156289135e-17}, {-2.40918201171050850e+00, -5.21603206120449858e-01}}, + {{-2.40918201171050850e+00, 1.73867735373483406e-01}, {-1.80688650878288137e+00, 5.21603206120449747e-01}, {-2.10803426024669482e+00, 2.77555756156289135e-17}}, + {{-2.40918201171050850e+00, 1.73867735373483406e-01}, {-2.40918201171050850e+00, 5.21603206120449969e-01}, {-1.80688650878288137e+00, 5.21603206120449747e-01}}, + {{-2.40918201171050850e+00, 1.73867735373483406e-01}, {-3.01147751463813584e+00, 5.21603206120449858e-01}, {-2.40918201171050850e+00, 5.21603206120449969e-01}}, + {{-1.20459100585525403e+00, 1.73867735373483379e-01}, {-1.50573875731906792e+00, 1.66533453693773481e-16}, {-1.80688650878288137e+00, 5.21603206120449858e-01}}, + {{-1.20459100585525403e+00, 1.73867735373483379e-01}, {-1.20459100585525425e+00, -5.21603206120449858e-01}, {-1.50573875731906792e+00, 1.66533453693773481e-16}}, + {{-1.20459100585525403e+00, 1.73867735373483379e-01}, {-9.03443254391440465e-01, 5.55111512312578270e-17}, {-1.20459100585525425e+00, -5.21603206120449858e-01}}, + {{-1.20459100585525403e+00, 1.73867735373483379e-01}, {-6.02295502927626236e-01, 5.21603206120449747e-01}, {-9.03443254391440465e-01, 5.55111512312578270e-17}}, + {{-1.20459100585525403e+00, 1.73867735373483379e-01}, {-1.20459100585525380e+00, 5.21603206120449858e-01}, {-6.02295502927626236e-01, 5.21603206120449747e-01}}, + {{-1.20459100585525403e+00, 1.73867735373483379e-01}, {-1.80688650878288137e+00, 5.21603206120449858e-01}, {-1.20459100585525380e+00, 5.21603206120449858e-01}}, + {{ 3.70074341541719073e-17, 1.73867735373483601e-01}, {-3.01147751463813562e-01, 1.66533453693773481e-16}, {-6.02295502927627346e-01, 5.21603206120449858e-01}}, + {{ 3.70074341541719073e-17, 1.73867735373483601e-01}, { 6.16297582203915473e-33, -5.21603206120449858e-01}, {-3.01147751463813562e-01, 1.66533453693773481e-16}}, + {{ 3.70074341541719073e-17, 1.73867735373483601e-01}, { 3.01147751463813729e-01, 1.11022302462515654e-16}, { 6.16297582203915473e-33, -5.21603206120449858e-01}}, + {{ 3.70074341541719073e-17, 1.73867735373483601e-01}, { 6.02295502927627235e-01, 5.21603206120449858e-01}, { 3.01147751463813729e-01, 1.11022302462515654e-16}}, + {{ 3.70074341541719073e-17, 1.73867735373483601e-01}, { 5.72142083158533869e-17, 5.21603206120449858e-01}, { 6.02295502927627235e-01, 5.21603206120449858e-01}}, + {{ 3.70074341541719073e-17, 1.73867735373483601e-01}, {-6.02295502927627346e-01, 5.21603206120449858e-01}, { 5.72142083158533869e-17, 5.21603206120449858e-01}}, + {{ 1.20459100585525425e+00, 1.73867735373483434e-01}, { 9.03443254391440576e-01, 0.00000000000000000e+00}, { 6.02295502927626902e-01, 5.21603206120449969e-01}}, + {{ 1.20459100585525425e+00, 1.73867735373483434e-01}, { 1.20459100585525425e+00, -5.21603206120449969e-01}, { 9.03443254391440576e-01, 0.00000000000000000e+00}}, + {{ 1.20459100585525425e+00, 1.73867735373483434e-01}, { 1.50573875731906792e+00, 1.94289029309402395e-16}, { 1.20459100585525425e+00, -5.21603206120449969e-01}}, + {{ 1.20459100585525425e+00, 1.73867735373483434e-01}, { 1.80688650878288137e+00, 5.21603206120449858e-01}, { 1.50573875731906792e+00, 1.94289029309402395e-16}}, + {{ 1.20459100585525425e+00, 1.73867735373483434e-01}, { 1.20459100585525425e+00, 5.21603206120449858e-01}, { 1.80688650878288137e+00, 5.21603206120449858e-01}}, + {{ 1.20459100585525425e+00, 1.73867735373483434e-01}, { 6.02295502927626902e-01, 5.21603206120449969e-01}, { 1.20459100585525425e+00, 5.21603206120449858e-01}}, + {{ 2.40918201171050850e+00, 1.73867735373483490e-01}, { 2.10803426024669527e+00, -1.11022302462515654e-16}, { 1.80688650878288137e+00, 5.21603206120449858e-01}}, + {{ 2.40918201171050850e+00, 1.73867735373483490e-01}, { 2.40918201171050894e+00, -5.21603206120449858e-01}, { 2.10803426024669527e+00, -1.11022302462515654e-16}}, + {{ 2.40918201171050850e+00, 1.73867735373483490e-01}, { 2.71032976317432173e+00, 1.66533453693773481e-16}, { 2.40918201171050894e+00, -5.21603206120449858e-01}}, + {{ 2.40918201171050850e+00, 1.73867735373483490e-01}, { 3.01147751463813496e+00, 5.21603206120449858e-01}, { 2.71032976317432173e+00, 1.66533453693773481e-16}}, + {{ 2.40918201171050850e+00, 1.73867735373483490e-01}, { 2.40918201171050805e+00, 5.21603206120449858e-01}, { 3.01147751463813496e+00, 5.21603206120449858e-01}}, + {{ 2.40918201171050850e+00, 1.73867735373483490e-01}, { 1.80688650878288137e+00, 5.21603206120449858e-01}, { 2.40918201171050805e+00, 5.21603206120449858e-01}}, + {{-1.80688650878288137e+00, -1.73867735373483379e-01}, {-1.80688650878288160e+00, -5.21603206120449858e-01}, {-2.40918201171050850e+00, -5.21603206120449858e-01}}, + {{-1.80688650878288137e+00, -1.73867735373483379e-01}, {-1.20459100585525469e+00, -5.21603206120449858e-01}, {-1.80688650878288160e+00, -5.21603206120449858e-01}}, + {{-1.80688650878288137e+00, -1.73867735373483379e-01}, {-1.50573875731906770e+00, -5.55111512312578270e-17}, {-1.20459100585525469e+00, -5.21603206120449858e-01}}, + {{-1.80688650878288137e+00, -1.73867735373483379e-01}, {-1.80688650878288115e+00, 5.21603206120449858e-01}, {-1.50573875731906770e+00, -5.55111512312578270e-17}}, + {{-1.80688650878288137e+00, -1.73867735373483379e-01}, {-2.10803426024669482e+00, 0.00000000000000000e+00}, {-1.80688650878288115e+00, 5.21603206120449858e-01}}, + {{-1.80688650878288137e+00, -1.73867735373483379e-01}, {-2.40918201171050850e+00, -5.21603206120449858e-01}, {-2.10803426024669482e+00, 0.00000000000000000e+00}}, + {{-6.02295502927627235e-01, -1.73867735373483295e-01}, {-6.02295502927627235e-01, -5.21603206120449747e-01}, {-1.20459100585525425e+00, -5.21603206120449858e-01}}, + {{-6.02295502927627235e-01, -1.73867735373483295e-01}, { 0.00000000000000000e+00, -5.21603206120449858e-01}, {-6.02295502927627235e-01, -5.21603206120449747e-01}}, + {{-6.02295502927627235e-01, -1.73867735373483295e-01}, {-3.01147751463813618e-01, -2.77555756156289135e-17}, { 0.00000000000000000e+00, -5.21603206120449858e-01}}, + {{-6.02295502927627235e-01, -1.73867735373483295e-01}, {-6.02295502927627124e-01, 5.21603206120449747e-01}, {-3.01147751463813618e-01, -2.77555756156289135e-17}}, + {{-6.02295502927627235e-01, -1.73867735373483295e-01}, {-9.03443254391440798e-01, 8.32667268468867405e-17}, {-6.02295502927627124e-01, 5.21603206120449747e-01}}, + {{-6.02295502927627235e-01, -1.73867735373483295e-01}, {-1.20459100585525425e+00, -5.21603206120449858e-01}, {-9.03443254391440798e-01, 8.32667268468867405e-17}}, + {{ 6.02295502927627124e-01, -1.73867735373483184e-01}, { 6.02295502927627124e-01, -5.21603206120449747e-01}, { 0.00000000000000000e+00, -5.21603206120449858e-01}}, + {{ 6.02295502927627124e-01, -1.73867735373483184e-01}, { 1.20459100585525425e+00, -5.21603206120449747e-01}, { 6.02295502927627124e-01, -5.21603206120449747e-01}}, + {{ 6.02295502927627124e-01, -1.73867735373483184e-01}, { 9.03443254391440576e-01, 2.77555756156289135e-17}, { 1.20459100585525425e+00, -5.21603206120449747e-01}}, + {{ 6.02295502927627124e-01, -1.73867735373483184e-01}, { 6.02295502927627346e-01, 5.21603206120449858e-01}, { 9.03443254391440576e-01, 2.77555756156289135e-17}}, + {{ 6.02295502927627124e-01, -1.73867735373483184e-01}, { 3.01147751463813618e-01, 1.66533453693773481e-16}, { 6.02295502927627346e-01, 5.21603206120449858e-01}}, + {{ 6.02295502927627124e-01, -1.73867735373483184e-01}, { 0.00000000000000000e+00, -5.21603206120449858e-01}, { 3.01147751463813618e-01, 1.66533453693773481e-16}}, + {{ 1.80688650878288137e+00, -1.73867735373483379e-01}, { 1.80688650878288137e+00, -5.21603206120449969e-01}, { 1.20459100585525425e+00, -5.21603206120449969e-01}}, + {{ 1.80688650878288137e+00, -1.73867735373483379e-01}, { 2.40918201171050850e+00, -5.21603206120449858e-01}, { 1.80688650878288137e+00, -5.21603206120449969e-01}}, + {{ 1.80688650878288137e+00, -1.73867735373483379e-01}, { 2.10803426024669482e+00, 5.55111512312578270e-17}, { 2.40918201171050850e+00, -5.21603206120449858e-01}}, + {{ 1.80688650878288137e+00, -1.73867735373483379e-01}, { 1.80688650878288137e+00, 5.21603206120449858e-01}, { 2.10803426024669482e+00, 5.55111512312578270e-17}}, + {{ 1.80688650878288137e+00, -1.73867735373483379e-01}, { 1.50573875731906792e+00, -1.11022302462515654e-16}, { 1.80688650878288137e+00, 5.21603206120449858e-01}}, + {{ 1.80688650878288137e+00, -1.73867735373483379e-01}, { 1.20459100585525425e+00, -5.21603206120449969e-01}, { 1.50573875731906792e+00, -1.11022302462515654e-16}}, + {{ 3.01147751463813540e+00, -1.73867735373482935e-01}, { 3.01147751463813540e+00, -5.21603206120449747e-01}, { 2.40918201171050805e+00, -5.21603206120449858e-01}}, + {{ 3.01147751463813540e+00, -1.73867735373482935e-01}, { 3.61377301756576275e+00, -5.21603206120450080e-01}, { 3.01147751463813540e+00, -5.21603206120449747e-01}}, + {{ 3.01147751463813540e+00, -1.73867735373482935e-01}, { 3.31262526610194907e+00, 1.94289029309402395e-16}, { 3.61377301756576275e+00, -5.21603206120450080e-01}}, + {{ 3.01147751463813540e+00, -1.73867735373482935e-01}, { 3.01147751463813540e+00, 5.21603206120449858e-01}, { 3.31262526610194907e+00, 1.94289029309402395e-16}}, + {{ 3.01147751463813540e+00, -1.73867735373482935e-01}, { 2.71032976317432173e+00, 2.77555756156289135e-16}, { 3.01147751463813540e+00, 5.21603206120449858e-01}}, + {{ 3.01147751463813540e+00, -1.73867735373482935e-01}, { 2.40918201171050805e+00, -5.21603206120449858e-01}, { 2.71032976317432173e+00, 2.77555756156289135e-16}}, + {{-1.80688650878288115e+00, -8.69338676867416948e-01}, {-1.50573875731906792e+00, -1.04320641224089994e+00}, {-1.80688650878288115e+00, -1.56480961836134957e+00}}, + {{-1.80688650878288115e+00, -8.69338676867416948e-01}, {-1.20459100585525425e+00, -5.21603206120449858e-01}, {-1.50573875731906792e+00, -1.04320641224089994e+00}}, + {{-1.80688650878288115e+00, -8.69338676867416948e-01}, {-1.80688650878288115e+00, -5.21603206120449858e-01}, {-1.20459100585525425e+00, -5.21603206120449858e-01}}, + {{-1.80688650878288115e+00, -8.69338676867416948e-01}, {-2.40918201171050805e+00, -5.21603206120449747e-01}, {-1.80688650878288115e+00, -5.21603206120449858e-01}}, + {{-1.80688650878288115e+00, -8.69338676867416948e-01}, {-2.10803426024669438e+00, -1.04320641224089994e+00}, {-2.40918201171050805e+00, -5.21603206120449747e-01}}, + {{-1.80688650878288115e+00, -8.69338676867416948e-01}, {-1.80688650878288115e+00, -1.56480961836134957e+00}, {-2.10803426024669438e+00, -1.04320641224089994e+00}}, + {{-6.02295502927627124e-01, -8.69338676867416615e-01}, {-3.01147751463813673e-01, -1.04320641224089949e+00}, {-6.02295502927627124e-01, -1.56480961836134891e+00}}, + {{-6.02295502927627124e-01, -8.69338676867416615e-01}, {-1.11022302462515654e-16, -5.21603206120449969e-01}, {-3.01147751463813673e-01, -1.04320641224089949e+00}}, + {{-6.02295502927627124e-01, -8.69338676867416615e-01}, {-6.02295502927627235e-01, -5.21603206120449969e-01}, {-1.11022302462515654e-16, -5.21603206120449969e-01}}, + {{-6.02295502927627124e-01, -8.69338676867416615e-01}, {-1.20459100585525425e+00, -5.21603206120449858e-01}, {-6.02295502927627235e-01, -5.21603206120449969e-01}}, + {{-6.02295502927627124e-01, -8.69338676867416615e-01}, {-9.03443254391440576e-01, -1.04320641224089949e+00}, {-1.20459100585525425e+00, -5.21603206120449858e-01}}, + {{-6.02295502927627124e-01, -8.69338676867416615e-01}, {-6.02295502927627124e-01, -1.56480961836134891e+00}, {-9.03443254391440576e-01, -1.04320641224089949e+00}}, + {{ 6.02295502927627124e-01, -8.69338676867416837e-01}, { 9.03443254391440576e-01, -1.04320641224089994e+00}, { 6.02295502927627124e-01, -1.56480961836135002e+00}}, + {{ 6.02295502927627124e-01, -8.69338676867416837e-01}, { 1.20459100585525425e+00, -5.21603206120449858e-01}, { 9.03443254391440576e-01, -1.04320641224089994e+00}}, + {{ 6.02295502927627124e-01, -8.69338676867416837e-01}, { 6.02295502927627124e-01, -5.21603206120449747e-01}, { 1.20459100585525425e+00, -5.21603206120449858e-01}}, + {{ 6.02295502927627124e-01, -8.69338676867416837e-01}, { 0.00000000000000000e+00, -5.21603206120449969e-01}, { 6.02295502927627124e-01, -5.21603206120449747e-01}}, + {{ 6.02295502927627124e-01, -8.69338676867416837e-01}, { 3.01147751463813562e-01, -1.04320641224089994e+00}, { 0.00000000000000000e+00, -5.21603206120449969e-01}}, + {{ 6.02295502927627124e-01, -8.69338676867416837e-01}, { 6.02295502927627124e-01, -1.56480961836135002e+00}, { 3.01147751463813562e-01, -1.04320641224089994e+00}}, + {{ 1.80688650878288137e+00, -8.69338676867416837e-01}, { 2.10803426024669482e+00, -1.04320641224089972e+00}, { 1.80688650878288115e+00, -1.56480961836134935e+00}}, + {{ 1.80688650878288137e+00, -8.69338676867416837e-01}, { 2.40918201171050850e+00, -5.21603206120450080e-01}, { 2.10803426024669482e+00, -1.04320641224089972e+00}}, + {{ 1.80688650878288137e+00, -8.69338676867416837e-01}, { 1.80688650878288160e+00, -5.21603206120449969e-01}, { 2.40918201171050850e+00, -5.21603206120450080e-01}}, + {{ 1.80688650878288137e+00, -8.69338676867416837e-01}, { 1.20459100585525425e+00, -5.21603206120449858e-01}, { 1.80688650878288160e+00, -5.21603206120449969e-01}}, + {{ 1.80688650878288137e+00, -8.69338676867416837e-01}, { 1.50573875731906770e+00, -1.04320641224089994e+00}, { 1.20459100585525425e+00, -5.21603206120449858e-01}}, + {{ 1.80688650878288137e+00, -8.69338676867416837e-01}, { 1.80688650878288115e+00, -1.56480961836134935e+00}, { 1.50573875731906770e+00, -1.04320641224089994e+00}}, + {{ 3.01147751463813496e+00, -8.69338676867416726e-01}, { 3.31262526610194863e+00, -1.04320641224089994e+00}, { 3.01147751463813540e+00, -1.56480961836134957e+00}}, + {{ 3.01147751463813496e+00, -8.69338676867416726e-01}, { 3.61377301756576141e+00, -5.21603206120450080e-01}, { 3.31262526610194863e+00, -1.04320641224089994e+00}}, + {{ 3.01147751463813496e+00, -8.69338676867416726e-01}, { 3.01147751463813451e+00, -5.21603206120449858e-01}, { 3.61377301756576141e+00, -5.21603206120450080e-01}}, + {{ 3.01147751463813496e+00, -8.69338676867416726e-01}, { 2.40918201171050761e+00, -5.21603206120449858e-01}, { 3.01147751463813451e+00, -5.21603206120449858e-01}}, + {{ 3.01147751463813496e+00, -8.69338676867416726e-01}, { 2.71032976317432173e+00, -1.04320641224089972e+00}, { 2.40918201171050761e+00, -5.21603206120449858e-01}}, + {{ 3.01147751463813496e+00, -8.69338676867416726e-01}, { 3.01147751463813540e+00, -1.56480961836134957e+00}, { 2.71032976317432173e+00, -1.04320641224089972e+00}} +}; + +} } } // namespace nets::isea2::isea2 + +#endif // NETS_ISEA2_ISEA2_H diff --git a/src/projections/polyhedral/polyhedra/hexakis_icosahedron.h b/src/projections/polyhedral/polyhedra/hexakis_icosahedron.h new file mode 100644 index 0000000000..c1ecba1786 --- /dev/null +++ b/src/projections/polyhedral/polyhedra/hexakis_icosahedron.h @@ -0,0 +1,135 @@ +// Auto-generated by scripts/generate_isea_mapping.py — DO NOT EDIT + +#ifndef POLYHEDRA_HEXAKIS_ICOSAHEDRON_H +#define POLYHEDRA_HEXAKIS_ICOSAHEDRON_H + +namespace hexakis_icosahedron { + +// Spherical triangle vertices (unit vectors in natural frame) +// [tri][vertex: 0=apex, 1=left, 2=right][x, y, z] +constexpr double SPH_TRI[120][3][3] = { + {{-4.91123473188423088e-01, -3.56822089773089934e-01, 7.94654472291766112e-01}, {-5.25731112119133703e-01, 6.43834923668875347e-17, 8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}}, + {{-4.91123473188423088e-01, -3.56822089773089934e-01, 7.94654472291766112e-01}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}, {-5.25731112119133703e-01, 6.43834923668875347e-17, 8.50650808352039989e-01}}, + {{-4.91123473188423088e-01, -3.56822089773089934e-01, 7.94654472291766112e-01}, {-6.88190960235586902e-01, -5.00000000000000000e-01, 5.25731112119133481e-01}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}}, + {{-4.91123473188423088e-01, -3.56822089773089934e-01, 7.94654472291766112e-01}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}, {-6.88190960235586902e-01, -5.00000000000000000e-01, 5.25731112119133481e-01}}, + {{-4.91123473188423088e-01, -3.56822089773089934e-01, 7.94654472291766112e-01}, {-1.62459848116453254e-01, -5.00000000000000111e-01, 8.50650808352039989e-01}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}}, + {{-4.91123473188423088e-01, -3.56822089773089934e-01, 7.94654472291766112e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}, {-1.62459848116453254e-01, -5.00000000000000111e-01, 8.50650808352039989e-01}}, + {{ 1.87592474085079841e-01, -5.77350269189625842e-01, 7.94654472291766112e-01}, {-1.62459848116453254e-01, -5.00000000000000111e-01, 8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}}, + {{ 1.87592474085079841e-01, -5.77350269189625842e-01, 7.94654472291766112e-01}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}, {-1.62459848116453254e-01, -5.00000000000000111e-01, 8.50650808352039989e-01}}, + {{ 1.87592474085079841e-01, -5.77350269189625842e-01, 7.94654472291766112e-01}, { 2.62865556059566741e-01, -8.09016994374947673e-01, 5.25731112119133481e-01}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}}, + {{ 1.87592474085079841e-01, -5.77350269189625842e-01, 7.94654472291766112e-01}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}, { 2.62865556059566741e-01, -8.09016994374947673e-01, 5.25731112119133481e-01}}, + {{ 1.87592474085079841e-01, -5.77350269189625842e-01, 7.94654472291766112e-01}, { 4.25325404176019994e-01, -3.09016994374947562e-01, 8.50650808352039989e-01}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}}, + {{ 1.87592474085079841e-01, -5.77350269189625842e-01, 7.94654472291766112e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}, { 4.25325404176019994e-01, -3.09016994374947562e-01, 8.50650808352039989e-01}}, + {{ 6.07061998206686271e-01, -1.39711417142509461e-16, 7.94654472291766112e-01}, { 4.25325404176019994e-01, -3.09016994374947562e-01, 8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}}, + {{ 6.07061998206686271e-01, -1.39711417142509461e-16, 7.94654472291766112e-01}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}, { 4.25325404176019994e-01, -3.09016994374947562e-01, 8.50650808352039989e-01}}, + {{ 6.07061998206686271e-01, -1.39711417142509461e-16, 7.94654472291766112e-01}, { 8.50650808352040100e-01, -1.95771816189063076e-16, 5.25731112119133481e-01}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}}, + {{ 6.07061998206686271e-01, -1.39711417142509461e-16, 7.94654472291766112e-01}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}, { 8.50650808352040100e-01, -1.95771816189063076e-16, 5.25731112119133481e-01}}, + {{ 6.07061998206686271e-01, -1.39711417142509461e-16, 7.94654472291766112e-01}, { 4.25325404176020105e-01, 3.09016994374947396e-01, 8.50650808352039989e-01}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}}, + {{ 6.07061998206686271e-01, -1.39711417142509461e-16, 7.94654472291766112e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}, { 4.25325404176020105e-01, 3.09016994374947396e-01, 8.50650808352039989e-01}}, + {{ 1.87592474085080091e-01, 5.77350269189625842e-01, 7.94654472291766112e-01}, { 4.25325404176020105e-01, 3.09016994374947396e-01, 8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}}, + {{ 1.87592474085080091e-01, 5.77350269189625842e-01, 7.94654472291766112e-01}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}, { 4.25325404176020105e-01, 3.09016994374947396e-01, 8.50650808352039989e-01}}, + {{ 1.87592474085080091e-01, 5.77350269189625842e-01, 7.94654472291766112e-01}, { 2.62865556059567074e-01, 8.09016994374947451e-01, 5.25731112119133481e-01}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}}, + {{ 1.87592474085080091e-01, 5.77350269189625842e-01, 7.94654472291766112e-01}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}, { 2.62865556059567074e-01, 8.09016994374947451e-01, 5.25731112119133481e-01}}, + {{ 1.87592474085080091e-01, 5.77350269189625842e-01, 7.94654472291766112e-01}, {-1.62459848116453032e-01, 5.00000000000000111e-01, 8.50650808352039989e-01}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}}, + {{ 1.87592474085080091e-01, 5.77350269189625842e-01, 7.94654472291766112e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}, {-1.62459848116453032e-01, 5.00000000000000111e-01, 8.50650808352039989e-01}}, + {{-4.91123473188422976e-01, 3.56822089773090045e-01, 7.94654472291766112e-01}, {-1.62459848116453032e-01, 5.00000000000000111e-01, 8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}}, + {{-4.91123473188422976e-01, 3.56822089773090045e-01, 7.94654472291766112e-01}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}, {-1.62459848116453032e-01, 5.00000000000000111e-01, 8.50650808352039989e-01}}, + {{-4.91123473188422976e-01, 3.56822089773090045e-01, 7.94654472291766112e-01}, {-6.88190960235586791e-01, 5.00000000000000222e-01, 5.25731112119133481e-01}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}}, + {{-4.91123473188422976e-01, 3.56822089773090045e-01, 7.94654472291766112e-01}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}, {-6.88190960235586791e-01, 5.00000000000000222e-01, 5.25731112119133481e-01}}, + {{-4.91123473188422976e-01, 3.56822089773090045e-01, 7.94654472291766112e-01}, {-5.25731112119133703e-01, 6.43834923668875347e-17, 8.50650808352039989e-01}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}}, + {{-4.91123473188422976e-01, 3.56822089773090045e-01, 7.94654472291766112e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, 1.00000000000000000e+00}, {-5.25731112119133703e-01, 6.43834923668875347e-17, 8.50650808352039989e-01}}, + {{-7.94654472291766112e-01, -5.77350269189625620e-01, 1.87592474085079758e-01}, {-9.51056516295153642e-01, -3.09016994374947285e-01, -6.52572720630210254e-17}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}}, + {{-7.94654472291766112e-01, -5.77350269189625620e-01, 1.87592474085079758e-01}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}, {-9.51056516295153642e-01, -3.09016994374947285e-01, -6.52572720630210254e-17}}, + {{-7.94654472291766112e-01, -5.77350269189625620e-01, 1.87592474085079758e-01}, {-5.87785252292473137e-01, -8.09016994374947340e-01, -6.52572720630210254e-17}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}}, + {{-7.94654472291766112e-01, -5.77350269189625620e-01, 1.87592474085079758e-01}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}, {-5.87785252292473137e-01, -8.09016994374947340e-01, -6.52572720630210254e-17}}, + {{-7.94654472291766112e-01, -5.77350269189625620e-01, 1.87592474085079758e-01}, {-6.88190960235586902e-01, -5.00000000000000000e-01, 5.25731112119133481e-01}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}}, + {{-7.94654472291766112e-01, -5.77350269189625620e-01, 1.87592474085079758e-01}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}, {-6.88190960235586902e-01, -5.00000000000000000e-01, 5.25731112119133481e-01}}, + {{ 3.03530999103342969e-01, -9.34172358962715776e-01, 1.87592474085079813e-01}, {-1.95771816189063051e-16, -1.00000000000000000e+00, -6.52572720630210254e-17}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}}, + {{ 3.03530999103342969e-01, -9.34172358962715776e-01, 1.87592474085079813e-01}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}, {-1.95771816189063051e-16, -1.00000000000000000e+00, -6.52572720630210254e-17}}, + {{ 3.03530999103342969e-01, -9.34172358962715776e-01, 1.87592474085079813e-01}, { 5.87785252292472915e-01, -8.09016994374947562e-01, -6.52572720630210254e-17}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}}, + {{ 3.03530999103342969e-01, -9.34172358962715776e-01, 1.87592474085079813e-01}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}, { 5.87785252292472915e-01, -8.09016994374947562e-01, -6.52572720630210254e-17}}, + {{ 3.03530999103342969e-01, -9.34172358962715776e-01, 1.87592474085079813e-01}, { 2.62865556059566741e-01, -8.09016994374947673e-01, 5.25731112119133481e-01}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}}, + {{ 3.03530999103342969e-01, -9.34172358962715776e-01, 1.87592474085079813e-01}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}, { 2.62865556059566741e-01, -8.09016994374947673e-01, 5.25731112119133481e-01}}, + {{ 9.82246946376845953e-01, -2.32852361904182377e-16, 1.87592474085079758e-01}, { 9.51056516295153531e-01, -3.09016994374947673e-01, -6.52572720630210254e-17}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}}, + {{ 9.82246946376845953e-01, -2.32852361904182377e-16, 1.87592474085079758e-01}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}, { 9.51056516295153531e-01, -3.09016994374947673e-01, -6.52572720630210254e-17}}, + {{ 9.82246946376845953e-01, -2.32852361904182377e-16, 1.87592474085079758e-01}, { 9.51056516295153642e-01, 3.09016994374947229e-01, -6.52572720630210254e-17}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}}, + {{ 9.82246946376845953e-01, -2.32852361904182377e-16, 1.87592474085079758e-01}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}, { 9.51056516295153642e-01, 3.09016994374947229e-01, -6.52572720630210254e-17}}, + {{ 9.82246946376845953e-01, -2.32852361904182377e-16, 1.87592474085079758e-01}, { 8.50650808352040100e-01, -1.95771816189063076e-16, 5.25731112119133481e-01}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}}, + {{ 9.82246946376845953e-01, -2.32852361904182377e-16, 1.87592474085079758e-01}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}, { 8.50650808352040100e-01, -1.95771816189063076e-16, 5.25731112119133481e-01}}, + {{ 3.03530999103343302e-01, 9.34172358962715665e-01, 1.87592474085079758e-01}, { 5.87785252292473359e-01, 8.09016994374947229e-01, -6.52572720630210254e-17}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}}, + {{ 3.03530999103343302e-01, 9.34172358962715665e-01, 1.87592474085079758e-01}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}, { 5.87785252292473359e-01, 8.09016994374947229e-01, -6.52572720630210254e-17}}, + {{ 3.03530999103343302e-01, 9.34172358962715665e-01, 1.87592474085079758e-01}, { 2.93657724283594626e-16, 1.00000000000000000e+00, -6.52572720630210254e-17}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}}, + {{ 3.03530999103343302e-01, 9.34172358962715665e-01, 1.87592474085079758e-01}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}, { 2.93657724283594626e-16, 1.00000000000000000e+00, -6.52572720630210254e-17}}, + {{ 3.03530999103343302e-01, 9.34172358962715665e-01, 1.87592474085079758e-01}, { 2.62865556059567074e-01, 8.09016994374947451e-01, 5.25731112119133481e-01}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}}, + {{ 3.03530999103343302e-01, 9.34172358962715665e-01, 1.87592474085079758e-01}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}, { 2.62865556059567074e-01, 8.09016994374947451e-01, 5.25731112119133481e-01}}, + {{-7.94654472291766001e-01, 5.77350269189625842e-01, 1.87592474085079813e-01}, {-5.87785252292472915e-01, 8.09016994374947673e-01, -6.52572720630210254e-17}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}}, + {{-7.94654472291766001e-01, 5.77350269189625842e-01, 1.87592474085079813e-01}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}, {-5.87785252292472915e-01, 8.09016994374947673e-01, -6.52572720630210254e-17}}, + {{-7.94654472291766001e-01, 5.77350269189625842e-01, 1.87592474085079813e-01}, {-9.51056516295153531e-01, 3.09016994374947618e-01, -6.52572720630210254e-17}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}}, + {{-7.94654472291766001e-01, 5.77350269189625842e-01, 1.87592474085079813e-01}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}, {-9.51056516295153531e-01, 3.09016994374947618e-01, -6.52572720630210254e-17}}, + {{-7.94654472291766001e-01, 5.77350269189625842e-01, 1.87592474085079813e-01}, {-6.88190960235586791e-01, 5.00000000000000222e-01, 5.25731112119133481e-01}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}}, + {{-7.94654472291766001e-01, 5.77350269189625842e-01, 1.87592474085079813e-01}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}, {-6.88190960235586791e-01, 5.00000000000000222e-01, 5.25731112119133481e-01}}, + {{-3.03530999103343246e-01, -9.34172358962715665e-01, -1.87592474085079952e-01}, {-2.62865556059566907e-01, -8.09016994374947340e-01, -5.25731112119133592e-01}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}}, + {{-3.03530999103343246e-01, -9.34172358962715665e-01, -1.87592474085079952e-01}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}, {-2.62865556059566907e-01, -8.09016994374947340e-01, -5.25731112119133592e-01}}, + {{-3.03530999103343246e-01, -9.34172358962715665e-01, -1.87592474085079952e-01}, {-1.95771816189063051e-16, -1.00000000000000000e+00, -6.52572720630210254e-17}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}}, + {{-3.03530999103343246e-01, -9.34172358962715665e-01, -1.87592474085079952e-01}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}, {-1.95771816189063051e-16, -1.00000000000000000e+00, -6.52572720630210254e-17}}, + {{-3.03530999103343246e-01, -9.34172358962715665e-01, -1.87592474085079952e-01}, {-5.87785252292473137e-01, -8.09016994374947340e-01, -6.52572720630210254e-17}, {-2.76393202250021175e-01, -8.50650808352039989e-01, 4.47213595499957817e-01}}, + {{-3.03530999103343246e-01, -9.34172358962715665e-01, -1.87592474085079952e-01}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}, {-5.87785252292473137e-01, -8.09016994374947340e-01, -6.52572720630210254e-17}}, + {{ 7.94654472291766001e-01, -5.77350269189625953e-01, -1.87592474085079952e-01}, { 6.88190960235586568e-01, -5.00000000000000222e-01, -5.25731112119133592e-01}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}}, + {{ 7.94654472291766001e-01, -5.77350269189625953e-01, -1.87592474085079952e-01}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}, { 6.88190960235586568e-01, -5.00000000000000222e-01, -5.25731112119133592e-01}}, + {{ 7.94654472291766001e-01, -5.77350269189625953e-01, -1.87592474085079952e-01}, { 9.51056516295153531e-01, -3.09016994374947673e-01, -6.52572720630210254e-17}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}}, + {{ 7.94654472291766001e-01, -5.77350269189625953e-01, -1.87592474085079952e-01}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}, { 9.51056516295153531e-01, -3.09016994374947673e-01, -6.52572720630210254e-17}}, + {{ 7.94654472291766001e-01, -5.77350269189625953e-01, -1.87592474085079952e-01}, { 5.87785252292472915e-01, -8.09016994374947562e-01, -6.52572720630210254e-17}, { 7.23606797749978936e-01, -5.25731112119133814e-01, 4.47213595499957817e-01}}, + {{ 7.94654472291766001e-01, -5.77350269189625953e-01, -1.87592474085079952e-01}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}, { 5.87785252292472915e-01, -8.09016994374947562e-01, -6.52572720630210254e-17}}, + {{ 7.94654472291766223e-01, 5.77350269189625509e-01, -1.87592474085079952e-01}, { 6.88190960235586902e-01, 4.99999999999999778e-01, -5.25731112119133592e-01}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}}, + {{ 7.94654472291766223e-01, 5.77350269189625509e-01, -1.87592474085079952e-01}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}, { 6.88190960235586902e-01, 4.99999999999999778e-01, -5.25731112119133592e-01}}, + {{ 7.94654472291766223e-01, 5.77350269189625509e-01, -1.87592474085079952e-01}, { 5.87785252292473359e-01, 8.09016994374947229e-01, -6.52572720630210254e-17}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}}, + {{ 7.94654472291766223e-01, 5.77350269189625509e-01, -1.87592474085079952e-01}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}, { 5.87785252292473359e-01, 8.09016994374947229e-01, -6.52572720630210254e-17}}, + {{ 7.94654472291766223e-01, 5.77350269189625509e-01, -1.87592474085079952e-01}, { 9.51056516295153642e-01, 3.09016994374947229e-01, -6.52572720630210254e-17}, { 7.23606797749979158e-01, 5.25731112119133481e-01, 4.47213595499957817e-01}}, + {{ 7.94654472291766223e-01, 5.77350269189625509e-01, -1.87592474085079952e-01}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}, { 9.51056516295153642e-01, 3.09016994374947229e-01, -6.52572720630210254e-17}}, + {{-3.03530999103342802e-01, 9.34172358962715776e-01, -1.87592474085079952e-01}, {-2.62865556059566574e-01, 8.09016994374947451e-01, -5.25731112119133592e-01}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}}, + {{-3.03530999103342802e-01, 9.34172358962715776e-01, -1.87592474085079952e-01}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}, {-2.62865556059566574e-01, 8.09016994374947451e-01, -5.25731112119133592e-01}}, + {{-3.03530999103342802e-01, 9.34172358962715776e-01, -1.87592474085079952e-01}, {-5.87785252292472915e-01, 8.09016994374947673e-01, -6.52572720630210254e-17}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}}, + {{-3.03530999103342802e-01, 9.34172358962715776e-01, -1.87592474085079952e-01}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}, {-5.87785252292472915e-01, 8.09016994374947673e-01, -6.52572720630210254e-17}}, + {{-3.03530999103342802e-01, 9.34172358962715776e-01, -1.87592474085079952e-01}, { 2.93657724283594626e-16, 1.00000000000000000e+00, -6.52572720630210254e-17}, {-2.76393202250020786e-01, 8.50650808352040100e-01, 4.47213595499957817e-01}}, + {{-3.03530999103342802e-01, 9.34172358962715776e-01, -1.87592474085079952e-01}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}, { 2.93657724283594626e-16, 1.00000000000000000e+00, -6.52572720630210254e-17}}, + {{-9.82246946376845953e-01, 1.85658321728994591e-16, -1.87592474085079897e-01}, {-8.50650808352039989e-01, 1.95771816189063076e-16, -5.25731112119133592e-01}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}}, + {{-9.82246946376845953e-01, 1.85658321728994591e-16, -1.87592474085079897e-01}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}, {-8.50650808352039989e-01, 1.95771816189063076e-16, -5.25731112119133592e-01}}, + {{-9.82246946376845953e-01, 1.85658321728994591e-16, -1.87592474085079897e-01}, {-9.51056516295153642e-01, -3.09016994374947285e-01, -6.52572720630210254e-17}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}}, + {{-9.82246946376845953e-01, 1.85658321728994591e-16, -1.87592474085079897e-01}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}, {-9.51056516295153642e-01, -3.09016994374947285e-01, -6.52572720630210254e-17}}, + {{-9.82246946376845953e-01, 1.85658321728994591e-16, -1.87592474085079897e-01}, {-9.51056516295153531e-01, 3.09016994374947618e-01, -6.52572720630210254e-17}, {-8.94427190999915966e-01, 1.09535739652840537e-16, 4.47213595499957817e-01}}, + {{-9.82246946376845953e-01, 1.85658321728994591e-16, -1.87592474085079897e-01}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}, {-9.51056516295153531e-01, 3.09016994374947618e-01, -6.52572720630210254e-17}}, + {{-1.87592474085080008e-01, -5.77350269189625842e-01, -7.94654472291766223e-01}, { 1.62459848116453059e-01, -5.00000000000000111e-01, -8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}}, + {{-1.87592474085080008e-01, -5.77350269189625842e-01, -7.94654472291766223e-01}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}, { 1.62459848116453059e-01, -5.00000000000000111e-01, -8.50650808352039989e-01}}, + {{-1.87592474085080008e-01, -5.77350269189625842e-01, -7.94654472291766223e-01}, {-2.62865556059566907e-01, -8.09016994374947340e-01, -5.25731112119133592e-01}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}}, + {{-1.87592474085080008e-01, -5.77350269189625842e-01, -7.94654472291766223e-01}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}, {-2.62865556059566907e-01, -8.09016994374947340e-01, -5.25731112119133592e-01}}, + {{-1.87592474085080008e-01, -5.77350269189625842e-01, -7.94654472291766223e-01}, {-4.25325404176019994e-01, -3.09016994374947396e-01, -8.50650808352039989e-01}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}}, + {{-1.87592474085080008e-01, -5.77350269189625842e-01, -7.94654472291766223e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}, {-4.25325404176019994e-01, -3.09016994374947396e-01, -8.50650808352039989e-01}}, + {{ 4.91123473188422976e-01, -3.56822089773090101e-01, -7.94654472291766223e-01}, { 5.25731112119133592e-01, -1.28766984733775045e-16, -8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}}, + {{ 4.91123473188422976e-01, -3.56822089773090101e-01, -7.94654472291766223e-01}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}, { 5.25731112119133592e-01, -1.28766984733775045e-16, -8.50650808352039989e-01}}, + {{ 4.91123473188422976e-01, -3.56822089773090101e-01, -7.94654472291766223e-01}, { 6.88190960235586568e-01, -5.00000000000000222e-01, -5.25731112119133592e-01}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}}, + {{ 4.91123473188422976e-01, -3.56822089773090101e-01, -7.94654472291766223e-01}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}, { 6.88190960235586568e-01, -5.00000000000000222e-01, -5.25731112119133592e-01}}, + {{ 4.91123473188422976e-01, -3.56822089773090101e-01, -7.94654472291766223e-01}, { 1.62459848116453059e-01, -5.00000000000000111e-01, -8.50650808352039989e-01}, { 2.76393202250020897e-01, -8.50650808352040100e-01, -4.47213595499957983e-01}}, + {{ 4.91123473188422976e-01, -3.56822089773090101e-01, -7.94654472291766223e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}, { 1.62459848116453059e-01, -5.00000000000000111e-01, -8.50650808352039989e-01}}, + {{ 4.91123473188423143e-01, 3.56822089773089823e-01, -7.94654472291766223e-01}, { 1.62459848116453337e-01, 4.99999999999999944e-01, -8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}}, + {{ 4.91123473188423143e-01, 3.56822089773089823e-01, -7.94654472291766223e-01}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}, { 1.62459848116453337e-01, 4.99999999999999944e-01, -8.50650808352039989e-01}}, + {{ 4.91123473188423143e-01, 3.56822089773089823e-01, -7.94654472291766223e-01}, { 6.88190960235586902e-01, 4.99999999999999778e-01, -5.25731112119133592e-01}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}}, + {{ 4.91123473188423143e-01, 3.56822089773089823e-01, -7.94654472291766223e-01}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}, { 6.88190960235586902e-01, 4.99999999999999778e-01, -5.25731112119133592e-01}}, + {{ 4.91123473188423143e-01, 3.56822089773089823e-01, -7.94654472291766223e-01}, { 5.25731112119133592e-01, -1.28766984733775045e-16, -8.50650808352039989e-01}, { 8.94427190999915966e-01, -2.19071479305681074e-16, -4.47213595499957983e-01}}, + {{ 4.91123473188423143e-01, 3.56822089773089823e-01, -7.94654472291766223e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}, { 5.25731112119133592e-01, -1.28766984733775045e-16, -8.50650808352039989e-01}}, + {{-1.87592474085079758e-01, 5.77350269189625953e-01, -7.94654472291766223e-01}, {-4.25325404176019883e-01, 3.09016994374947562e-01, -8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}}, + {{-1.87592474085079758e-01, 5.77350269189625953e-01, -7.94654472291766223e-01}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}, {-4.25325404176019883e-01, 3.09016994374947562e-01, -8.50650808352039989e-01}}, + {{-1.87592474085079758e-01, 5.77350269189625953e-01, -7.94654472291766223e-01}, {-2.62865556059566574e-01, 8.09016994374947451e-01, -5.25731112119133592e-01}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}}, + {{-1.87592474085079758e-01, 5.77350269189625953e-01, -7.94654472291766223e-01}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}, {-2.62865556059566574e-01, 8.09016994374947451e-01, -5.25731112119133592e-01}}, + {{-1.87592474085079758e-01, 5.77350269189625953e-01, -7.94654472291766223e-01}, { 1.62459848116453337e-01, 4.99999999999999944e-01, -8.50650808352039989e-01}, { 2.76393202250021341e-01, 8.50650808352039878e-01, -4.47213595499957983e-01}}, + {{-1.87592474085079758e-01, 5.77350269189625953e-01, -7.94654472291766223e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}, { 1.62459848116453337e-01, 4.99999999999999944e-01, -8.50650808352039989e-01}}, + {{-6.07061998206686271e-01, 1.39711417142509485e-16, -7.94654472291766223e-01}, {-4.25325404176019994e-01, -3.09016994374947396e-01, -8.50650808352039989e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}}, + {{-6.07061998206686271e-01, 1.39711417142509485e-16, -7.94654472291766223e-01}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}, {-4.25325404176019994e-01, -3.09016994374947396e-01, -8.50650808352039989e-01}}, + {{-6.07061998206686271e-01, 1.39711417142509485e-16, -7.94654472291766223e-01}, {-8.50650808352039989e-01, 1.95771816189063076e-16, -5.25731112119133592e-01}, {-7.23606797749979047e-01, -5.25731112119133592e-01, -4.47213595499957983e-01}}, + {{-6.07061998206686271e-01, 1.39711417142509485e-16, -7.94654472291766223e-01}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}, {-8.50650808352039989e-01, 1.95771816189063076e-16, -5.25731112119133592e-01}}, + {{-6.07061998206686271e-01, 1.39711417142509485e-16, -7.94654472291766223e-01}, {-4.25325404176019883e-01, 3.09016994374947562e-01, -8.50650808352039989e-01}, {-7.23606797749978825e-01, 5.25731112119133814e-01, -4.47213595499957928e-01}}, + {{-6.07061998206686271e-01, 1.39711417142509485e-16, -7.94654472291766223e-01}, { 0.00000000000000000e+00, 0.00000000000000000e+00, -1.00000000000000000e+00}, {-4.25325404176019883e-01, 3.09016994374947562e-01, -8.50650808352039989e-01}} +}; + +} // namespace hexakis_icosahedron + +#endif // POLYHEDRA_HEXAKIS_ICOSAHEDRON_H diff --git a/test/render_nets.sh b/test/render_nets.sh index e87e978481..18fcc85213 100755 --- a/test/render_nets.sh +++ b/test/render_nets.sh @@ -27,6 +27,10 @@ $RENDER --proj="+proj=dsea +R=1 +net=icosahedron" \ --title="DSEA: Dodecahedral Snyder Equal Area (icosahedron net)" \ -o dsea_icosahedron.png +$RENDER --proj="+proj=isea2 +R=1" \ + --title="ISEA: Icosahedral Snyder Equal Area" \ + -o isea_net.png + $RENDER --proj="+proj=tsea +R=1" \ --title="TSEA: Tetrahedral Snyder Equal Area" \ -o tsea_net.png diff --git a/test/unit/test_polyhedral.cpp b/test/unit/test_polyhedral.cpp index ee53ef4d31..3b15aeff67 100644 --- a/test/unit/test_polyhedral.cpp +++ b/test/unit/test_polyhedral.cpp @@ -42,6 +42,7 @@ static const char *proj_strings[] = { "+proj=dsea +net=crescent +R=1", "+proj=dsea +net=two_flower +R=1", "+proj=dsea +net=icosahedron +R=1", + "+proj=isea2 +R=1", }; static void roundtrip_test(const char *proj_string, double tolerance) {