diff --git a/drawing.cpp b/drawing.cpp index e1523394..b6297677 100644 --- a/drawing.cpp +++ b/drawing.cpp @@ -1623,6 +1623,19 @@ bool broken_projection(dqi_poly& p0) { int broken_coord = models::get_broken_coord(pmodel); static bool in_broken = false; bool both_broken = pmodel == mdConformalSquare; + + transmatrix T = p0.V.T, IT = Id, FT = Id; + if(both_broken) FT = cspin(0, 1, 45._deg), T = FT * T, IT = cspin(0, 1, -45._deg); + + ld zlow = 0; + if(both_broken) { + ld t = pconf.model_transition; + zlow = (1-t*t) / (1+t*t); + } + // x * mt / (1-z) <= 1 + // sqrt(1-z*z) * mt / (1-z) <= 1 + // sqrt(1-z*z) <= (1-z) / mt + if(broken_coord && !in_broken) { int zcoord = broken_coord; @@ -1633,14 +1646,14 @@ bool broken_projection(dqi_poly& p0) { vector all; for(int i=0; i abs(h[1])) - end[0] = 0.01 * signum(h[0]), end[1] = 0.001 * signum(h[1]); + end[0] = 0.01 * signum(h[0]); + end[1] = 0.01 * signum(h[1]); + /* if(abs(h1[0]) > abs(h1[1])) + end[0] = 0.01 * signum(h1[0]), end[1] = 0.001 * signum(h1[1]); else - end[1] = 0.01 * signum(h[1]), end[0] = 0.001 * signum(h[0]); + end[1] = 0.01 * signum(h1[1]), end[0] = 0.001 * signum(h1[0]); */ return normalize(end); }; hyperpoint endf = square_close_corner(final);