From 43bcc4e2bdf5cadd303c11aeee995ae0e00736d2 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 14 Aug 2019 20:44:31 +0200 Subject: [PATCH] nisot:: azimuthal equidistant projection --- hypgraph.cpp | 6 ++++++ models.cpp | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/hypgraph.cpp b/hypgraph.cpp index c0cf8054..bf8f7442 100644 --- a/hypgraph.cpp +++ b/hypgraph.cpp @@ -708,6 +708,12 @@ EX void applymodel(hyperpoint H, hyperpoint& ret) { break; case mdEquidistant: case mdEquiarea: case mdEquivolume: { + if(nonisotropic) { + H = nisot::inverse_exp(H, nisot::iTable, false); + if(nisot::local_perspective_used()) H = nisot::local_perspective * H; + ret = H; ret[3] = 1; + break; + } ld zlev = find_zlev(H); ld rad = hypot_d(DIM, H); diff --git a/models.cpp b/models.cpp index 8af198c6..028670d8 100644 --- a/models.cpp +++ b/models.cpp @@ -197,7 +197,7 @@ EX namespace models { } EX bool model_available(eModel pm) { - if(nonisotropic) return among(pm, mdDisk, mdPerspective, mdGeodesic); + if(nonisotropic) return among(pm, mdDisk, mdPerspective, mdGeodesic, mdEquidistant); if(pm == mdGeodesic && !sol) return false; if(sphere && (pm == mdHalfplane || pm == mdBall)) return false; @@ -225,6 +225,7 @@ EX namespace models { if(m == mdDisk) return XLAT("simple model: projection"); if(m == mdPerspective) return XLAT("simple model: perspective"); if(m == mdGeodesic) return XLAT("native perspective"); + if(m == mdEquidistant) return XLAT(mdinf[m].name_hyperbolic); } if(m == mdDisk && DIM == 3) return XLAT("perspective in 4D"); if(m == mdHalfplane && DIM == 3 && hyperbolic) return XLAT("half-space");