diff --git a/graph.cpp b/graph.cpp index 6e156da7..c7d68c2e 100644 --- a/graph.cpp +++ b/graph.cpp @@ -7291,6 +7291,7 @@ EX void make_actual_view() { radar_transform = T * U; } #endif + Viewbase = View; } EX transmatrix cview() { @@ -7350,6 +7351,8 @@ EX void precise_mouseover() { mouseover = omouseover; } +EX transmatrix Viewbase; + EX void drawthemap() { check_cgi(); cgi.require_shapes(); diff --git a/hypgraph.cpp b/hypgraph.cpp index a8aadde0..20aa90c8 100644 --- a/hypgraph.cpp +++ b/hypgraph.cpp @@ -1459,6 +1459,20 @@ EX void optimizeview() { ld best = INF; transmatrix TB = Id; + + if(WDIM == 3 && (cgflags & qIDEAL)) { + if(gmatrix.count(centerover.at)) { + ld last = hdist0(tC0(Viewbase)); + transmatrix V = gmatrix[centerover.at]; + ld next = hdist0(tC0(V)); + if(next < last) { + View = View * inverse(Viewbase) * V; + fixmatrix(View); + viewctr.at = centerover.at->master; + viewctr.spin = 0; + } + } + } if(false) ;