(*

   A mixed bag of examples of triangular and rectangular 
   control polygons, and calls to the various programs
   to draw them. (11/25/2002)


   Remember, all points must have a weight.
   If poly surface, then weight = 1
                                                                    *)
(*  Pattern of calls for the various rendering procedures           *) 
(* if light = 1, light triangulation trianglight,                   *)
(* else ltriang                                                     *)
(*                                                                  *)
(* if fcnet = 1, displays control net, otherwise skip it            *)
(*                                                                  *)
(*  sqrender[{net__}, mm_, a_, b_, c_, d_,  n_, light_, fcnet_,     *)
(*           lx_,mx_,ly_,my_,lz_,mz_,debug_]                        *)
(*                                                                  *)
(*  This is wrt the square [c, a] x [d, b]                          *)
(*                                                                  *)
(*  rendersq[{net__}, mm_, a_, b_, c_, d_, n_, light_, fcnet_,      *)
(*          lx_,mx_,ly_,my_,lz_,mz_,debug_] :=                      *)
(*  Same as sqrender, but wrt [a, b] x [c, d], more intuitive order *)
(*                                                                  *) 
(*  trender[{net__}, mm_, {newtrig_},  n_,  light_, fcnet_,         *)
(*             lx_,mx_,ly_,my_,lz_,mz_,debug_]                      *)
(*                                                                  *)
(*  render1[{net__}, mm_,  n_, light_, fcnet_,                      *)
(*            lx_,mx_,ly_,my_,lz_,mz_,debug_]                       *)
(*                                                                  *)
(*  render3[{net__}, mm_,  n_, light_, fcnet_,                      *)
(*          lx_,mx_,ly_,my_,lz_,mz_,debug_]                         *)
(*                                                                  *)
(*  render4[{net__}, mm_,  n_, light_, fcnet_,                      *)
(*          lx_,mx_,ly_,my_,lz_,mz,debug_]                          *)
(*                                                                  *)
(*  render5[{net__}, mm_,  n_, light_, fcnet_,                      *)
(*          lx_,mx_,ly_,my_,lz_,mz_,debug_]                         *)
(*                                                                  *)
(*  render6[{net__}, mm_,  n_, light_, fcnet_,                      *)
(*          lx_,mx_,ly_,my_,lz_,mz_,debug_]                         *)
(*                                                                  *)
(*  render34[{net__}, mm_,  n_, light_, fcnet_,                     *)
(*          lx_,mx_,ly_,my_,lz_,mz_,debug_]                         *)
(*                                                                  *)
(*  render56[{net__}, mm_,  n_, light_, fcnet_,                     *)
(*          lx_,mx_,ly_,my_,lz_,mz_,debug_]                         *)
(*                                                                  *)
(*  render3to6[{net__}, mm_,  n_, light_, fcnet_,                   *)
(*             lx_,mx_,ly_,my_,lz_,mz_,debug]                       *)
(*                                                                  *)
(*  lrender renders the surface by u-curves and v-curves            *)
(*  wrt square  [-1, 1] x [-1, 1]                                   *)
(*                                                                  *)
(*  lrender[{net__},mm_,n_,ni_,lx_,mx_,ly_,my_,lz_,mz_,debug_]      *)   
(*                                                                  *)
(*                                                                  *)
(*  lfrender renders a closed surface by u-curves and v-curves      *)
(*                                                                  *)
(*  lfrender[{net__},mm_,n_,ni_,lx_,mx_,ly_,my_,lz_,mz_,debug_]     *)   
(*                                                                  *)
(*  render[{net__}, mm_, n_, light_, fcnet_,                        *)
(*             lx_,mx_,ly_,my_,lz_,mz_,debug_]                      *)
(*                                                                  *)
(*  new2net[{net__}, mm_, a_, b_, n_,                               *)
(*            lx_,mx_,ly_,my_,lz_,mz_, debug_]                      *)
(*                                                                  *)
(*  subdiv4[{net__}, mm_,  n_, lx_,mx_,ly_,my_,lz_,mz_,debug_]      *)
(*                                                                  *)
(*   To render a square patch                                       *)
(*   recrender[{net__}, p_, q_, n_, light_, fcnet_,                 *)
(*             lx_,mx_,ly_,my_,lz_,mz_,debug_]                      *)
(*                                                                  *)
(*  rfrac6[{net__}, mm_, n_, light_, fcnet_,                        *)
(*    lx_,mx_,ly_,my_,lz_,mz_]                                      *)
(*                                                                  *)
(*  sqfractal[{net__}, mm_, a_, b_, c_, d_, n_, light_, fcnet_,     *) 
(*          lx_,mx_,ly_,my_,lz_,mz_]                                *)
(*                                                                  *)
(*  tfractal[{net__}, mm_, {newtrig__}, n_, light_, fcnet_,         *) 
(*          lx_,mx_,ly_,my_,lz_,mz_]                                *)
(*                                                                  *)
(*   fractal4[{net__}, mm_,  n_, lx_,mx_,ly_,my_,lz_,mz_,light_]    *) 
(*                                                                  *)
(*   fractal4 is the same as tfractal for (r,s,t)                   *)   
(*                                                                  *)
(*   fractal2[{net__}, mm_, n_, lx_,mx_,ly_,my_,lz_,mz_,light_]     *)
(*                                                                  *)
(*   fractal2 is the same as sqfractal for standard square          *)   
(*                                                                  *)
(*   fastdiv6 is the "spider-style" subdivision                     *)
(*   fastdiv6[{net__}, mm_,  n_, lx_,mx_,ly_,my_,lz_,mz_]           *)
(*                                                                  *)
(*   fastdiv4 is the "diamond-style" subdivision                    *)
(*   fastdiv4[{net__}, mm_,  n_, lx_,mx_,ly_,my_,lz_,mz_,light_]    *)
(*                                                                  *)
(*  clocurv3D renders a closed curve on a surface                   *)
(*  specified by points a, b in the parameter plane                 *)
(*  clocurv3D[{net__},mm_,n_,a_,b_,lx_,mx_,ly_,my_,lz_,mz_,debug_]  *)
(*                                                                  *)
(*   scurv3D  renders a curve segment on a surface, specified by    *)
(*   points a, b in the parameter plane                             *)
(*   scurv3D[{net__},mm_,n_,a_,b_,lx_,mx_,ly_,my_,lz_,mz_,debug_]   *) 
(*                                                                  *)

(*  Some useful reference triangles        *)

 reftrig1 = {{-1, 1, 1}, {-1, -1, 3}, {1, 1, -1}};
 reftrig2 = {{1, -1, 1}, {1, 1, -1}, {-1, -1, 3}};
 reftrig3 = {{-1, 1, 1}, {1, 1, -1}, {1, -1, 1}};        
 reftrig  = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};




(*  a parabolic cylinder  *)

 xnet = {{0, 0, 0, 1}, {3, 0, 3, 1}, {6, 0, 0, 1},
         {0, 4, 0, 1}, {3, 4, 3, 1}, {6, 4, 0, 1}}

 ynet = makerecnet[xnet, 1, 2]

 recrender[xnet,1,2,0,0,1,0,6,0,4,0,3,0]  
 recrender[xnet,1,2,1,0,1,0,6,0,4,0,3,0]  
 recrender[xnet,1,2,3,0,1,0,6,0,4,0,3,0]  (* solid *)
 recrender[xnet,1,2,3,3,1,0,6,0,4,0,3,0]  (* solid *)

 recrender[xnet,1,2,1,4,1,0,6,0,4,0,3,0]   (* four colors *)
 recrender[xnet,1,2,2,4,1,0,6,0,4,0,3,0]   (* four colors *)
 recrender[xnet,1,2,3,4,1,0,6,0,4,0,3,0]  (* four colors *)
 recrender[xnet,1,2,2,0,1,0,6,0,4,0,3,0]  
 recrender[xnet,1,2,2,2,1,0,6,0,4,0,3,0]  (* 2 colors  *)
 recrender[xnet,1,2,2,-1,1,0,6,0,4,0,3,0]  (* edges only *)



(*  portion of sphere   *)

net = {{0, 0, -1, 1}, {0, 1, -1, 1}, {0, 1, 0, 2},
       {1, 0, -1, 1}, {1, 1, -1, 1}, {1, 0, 0, 2}};

subdiv3[net,2,3,0,1,0,1,-1,0]
subdiv4[net,2,3,0,1,0,1,-1,0]
fastdiv4[net,2,3,0,1,0,1,-1,0]
new6net[net,2,3,-1,1,-1,1,-1,1]
frac6net[net,2,3,-1,1,-1,1,-1,1]

mixsubdiv[net,2,1,0,1,0,1,-1,0]

newtrig = {{-1, -1, 3}, {3, -1, -1}, {-1, 3, -1}};
subd4[net,2,newtrig,3,-1.5,1.5,-1.5,1.5,-1.5,1.5]

subd4[net,2,newtrig,2,-5,3,-5,3,-2,3]

newt = {{0, -1, 2}, {-1, 0 ,2}, {1, 1, -1}};
subd4[net,2,newt,2,-1,1,-1,1,-1,1]


subd4[net,2,reftrig1,2,-1,1,-1,1,-1,1]
subd2[net,2,2,-1,1,-1,1,-1,1]
subd2[net,2,3,-1,1,-1,1,-1,1]

fastdiv4[net,2,3,0,1,0,1,-1,0]

(*  portion of ellipsoid   *)

net = {{0, 0, -2, 1}, {0, 3, -2, 1}, {0, 3, 0, 2},
       {4, 0, -2, 1}, {4, 3, -2, 1}, {4, 0, 0, 2}};

subdiv4[net,2,3,0,4,0,3,-2,0,0]
subd2[net,2,3,-4,4,-3,3,-2,2,0]
fastdiv4[net,2,3,0,4,0,3,-2,0]
fastdiv6[net,2,3,0,4,0,3,-2,0]

render1[net,2,1,0,1,0,4,0,3,-2,0,0]
render1[net,2,2,0,1,0,4,0,3,-2,0,0]
render1[net,2,3,0,1,0,4,0,3,-2,0,0]
sqrender[net,2,1,1,-1,-1,3,0,0,-4,4,-3,3,-2,2,0]
sqrender[net,2,1,1,-1,-1,3,2,0,-4,4,-3,3,-2,2,0]

(* also ViewPoint -> {-2, -10, 2} *)

(*  patches of ellipsoid and the full ellipsoid ! *)
render34[net,2,3,0,0,-4,4,-3,3,-2,2,0]
render3[net,2,3,2,0,-4,4,-3,3,-2,2,0]
render4[net,2,3,2,0,-4,4,-3,3,-2,2,0]
render34[net,2,3,2,0,-4,4,-3,3,-2,2,0]
render56[net,2,3,0,0,-4,4,-3,3,-2,2,0]
render[net,2,3,0,0,-4,4,-3,3,-2,2,0]
render[net,2,3,2,0,-4,4,-3,3,-2,2,0] (* 2 colors *)

new3anet[net,2,3,-4,4,-3,3,-2,2]
new4anet[net,2,3,-4,4,-3,3,-2,2]
new34net[net,2,3,-4,4,-3,3,-2,2]
new56net[net,2,3,-4,4,-3,3,-2,2]
new4net[net,2,3,-4,4,-3,3,-2,2]
new6net[net,2,3,-4,4,-3,3,-2,2]
new2net[net,2,2,2,3,-4,4,-3,3,-2,2]

srender3[net,2,3,0,0,-4,4,-3,3,-2,2,0,0,0]   
srender34[net,2,3,0,0,-4,4,-3,3,-2,2,0,0,0]   


fractal4[net,2,4,0,4,0,3,-2,0]  (* very cute  *)
tfractal[net,2,reftrig,4,0,0,0,4,0,3,-2,0]  (* very cute  *)
frac6net[net,2,3,-4,4,-3,3,-2,2]
fractal2[net,2,3,-4,4,-3,3,-2,2]


(*  full ellipsoid, polar coord, degree  8   *)

poly1 = 4*aa*v*(u^4 - 6*u^2 + 1)*(1 - v^2);
poly2 = 16*bb*u*v*(1 - u^2)*(1 - v^2);
poly3 = cc*(v^4 - 6*v^2 + 1)*(1 + u^2)^2;
poly4 = (1 + u^2)^2*(1 + v^2)^2;

p1 = Expand[poly1]; p1 = InputForm[p1];
p1 =   4*aa*v - 24*aa*u^2*v + 4*aa*u^4*v - 4*aa*v^3 + 24*aa*u^2*v^3 - 4*aa*u^4*v^3

p2 = Expand[poly2]; p2 = InputForm[p2];
p2 = 16*bb*u*v - 16*bb*u^3*v - 16*bb*u*v^3 + 16*bb*u^3*v^3

p3 = Expand[poly3]; p3 = InputForm[p3];
p3 =   cc + 2*cc*u^2 + cc*u^4 - 6*cc*v^2 - 12*cc*u^2*v^2 - 6*cc*u^4*v^2 + cc*v^4 + 
   2*cc*u^2*v^4 + cc*u^4*v^4

p4 = Expand[poly4]; p4 = InputForm[p4];
p4 =  1 + 2*u^2 + u^4 + 2*v^2 + 4*u^2*v^2 + 2*u^4*v^2 + v^4 + 2*u^2*v^4 + u^4*v^4


poly  = {{{4*aa, 0, 1}, {-24*aa, 2, 1}, {4*aa, 4, 1},  {-4*aa, 0, 3}, 
          {24*aa, 2, 3},  {-4*aa, 4, 3}},
         {{16*bb, 1, 1}, {-16*bb, 3, 1}, {-16*bb, 1, 3}, {16*bb, 3, 3}},
         {{cc, 0, 0}, {2*cc, 2, 0}, {cc, 4, 0}, {-6*cc, 0, 2}, 
          {-12*cc, 2, 2}, {-6*cc, 4, 2}, {cc, 0, 4}, 
          {2*cc, 2, 4}, {cc, 4, 4}},
          {{1, 0, 0}, {2, 2, 0}, {1, 4, 0}, {2, 0, 2}, {4, 2, 2},
           {2, 4, 2}, {1, 0, 4}, {2, 2, 4}, {1, 4, 4}}};

net = contnet[poly, 8]; ellipnet = InputForm[net];

(*   Master  net    *)

ellipnet =   {{0, 0, cc, 1}, {aa/2, 0, cc, 1}, {(14*aa)/15, 0, (11*cc)/15, 15/14}, 
   {(20*aa)/17, 0, (5*cc)/17, 17/14}, 
   {(120*aa)/101, 0, (-19*cc)/101, 101/70}, {aa, 0, (-3*cc)/5, 25/14}, 
   {(11*aa)/16, 0, (-7*cc)/8, 16/7}, {aa/3, 0, -cc, 3}, {0, 0, -cc, 4}, 
   {0, 0, cc, 1}, {aa/2, (2*bb)/7, cc, 1}, 
   {(14*aa)/15, (8*bb)/15, (11*cc)/15, 15/14}, 
   {(20*aa)/17, (56*bb)/85, (5*cc)/17, 17/14}, 
   {(120*aa)/101, (64*bb)/101, (-19*cc)/101, 101/70}, 
   {aa, (12*bb)/25, (-3*cc)/5, 25/14}, {(11*aa)/16, bb/4, (-7*cc)/8, 16/7}, 
   {aa/3, 0, -cc, 3}, {0, 0, cc, 15/14}, {aa/3, (8*bb)/15, cc, 15/14}, 
   {(75*aa)/121, (120*bb)/121, (87*cc)/121, 121/105}, 
   {(73*aa)/92, (28*bb)/23, (6*cc)/23, 46/35}, 
   {(276*aa)/331, (384*bb)/331, (-77*cc)/331, 331/210}, 
   {(63*aa)/83, (72*bb)/83, (-53*cc)/83, 83/42}, 
   {(11*aa)/18, (4*bb)/9, (-8*cc)/9, 18/7}, {0, 0, cc, 17/14}, 
   {aa/17, (56*bb)/85, cc, 17/14}, 
   {(5*aa)/46, (28*bb)/23, (16*cc)/23, 46/35}, 
   {(19*aa)/106, (79*bb)/53, (11*cc)/53, 53/35}, 
   {(12*aa)/43, (184*bb)/129, (-13*cc)/43, 129/70}, 
   {(13*aa)/33, (12*bb)/11, (-23*cc)/33, 33/14}, {0, 0, cc, 101/70}, 
   {(-24*aa)/101, (64*bb)/101, cc, 101/70}, 
   {(-144*aa)/331, (384*bb)/331, (219*cc)/331, 331/210}, 
   {(-20*aa)/43, (184*bb)/129, (17*cc)/129, 129/70}, 
   {(-48*aa)/161, (32*bb)/23, (-9*cc)/23, 23/10}, {0, 0, cc, 25/14}, 
   {(-12*aa)/25, (12*bb)/25, cc, 25/14}, 
   {(-72*aa)/83, (72*bb)/83, (51*cc)/83, 83/42}, 
   {(-32*aa)/33, (12*bb)/11, cc/33, 33/14}, {0, 0, cc, 16/7}, 
   {(-5*aa)/8, bb/4, cc, 16/7}, {(-10*aa)/9, (4*bb)/9, (5*cc)/9, 18/7}, 
   {0, 0, cc, 3}, {(-2*aa)/3, 0, cc, 3}, {0, 0, cc, 4}};

(*  Case  aa  =  4,  bb = 3, cc = 2   *)
 aa= 4; bb = 3; cc = 2;


elnet =   {{0, 0, 2, 1}, {2, 0, 2, 1}, {56/15, 0, 22/15, 15/14}, 
   {80/17, 0, 10/17, 17/14}, {480/101, 0, -38/101, 101/70}, 
   {4, 0, -6/5, 25/14}, {11/4, 0, -7/4, 16/7}, {4/3, 0, -2, 3}, 
   {0, 0, -2, 4}, {0, 0, 2, 1}, {2, 6/7, 2, 1}, {56/15, 8/5, 22/15, 15/14}, 
   {80/17, 168/85, 10/17, 17/14}, {480/101, 192/101, -38/101, 101/70}, 
   {4, 36/25, -6/5, 25/14}, {11/4, 3/4, -7/4, 16/7}, {4/3, 0, -2, 3}, 
   {0, 0, 2, 15/14}, {4/3, 8/5, 2, 15/14}, 
   {300/121, 360/121, 174/121, 121/105}, {73/23, 84/23, 12/23, 46/35}, 
   {1104/331, 1152/331, -154/331, 331/210}, {252/83, 216/83, -106/83, 83/42}, 
   {22/9, 4/3, -16/9, 18/7}, {0, 0, 2, 17/14}, {4/17, 168/85, 2, 17/14}, 
   {10/23, 84/23, 32/23, 46/35}, {38/53, 237/53, 22/53, 53/35}, 
   {48/43, 184/43, -26/43, 129/70}, {52/33, 36/11, -46/33, 33/14}, 
   {0, 0, 2, 101/70}, {-96/101, 192/101, 2, 101/70}, 
   {-576/331, 1152/331, 438/331, 331/210}, {-80/43, 184/43, 34/129, 129/70}, 
   {-192/161, 96/23, -18/23, 23/10}, {0, 0, 2, 25/14}, 
   {-48/25, 36/25, 2, 25/14}, {-288/83, 216/83, 102/83, 83/42}, 
   {-128/33, 36/11, 2/33, 33/14}, {0, 0, 2, 16/7}, {-5/2, 3/4, 2, 16/7}, 
   {-40/9, 4/3, 10/9, 18/7}, {0, 0, 2, 3}, {-8/3, 0, 2, 3}, {0, 0, 2, 4}};


  sqrender[elnet,8,1,1,-1,-1,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* fine *)
  (* the pattern of curves is interesting *)
  sqrender[elnet,8,1,1,-1,-1,2,1,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* lite *)

  trender[elnet,8,reftrig1,2,1,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* lite *)
  trender[elnet,8,reftrig1,1,1,1,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* lite *)
  render1[elnet,8,1,1,1,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* lite *)
  render1[elnet,8,2,1,1,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* lite *)
  render1[elnet,8,2,1,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* lite *)
  render1[elnet,8,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  

  lrender[elnet,8,5,2,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  lfrender[elnet,8,5,2,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  

  a = {-1, -1, 3}; b = {1, 1, -1};
  a = {-1, 1, 1}; b = {1, -1, 1};

  scurv3D[elnet,8,5,a,b,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  clocurv3D[elnet,8,5,a,b,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  

(*  ellipsoid,  degree            4      *)

  poly  = {{{aa, 2, 2}, {-aa, 2, 0}, {-aa, 0, 2}, {aa, 0, 0}},
           {{2*bb, 1, 0}, {-2*bb, 1, 2}},
           {{2*cc, 0, 1}, {2*cc, 2, 1}},
           {{1, 2, 2}, {1, 2, 0}, {1, 0, 2}, {1, 0, 0}}};



net = contnet[poly, 4]; ellipnet1 = InputForm[net];

(*  Master   net    *)

ellipnet1  =   {{aa, 0, 0, 1}, {aa, 0, cc/2, 1}, {(5*aa)/7, 0, (6*cc)/7, 7/6}, 
   {aa/3, 0, cc, 3/2}, {0, 0, cc, 2}, {aa, bb/2, 0, 1}, {aa, bb/2, cc/2, 1}, 
   {(5*aa)/7, (2*bb)/7, (6*cc)/7, 7/6}, {aa/3, 0, cc, 3/2}, 
   {(5*aa)/7, (6*bb)/7, 0, 7/6}, {(5*aa)/7, (6*bb)/7, (4*cc)/7, 7/6}, 
   {(5*aa)/9, (4*bb)/9, (8*cc)/9, 3/2}, {aa/3, bb, 0, 3/2}, 
   {aa/3, bb, (2*cc)/3, 3/2}, {0, bb, 0, 2}};


(* Case  aa = 4, bb = 3, cc = 2   *)

elnet2 =   {{4, 0, 0, 1}, {4, 0, 1, 1}, {20/7, 0, 12/7, 7/6}, {4/3, 0, 2, 3/2}, 
   {0, 0, 2, 2}, {4, 3/2, 0, 1}, {4, 3/2, 1, 1}, {20/7, 6/7, 12/7, 7/6}, 
   {4/3, 0, 2, 3/2}, {20/7, 18/7, 0, 7/6}, {20/7, 18/7, 8/7, 7/6}, 
   {20/9, 4/3, 16/9, 3/2}, {4/3, 3, 0, 3/2}, {4/3, 3, 4/3, 3/2}, {0, 3, 0, 2}};


  sqrender[elnet2,4,1,1,-1,-1,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* fine *)
  render1[elnet2,4,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  render1[elnet2,4,2,1,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* lite *
 
  render3[elnet2,4,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  render4[elnet2,4,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  render34[elnet2,4,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  render56[elnet2,4,3,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  render3to6[elnet2,4,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
 
  trender[elnet2,4,reftrig1,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0] 
  trender[elnet2,4,reftrig2,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0] 
  trender[elnet2,4,reftrig2,2,1,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* lite *)
  render[elnet2,4,2,0,0,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  


  lrender[elnet2,4,5,2,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  lfrender[elnet2,4,5,2,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  (* very nice  *)

  scurv3D[elnet2,4,5,a,b,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  clocurv3D[elnet2,4,5,a,b,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  



(* Hyperboloid of  1 sheet, degree  6         *)


poly  = {{{aa, 4, 2}, {-6*aa, 2, 2}, {aa, 4, 0}, {-6*aa, 2, 0},
          {aa, 0, 2}, {aa, 0, 0}},
         {{-4*bb, 3, 2}, {-4*bb, 3, 0}, {4*bb, 1, 2}, {4*bb, 1, 0}},
         {{2*cc, 4, 1}, {4*cc, 2, 1}, {2*cc, 0, 1}},
         {{-1, 4, 2}, {1, 4, 0}, {-2, 2, 2}, {2, 2, 0}, 
          {-1, 0, 2}, {1, 0, 0}}};

net = contnet[poly, 6]; hypnet1 = InputForm[net];

(* Master Net  *)

hypnet =  {{aa, 0, 0, 1}, {aa, 0, cc/3, 1}, {(8*aa)/7, 0, (5*cc)/7, 14/15}, 
   {(3*aa)/2, 0, (5*cc)/4, 4/5}, {(7*aa)/3, 0, (20*cc)/9, 3/5}, 
   {5*aa, 0, 5*cc, 1/3}, {2*aa, 0, 2*cc, 0}, {aa, (2*bb)/3, 0, 1}, 
   {aa, (2*bb)/3, cc/3, 1}, {(8*aa)/7, (11*bb)/14, (5*cc)/7, 14/15}, 
   {(3*aa)/2, (13*bb)/12, (5*cc)/4, 4/5}, 
   {(7*aa)/3, (16*bb)/9, (20*cc)/9, 3/5}, {5*aa, 4*bb, 5*cc, 1/3}, 
   {(9*aa)/17, (20*bb)/17, 0, 17/15}, 
   {(9*aa)/17, (20*bb)/17, (6*cc)/17, 17/15}, 
   {(27*aa)/47, (66*bb)/47, (36*cc)/47, 47/45}, 
   {(9*aa)/13, 2*bb, (18*cc)/13, 13/15}, {aa, (32*bb)/9, (8*cc)/3, 3/5}, 
   {-aa/7, (9*bb)/7, 0, 7/5}, {-aa/7, (9*bb)/7, (8*cc)/21, 7/5}, 
   {(-5*aa)/19, (29*bb)/19, (16*cc)/19, 19/15}, 
   {(-3*aa)/5, (11*bb)/5, (8*cc)/5, 1}, {(-5*aa)/7, bb, 0, 28/15}, 
   {(-5*aa)/7, bb, (3*cc)/7, 28/15}, {-aa, (7*bb)/6, cc, 8/5}, 
   {-aa, bb/2, 0, 8/3}, {-aa, bb/2, cc/2, 8/3}, {-aa, 0, 0, 4}};

(*  Case  aa  =  2,  bb = 1, cc = 2   *)
 aa= 2; bb = 1; cc = 2;

hypnet = {{2, 0, 0, 1}, {2, 0, 2/3, 1}, {16/7, 0, 10/7, 14/15}, {3, 0, 5/2, 4/5}, 
   {14/3, 0, 40/9, 3/5}, {10, 0, 10, 1/3}, {4, 0, 4, 0}, {2, 2/3, 0, 1}, 
   {2, 2/3, 2/3, 1}, {16/7, 11/14, 10/7, 14/15}, {3, 13/12, 5/2, 4/5}, 
   {14/3, 16/9, 40/9, 3/5}, {10, 4, 10, 1/3}, {18/17, 20/17, 0, 17/15}, 
   {18/17, 20/17, 12/17, 17/15}, {54/47, 66/47, 72/47, 47/45}, 
   {18/13, 2, 36/13, 13/15}, {2, 32/9, 16/3, 3/5}, {-2/7, 9/7, 0, 7/5}, 
   {-2/7, 9/7, 16/21, 7/5}, {-10/19, 29/19, 32/19, 19/15}, 
   {-6/5, 11/5, 16/5, 1}, {-10/7, 1, 0, 28/15}, {-10/7, 1, 6/7, 28/15}, 
   {-2, 7/6, 2, 8/5}, {-2, 1/2, 0, 8/3}, {-2, 1/2, 1, 8/3}, {-2, 0, 0, 4}};

reftrig = {{-1, -0.5, 2.5}, {-1, 0.5, 1.5}, {1, 0.5, -0.5}}; 

  sqrender[hypnet,6,1,0.4,-1,-0.4,2,0,0,-4.2,4.2,-3.2,3.2,-2.1,2.1,0] 
  sqrender[hypnet,6,1,0.5,-1,-0.5,2,0,0,-4.2,4.2,-3.2,3.2,-2.7,2.7,0]  (* nice  *) 
  sqrender[hypnet,6,1,0.5,-1,-0.5,3,0,0,-4.2,4.2,-3.2,3.2,-2.7,2.7,0]  (* great  *) 
  trender[hypnet,6,reftrig,2,0,0,-4.2,4.2,-3.2,3.2,-2.7,2.7,0] 

  a = {0, -1, 2}; b = {0, 1, 0};
  a = {-1, 0, 2}; b = {1, 0, 0};

  scurv3D[hypnet,6,5,a,b,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  
  clocurv3D[hypnet,6,5,a,b,-4.2,4.2,-3.2,3.2,-2.2,2.2,0]  


(* Hyperboloid of  1 sheet, degree  4         *)

poly  = {{{-aa, 2, 2}, {-aa, 2, 0}, {aa, 0, 2}, {aa, 0, 0}},
         {{2*bb, 1, 0}, {2*bb, 1, 2}},
         {{2*cc, 0, 1}, {2*cc, 2, 1}},
         {{-1, 2, 2}, {1, 2, 0}, {-1, 0, 2}, {1, 0, 0}}};

net = contnet[poly, 4]; hypnet2 = InputForm[net];

(*  Master  net     *)

hypnet2 =   {{aa, 0, 0, 1}, {aa, 0, cc/2, 1}, {(7*aa)/5, 0, (6*cc)/5, 5/6}, 
   {3*aa, 0, 3*cc, 1/2}, {2*aa, 0, 2*cc, 0}, {aa, bb/2, 0, 1}, 
   {aa, bb/2, cc/2, 1}, {(7*aa)/5, (4*bb)/5, (6*cc)/5, 5/6}, 
   {3*aa, 2*bb, 3*cc, 1/2}, {(5*aa)/7, (6*bb)/7, 0, 7/6}, 
   {(5*aa)/7, (6*bb)/7, (4*cc)/7, 7/6}, {aa, (8*bb)/5, (8*cc)/5, 5/6}, 
   {aa/3, bb, 0, 3/2}, {aa/3, bb, (2*cc)/3, 3/2}, {0, bb, 0, 2}};

(*  Case  aa  =  2,  bb = 1, cc = 2   *)
 aa= 2; bb = 1; cc = 2;

hypnet =   {{2, 0, 0, 1}, {2, 0, 1, 1}, {14/5, 0, 12/5, 5/6}, {6, 0, 6, 1/2}, 
   {4, 0, 4, 0}, {2, 1/2, 0, 1}, {2, 1/2, 1, 1}, {14/5, 4/5, 12/5, 5/6}, 
   {6, 2, 6, 1/2}, {10/7, 6/7, 0, 7/6}, {10/7, 6/7, 8/7, 7/6}, 
   {2, 8/5, 16/5, 5/6}, {2/3, 1, 0, 3/2}, {2/3, 1, 4/3, 3/2}, {0, 1, 0, 2}};

  sqrender[hypnet,4,1,0.4,-1,-0.4,2,0,0,-4.2,4.2,-3.2,3.2,-2.1,2.1,0] 
  sqrender[hypnet,4,1,0.5,-1,-0.5,3,0,0,-4.2,4.2,-3.2,3.2,-2.7,2.7,0]  (* nice  *) 
  trender[hypnet,4,reftrig,2,0,0,-4.2,4.2,-3.2,3.2,-2.7,2.7,0] 



(* Hyperboloid of  2 sheets, degree  6         *)


poly  = {{{2*aa, 4, 1}, {-12*aa, 2, 1}, {2*aa, 0, 1}},
         {{-8*bb, 3, 1}, {8*bb, 1, 1}},
         {{cc, 4, 2}, {2*cc, 2, 2}, {cc, 4, 0}, {2*cc, 2, 0},
          {cc, 0, 2}, {cc, 0, 0}},
         {{-1, 4, 2}, {1, 4, 0}, {-2, 2, 2}, {2, 2, 0}, 
          {-1, 0, 2}, {1, 0, 0}}};

net = contnet[poly, 6]; hypnet3 = InputForm[net];

(*  Master  net     *)

hypnet3 =   {{0, 0, cc, 1}, {aa/3, 0, cc, 1}, {(5*aa)/7, 0, (8*cc)/7, 14/15}, 
   {(5*aa)/4, 0, (3*cc)/2, 4/5}, {(20*aa)/9, 0, (7*cc)/3, 3/5}, 
   {5*aa, 0, 5*cc, 1/3}, {2*aa, 0, 2*cc, 0}, {0, 0, cc, 1}, 
   {aa/3, (4*bb)/15, cc, 1}, {(5*aa)/7, (4*bb)/7, (8*cc)/7, 14/15}, 
   {(5*aa)/4, bb, (3*cc)/2, 4/5}, {(20*aa)/9, (16*bb)/9, (7*cc)/3, 3/5}, 
   {5*aa, 4*bb, 5*cc, 1/3}, {0, 0, cc, 17/15}, 
   {(2*aa)/17, (8*bb)/17, cc, 17/15}, 
   {(12*aa)/47, (48*bb)/47, (55*cc)/47, 47/45}, 
   {(6*aa)/13, (24*bb)/13, (21*cc)/13, 13/15}, 
   {(8*aa)/9, (32*bb)/9, (25*cc)/9, 3/5}, {0, 0, cc, 7/5}, 
   {(-4*aa)/21, (10*bb)/21, cc, 7/5}, 
   {(-8*aa)/19, (20*bb)/19, (23*cc)/19, 19/15}, 
   {(-4*aa)/5, 2*bb, (9*cc)/5, 1}, {0, 0, cc, 28/15}, 
   {(-3*aa)/7, (2*bb)/7, cc, 28/15}, {-aa, (2*bb)/3, (4*cc)/3, 8/5}, 
   {0, 0, cc, 8/3}, {-aa/2, 0, cc, 8/3}, {0, 0, cc, 4}};

(*  Case  aa  =  2,  bb = 1, cc = 2   *)
 aa= 2; bb = 1; cc = 2;

hypnet = {{0, 0, 2, 1}, {2/3, 0, 2, 1}, {10/7, 0, 16/7, 14/15}, {5/2, 0, 3, 4/5}, 
   {40/9, 0, 14/3, 3/5}, {10, 0, 10, 1/3}, {4, 0, 4, 0}, {0, 0, 2, 1}, 
   {2/3, 4/15, 2, 1}, {10/7, 4/7, 16/7, 14/15}, {5/2, 1, 3, 4/5}, 
   {40/9, 16/9, 14/3, 3/5}, {10, 4, 10, 1/3}, {0, 0, 2, 17/15}, 
   {4/17, 8/17, 2, 17/15}, {24/47, 48/47, 110/47, 47/45}, 
   {12/13, 24/13, 42/13, 13/15}, {16/9, 32/9, 50/9, 3/5}, {0, 0, 2, 7/5}, 
   {-8/21, 10/21, 2, 7/5}, {-16/19, 20/19, 46/19, 19/15}, {-8/5, 2, 18/5, 1}, 
   {0, 0, 2, 28/15}, {-6/7, 2/7, 2, 28/15}, {-2, 2/3, 8/3, 8/5}, 
   {0, 0, 2, 8/3}, {-1, 0, 2, 8/3}, {0, 0, 2, 4}};


reftrig = {{-1, 0.6, 1.4}, {-1, 0, 2}, {1, 0.6, -0.6}};


sqrender[hypnet,6,1,0.6,-1,0,2,0,0,-5,5,-3,3,-4.5,4.5,0]  (* nice  *) 
sqrender[hypnet,6,1,0.6,-1,0,2,1,0,-5,5,-3,3,-4.5,4.5,0]   (* lite *) 
  trender[hypnet,6,reftrig,2,0,0,-5,5,-3,3,-4.5,4.5,0] 


(* Hyperboloid of  2 sheets, degree  4         *)

poly = {{{2*aa, 0, 1}, {-2*aa, 2, 1}},
        {{4*bb, 1, 1}},
        {{cc, 2, 2}, {cc, 2, 0}, {cc, 0, 2}, {cc, 0, 0}},
        {{-1, 2, 2}, {1, 2, 0}, {-1, 0, 2}, {1, 0, 0}}};

net = contnet[poly, 4]; hypnet4 = InputForm[net];

(*  Master  net     *)

hypnet4 =   {{0, 0, cc, 1}, {aa/2, 0, cc, 1}, {(6*aa)/5, 0, (7*cc)/5, 5/6}, 
   {3*aa, 0, 3*cc, 1/2}, {2*aa, 0, 2*cc, 0}, {0, 0, cc, 1}, 
   {aa/2, bb/3, cc, 1}, {(6*aa)/5, (4*bb)/5, (7*cc)/5, 5/6}, 
   {3*aa, 2*bb, 3*cc, 1/2}, {0, 0, cc, 7/6}, {(2*aa)/7, (4*bb)/7, cc, 7/6}, 
   {(4*aa)/5, (8*bb)/5, (9*cc)/5, 5/6}, {0, 0, cc, 3/2}, 
   {0, (2*bb)/3, cc, 3/2}, {0, 0, cc, 2}};


(*  Case  aa  =  2,  bb = 1, cc = 2   *)
 aa= 2; bb = 1; cc = 2;

hypnet =   {{0, 0, 2, 1}, {1, 0, 2, 1}, {12/5, 0, 14/5, 5/6}, {6, 0, 6, 1/2}, 
   {4, 0, 4, 0}, {0, 0, 2, 1}, {1, 1/3, 2, 1}, {12/5, 4/5, 14/5, 5/6}, 
   {6, 2, 6, 1/2}, {0, 0, 2, 7/6}, {4/7, 4/7, 2, 7/6}, {8/5, 8/5, 18/5, 5/6}, 
   {0, 0, 2, 3/2}, {0, 2/3, 2, 3/2}, {0, 0, 2, 2}};


sqrender[hypnet,4,1,0.6,-1,0,2,0,0,-5,5,-3,3,-4.5,4.5,0]  (* nice  *) 
  trender[hypnet,4,reftrig,2,0,0,-5,5,-3,3,-4.5,4.5,0] 



(* Steiner's  Roman surface         *)

net = {{0, 0, 0, 1}, {1, 0, 0, 1}, {1, 0, 0, 2}, 
       {0, 1, 0, 1}, {1, 1, 1, 1}, 
       {0, 1, 0, 2}};


subdiv4[net,2,3,0,1,0,1,0,1,0]
subd2[net,2,3,-1,1,-1,1,-1,1,0]
new2net[net,2,2,2,3,-1,1,-1,1,-1,1,0]
new4net[net,2,3,-1,1,-1,1,-1,1]
new3anet[net,2,3,-1,1,-1,1,-1,1]
new4anet[net,2,3,-1,1,-1,1,-1,1]
new34net[net,2,3,-1,1,-1,1,-1,1]
new56net[net,2,3,-1,1,-1,1,-1,1]
new6net[net,2,3,-1,1,-1,1,-1,1]
fastdiv4[net,2,3,0,1,0,1,0,1]

render[net,2,3,0,0,-1,1,-1,1,-1,1,0]  (* very good *)
render[net,2,4,0,0,-1,1,-1,1,-1,1,0]  (* great  *)
render[net,2,3,2,0,-1,1,-1,1,-1,1,0]  (* in/outside colors *)

sqrender[net,2,1,1,-1,-1,4,0,0,-1,1,-1,1,-1,1,0] (* very nice *)
sqrender[net,2,1.5,1.5,-1.5,-1.5,4,0,0,-1,1,-1,1,-1,1,0]

render1[net,2,4,0,0,-1,1,-1,1,-1,1,0]
render1[net,2,4,0,0,0,1,0,1,0,1,0]

render34[net,2,3,0,0,-1,1,-1,1,-1,1,0]
render56[net,2,3,0,0,-1,1,-1,1,-1,1,0]

(* Also very good viewpoint: ViewPoint -> {2, -15, -2}, great *)
(* Also very good viewpoint: ViewPoint -> {2, -15, 2} *)
(*  Show[%136, ViewPoint -> {2, -20, -2}]             *)

fractal4[net,2,4,0,1,0,1,0,1]
fractal2[net,2,4,-1,1,-1,1,-1,1]
frac6net[net,2,3,-1,1,-1,1,-1,1]

lrender[net,2,5,3,-1,1,-1,1,-1,1,0]  

lfrender[net,2,5,3,-1,1,-1,1,-1,1,0]  


(* Steiner's  Roman surface, polar coordinates, degree 6         *)
(*  u = angle, v = polar radius                                 *)

poly1 = {{{4, 3, 1}, {4, 1, 1}},
        {{2, 0, 1}, {-2, 4, 1}},
        {{4, 1, 2}, {-4, 3, 2}},
        {{1, 4, 2}, {1, 4, 0}, {2, 2, 2}, 
         {2, 2, 0}, {1, 0, 2}, {1, 0, 0}}};


stnet1 = contnet[poly1, 6]; steinet1 = InputForm[stnet1]

steinet1 =   {{0, 0, 0, 1}, {0, 1/3, 0, 1}, {0, 5/8, 0, 16/15}, {0, 5/6, 0, 6/5},
   {0, 20/21, 0, 7/5}, {0, 1, 0, 5/3}, {0, 1, 0, 2}, {0, 0, 0, 1},
   {2/15, 1/3, 0, 1}, {1/4, 5/8, 1/16, 16/15}, {1/3, 5/6, 1/6, 6/5},
   {8/21, 20/21, 2/7, 7/5}, {2/5, 1, 2/5, 5/3}, {0, 0, 0, 17/15},
   {4/17, 5/17, 0, 17/15}, {24/55, 6/11, 6/55, 11/9}, {4/7, 5/7, 2/7, 7/5},
   {16/25, 4/5, 12/25, 5/3}, {0, 0, 0, 7/5}, {1/3, 5/21, 0, 7/5},
   {14/23, 10/23, 2/23, 23/15}, {7/9, 5/9, 2/9, 9/5}, {0, 0, 0, 28/15},
   {3/7, 1/7, 0, 28/15}, {3/4, 1/4, 0, 32/15}, {0, 0, 0, 8/3},
   {1/2, 0, 0, 8/3}, {0, 0, 0, 4}};


(* Complementary patch (v -> 1/v) *)

poly2 = {{{4, 3, 1}, {4, 1, 1}},
        {{2, 0, 1}, {-2, 4, 1}},
        {{4, 1, 0}, {-4, 3, 0}},
        {{1, 4, 2}, {1, 4, 0}, {2, 2, 2}, 
         {2, 2, 0}, {1, 0, 2}, {1, 0, 0}}};


stnet2 = contnet[poly2, 6]; steinet2 = InputForm[stnet2]

steinet2 = {{0, 0, 0, 1}, {0, 1/3, 0, 1}, {0, 5/8, 0, 16/15}, {0, 5/6, 0, 6/5},
   {0, 20/21, 0, 7/5}, {0, 1, 0, 5/3}, {0, 1, 0, 2}, {0, 0, 2/3, 1},
   {2/15, 1/3, 2/3, 1}, {1/4, 5/8, 5/8, 16/15}, {1/3, 5/6, 5/9, 6/5},
   {8/21, 20/21, 10/21, 7/5}, {2/5, 1, 2/5, 5/3}, {0, 0, 20/17, 17/15},
   {4/17, 5/17, 20/17, 17/15}, {24/55, 6/11, 12/11, 11/9},
   {4/7, 5/7, 20/21, 7/5}, {16/25, 4/5, 4/5, 5/3}, {0, 0, 9/7, 7/5},
   {1/3, 5/21, 9/7, 7/5}, {14/23, 10/23, 27/23, 23/15}, {7/9, 5/9, 1, 9/5},
   {0, 0, 1, 28/15}, {3/7, 1/7, 1, 28/15}, {3/4, 1/4, 7/8, 32/15},
   {0, 0, 1/2, 8/3}, {1/2, 0, 1/2, 8/3}, {0, 0, 0, 4}};



rendersq[steinet1,6,-1,1,-1,0,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]
rendersq[steinet1,6,-1,1,0,1,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]
rendersq[steinet1,6,-1,1,-1,1,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]
rendersq[steinet1,6,-1,1,-1,1,2,4,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]

render34[steinet1,6,3,0,0,-1,1,-1,1,-1,1,0]

rendersq[steinet2,6,-1,1,-1,0,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]

(* Show[%270, ViewPoint -> {4, -4, 3}] *)
rendersq[steinet2,6,-1,1,-1,1,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]
(* Show[%1426, ViewPoint -> {-4, 4, 1}] *)
rendersq[steinet2,6,-1,1,-1,1,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,0.6,0] (* nice *)

rendersq[steinet2,6,-1,1,-1,0,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]
rendersq[steinet2,6,-1,1,0,1,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]
rendersq[steinet2,6,-1,1,-1,1,3,4,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]





(* other  closed  Steiner type  surface         *)

net = {{-1, 0, 0, 1}, {0, 1, 0, 1}, {0, 2, 0, 2},
       {1, 0, 0, 1}, {1, 1, -2, 1}, {1, 0, 0, 2}};

subdiv4[net,2,3,-1,1,0,2,-2,1,0]
subd2[net,2,3,-5,3,-2,4,-4,4,0]
new6net[net,2,3,-4,2,-2,2,-2,3]
frac6net[net,2,3,-4,2,-2,2,-2,3]


(* cross-cap surface  (image of projective plane in 3D)    *)

poly = {{{2, 2, 1}, {2, 0, 3}, {-2, 0, 1}}, 
        {{8, 1, 1}}, 
        {{4, 2, 0}, {-4, 0, 2}},  
        {{1, 4, 0}, {1, 0, 4}, {2, 2, 2}, {2, 2, 0}, {2, 0, 2}, {1, 0, 0}}};

net = contnet[poly, 4]

projnet2 =   {{0, 0, 0, 1}, {-1/2, 0, 0, 1}, {-3/4, 0, -1/2, 4/3}, {-1/2, 0, -1, 2}, 
   {0, 0, -1, 4}, {0, 0, 0, 1}, {-1/2, 2/3, 0, 1}, {-3/4, 1, -1/2, 4/3}, 
   {-1/2, 1, -1, 2}, {0, 0, 1/2, 4/3}, {-1/4, 1, 1/2, 4/3}, 
   {-1/3, 4/3, 0, 2}, {0, 0, 1, 2}, {0, 1, 1, 2}, {0, 0, 1, 4}};


subdiv4[projnet2,4,2,-0.8,0.6,-0.1,1,-1.1,1.1,0]

sqrender[projnet2,4,1,1,-1,-1,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
sqrender[projnet2,4,1,1,-1,-1,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,0.5,0] (* top cut, great *)
sqrender[projnet2,4,1,1,-1,-1,3,1,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] (* lite *)
trender[projnet2,4,reftrig1,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
trender[projnet2,4,reftrig1,4,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] (* 4 iterations *)
trender[projnet2,4,reftrig2,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
trender[projnet2,4,reftrig2,4,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] (* 4 iterations *)

sqrender[projnet2,4,1,1,-1,-1,4,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]  (* great *)

(*  good Show[%260, ViewPoint -> {0, 8,10}]  *)
(*       Show[%260, ViewPoint -> {2, 8, 10}]      *)
(*       Show[%260, ViewPoint -> {0, 0.2, 10}] from above  *)
(*       Show[%260, ViewPoint -> {0, 6, 10}]               *)

render1[projnet2,4,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
render3[projnet2,4,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
render4[projnet2,4,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
render34[projnet2,4,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
render5[projnet2,4,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
render6[projnet2,4,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
render56[projnet2,4,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0]
render3to6[projnet2,4,3,1,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] (* lite *)
render[projnet2,4,3,0,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] (* very good *)

lrender[projnet2,4,5,8,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] (* nice *)
lrender[projnet2,4,5,2,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] (* interesting *)
lrender[projnet2,4,5,4,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] 
lrender[projnet2,4,5,0,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] 

lfrender[projnet2,4,5,2,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] (* nice *)

pta = {0, -1, 2};
ptb = {0, 1, 0};

pta = {-1, 0, 2};
ptb = {1, 0, 0};

pta = {-1, 1/2, 3/2};
ptb = {1, 1/2, -1/2};

pta = {-1, -1, 3};
ptb = {-1, 1, 1};

pta = {-1, -1, 3};
ptb = {1, -1, 1};

pta = {1, -1, 1};
ptb = {1, 1, -1};

pta = {-1, 1, 1};
ptb = {1, 1, -1};

clocurv3D[projnet2,4,5,pta,ptb,-0.8,0.8,-1.1,1.1,-1.1,1.1,0] 



(* other image of the projective plane in 3D  *)
(* twisted double cross cap *)

poly = {{{2, 2, 1}, {2, 0, 3}, {-2, 0, 1}},
        {{2, 3, 0}, {2, 1, 2}, {-2, 1, 0}},
        {{4, 2, 0}, {-4, 0, 2}},
        {{1, 4, 0}, {1, 0, 4}, {2, 2, 2}, {2, 2, 0}, {2, 0, 2}, {1, 0, 0}}}


prjnet3  = contnet[poly, 4]

projnet3 =  {{0, 0, 0, 1}, {-1/2, 0, 0, 1}, {-3/4, 0, -1/2, 4/3}, {-1/2, 0, -1, 2},
   {0, 0, -1, 4}, {0, -1/2, 0, 1}, {-1/2, -1/2, 0, 1},
   {-3/4, -1/4, -1/2, 4/3}, {-1/2, 0, -1, 2}, {0, -3/4, 1/2, 4/3},
   {-1/4, -3/4, 1/2, 4/3}, {-1/3, -1/3, 0, 2}, {0, -1/2, 1, 2},
   {0, -1/2, 1, 2}, {0, 0, 1, 4}}


sqrender[projnet3,4,1,1,-1,-1,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  (* great *)
(* with top cut off *)
sqrender[projnet3,4,1,1,-1,-1,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,0.5,0]  
sqrender[projnet3,4,1,1,-1,-1,3,2,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0] (* 2 colors *)
sqrender[projnet3,4,1,1,-1,-1,3,4,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0] (* 4 colors *)

rendersq[projnet3,4,-1,1,-1,0,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  
rendersq[projnet3,4,-1,1,0,1,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  
rendersq[projnet3,4,-1,0,-1,1,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  
rendersq[projnet3,4,0,1,-1,1,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  
rendersq[projnet3,4,-1,0,-1,0,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  
rendersq[projnet3,4,-1,0,0,1,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  


sqrender[projnet3,4,1,1,-1,-1,4,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0] 
sqrender[projnet3,4,1,1,-1,-1,4,1,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  (* lite *)
trender[projnet3,4,reftrig1,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
trender[projnet3,4,reftrig1,4,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0] (* 4 iterations *)
trender[projnet3,4,reftrig2,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
trender[projnet3,4,reftrig2,4,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0] (* 4 iterations *)
render1[projnet3,4,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
render3[projnet3,4,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
render4[projnet3,4,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
render34[projnet3,4,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
render5[projnet3,4,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
render6[projnet3,4,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
render56[projnet3,4,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]
render3to6[projnet3,4,3,1,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  (* lite *)
render[projnet3,4,3,0,0,-0.55,0.55,-0.55,0.55,-1.1,1.1,0] 

(* Also Show[%152, ViewPoint -> {0, -6, 5}] *)
(*  Show[%152, ViewPoint -> {0, -6, 4}] *)


lrender[projnet3,4,5,2,-0.55,0.55,-0.55,0.55,-1.1,1.1,0]  (* nice *)
lfrender[projnet3,4,5,2,-0.55,0.55,-0.55,0.55,-1.1,1.1,0] 



(* cross-cap algebraic surface from Hilbert and Cohn-Vossen  *)
(*  Only get the bottom part   *)
 

poly = {{{2, 0, 1}, {-2, 4, 1}}, 
        {{4, 1, 1}, {4, 3, 1}}, 
        {{2, 4, 2}, {4, 2, 2}, {2, 0, 2}},  
        {{1, 4, 2}, {1, 4, 0}, {1, 0, 2}, {1, 0, 0}}};

net = contnet[poly, 6]

hilnetb1 =   {{0, 0, 0, 1}, {1/3, 0, 0, 1}, {5/8, 0, 1/8, 16/15}, {5/6, 0, 1/3, 6/5}, 
   {20/21, 0, 4/7, 7/5}, {1, 0, 4/5, 5/3}, {1, 0, 1, 2}, {0, 0, 0, 1}, 
   {1/3, 2/15, 0, 1}, {5/8, 1/4, 1/8, 16/15}, {5/6, 1/3, 1/3, 6/5}, 
   {20/21, 8/21, 4/7, 7/5}, {1, 2/5, 4/5, 5/3}, {0, 0, 0, 1}, 
   {1/3, 4/15, 0, 1}, {5/8, 1/2, 1/6, 16/15}, {5/6, 2/3, 4/9, 6/5}, 
   {20/21, 16/21, 16/21, 7/5}, {0, 0, 0, 1}, {1/3, 7/15, 0, 1}, 
   {5/8, 7/8, 1/4, 16/15}, {5/6, 7/6, 2/3, 6/5}, {0, 0, 0, 16/15}, 
   {1/4, 3/4, 0, 16/15}, {4/9, 4/3, 4/9, 6/5}, {0, 0, 0, 4/3}, 
   {0, 1, 0, 4/3}, {0, 0, 0, 2}};


render1[hilnetb1,6,2,0,0,-1.1,1.1,-2.1,2.1,0,4.1,0]
rendersq[hilnetb1,6,-1,1,-1,1,2,0,0,-1.1,1.1,-2.1,2.1,0,4.1,0]
rendersq[hilnetb1,6,-1,1,-1,1,2,2,0,-1.1,1.1,-2.1,2.1,0,4.1,0] (* 2 colors *)


(* algebraic cross-cap surface, second parameterization, degree 6   *)  
(*  Only get the top part        *)

poly = {{{2, 0, 1}, {-2, 4, 1}}, 
        {{4, 1, 1}, {4, 3, 1}}, 
        {{2, 4, 0}, {4, 2, 0}, {2, 0, 0}},  
        {{1, 4, 2}, {1, 4, 0}, {1, 0, 2}, {1, 0, 0}}};

net = contnet[poly, 6]

hilnetb2 =   {{0, 0, 2, 1}, {1/3, 0, 2, 1}, {5/8, 0, 15/8, 16/15}, {5/6, 0, 5/3, 6/5}, 
   {20/21, 0, 10/7, 7/5}, {1, 0, 6/5, 5/3}, {1, 0, 1, 2}, {0, 0, 2, 1}, 
   {1/3, 2/15, 2, 1}, {5/8, 1/4, 15/8, 16/15}, {5/6, 1/3, 5/3, 6/5}, 
   {20/21, 8/21, 10/7, 7/5}, {1, 2/5, 6/5, 5/3}, {0, 0, 34/15, 1}, 
   {1/3, 4/15, 34/15, 1}, {5/8, 1/2, 17/8, 16/15}, {5/6, 2/3, 17/9, 6/5}, 
   {20/21, 16/21, 34/21, 7/5}, {0, 0, 14/5, 1}, {1/3, 7/15, 14/5, 1}, 
   {5/8, 7/8, 21/8, 16/15}, {5/6, 7/6, 7/3, 6/5}, {0, 0, 7/2, 16/15}, 
   {1/4, 3/4, 7/2, 16/15}, {4/9, 4/3, 28/9, 6/5}, {0, 0, 4, 4/3}, 
   {0, 1, 4, 4/3}, {0, 0, 4, 2}};


render1[hilnetb2,6,2,0,0,-1.1,1.1,-2.1,2.1,0,4.1,0]
rendersq[hilnetb2,6,-1,1,-1,1,2,0,0,-1.1,1.1,-2.1,2.1,0,4.1,0]
rendersq[hilnetb2,6,-1,1,-1,1,2,2,0,-1.1,1.1,-2.1,2.1,0,4.1,0] (* 2 colors *)
rendersq[hilnetb2,6,2,2,-2,-2,3,0,0,-1.1,1.1,-2.1,2.1,0,4.1,0]



(* algebraic cross-cap surface, third parameterization, degree 8  *)  
(* general parameterization depending on a, b                     *)

pol4 = (u^4 + 2*u^2 + 1) * (aa*v^4 + 2*(2*bb - aa)*v^2 + aa);

pp4 = Expand[pol4];

pp4 =   aa + 2*aa*u^2 + aa*u^4 - 2*aa*v^2 + 4*bb*v^2 - 4*aa*u^2*v^2 + 
   8*bb*u^2*v^2 - 2*aa*u^4*v^2 + 4*bb*u^4*v^2 + aa*v^4 + 2*aa*u^2*v^4 + 
   aa*u^4*v^4;



poly = {{{-4, 3, 4}, {4, 1, 4}, {4, 3, 0}, {-4, 1, 0}},
        {{8, 3, 3}, {8, 3, 1}, {-8, 1, 3}, {-8, 1, 1}},
        {{2, 4, 4}, {4, 4, 2}, {-4, 2, 4}, {2, 4, 0}, {2, 0, 4}, 
         {-8, 2, 2}, {-4, 2, 0}, {4, 0, 2}, {2, 0, 0}},
        {{aa, 4, 4}, {2*aa, 2, 4}, {2*(2*bb - aa), 4, 2}, 
         {4*(2*bb -aa), 2, 2}, {aa, 4, 0}, {aa, 0, 4}, {2*aa, 2, 0},
         {2*(2*bb - aa), 0, 2}, {aa, 0, 0}}};

hilbertn1 = contnet[poly, 8];  hilbertnet1 = InputForm[hilbertn1]


hilbertnet =   {{0, 0, 2/aa, aa}, {0, 0, 2/aa, aa},
   {0, 0, 15/(7*(aa + (-aa + 2*bb)/14)), aa + (-aa + 2*bb)/14},
   {0, 0, 17/(7*(aa + (3*(-aa + 2*bb))/14)), aa + (3*(-aa + 2*bb))/14},
   {0, 0, 101/(35*((71*aa)/70 + (3*(-aa + 2*bb))/7)),
    (71*aa)/70 + (3*(-aa + 2*bb))/7},
   {0, 0, 25/(7*((15*aa)/14 + (5*(-aa + 2*bb))/7)),
    (15*aa)/14 + (5*(-aa + 2*bb))/7},
   {0, 0, 32/(7*((17*aa)/14 + (15*(-aa + 2*bb))/14)),
    (17*aa)/14 + (15*(-aa + 2*bb))/14},
   {0, 0, 6/((3*aa)/2 + (3*(-aa + 2*bb))/2), (3*aa)/2 + (3*(-aa + 2*bb))/2},
   {0, 0, 8/(2*aa + 2*(-aa + 2*bb)), 2*aa + 2*(-aa + 2*bb)},
   {-1/(2*aa), 0, 2/aa, aa}, {-1/(2*aa), -1/(7*aa), 2/aa, aa},
   {-1/(2*(aa + (-aa + 2*bb)/14)), -2/(7*(aa + (-aa + 2*bb)/14)),
    15/(7*(aa + (-aa + 2*bb)/14)), aa + (-aa + 2*bb)/14},
   {-1/(2*(aa + (3*(-aa + 2*bb))/14)), -16/(35*(aa + (3*(-aa + 2*bb))/14)),
    17/(7*(aa + (3*(-aa + 2*bb))/14)), aa + (3*(-aa + 2*bb))/14},
   {-17/(35*((71*aa)/70 + (3*(-aa + 2*bb))/7)),
    -24/(35*((71*aa)/70 + (3*(-aa + 2*bb))/7)),
    101/(35*((71*aa)/70 + (3*(-aa + 2*bb))/7)),
    (71*aa)/70 + (3*(-aa + 2*bb))/7},
   {-3/(7*((15*aa)/14 + (5*(-aa + 2*bb))/7)),
    -((15*aa)/14 + (5*(-aa + 2*bb))/7)^(-1),
   25/(7*((15*aa)/14 + (5*(-aa + 2*bb))/7)),
    (15*aa)/14 + (5*(-aa + 2*bb))/7},
   {-2/(7*((17*aa)/14 + (15*(-aa + 2*bb))/14)),
    -10/(7*((17*aa)/14 + (15*(-aa + 2*bb))/14)),
    32/(7*((17*aa)/14 + (15*(-aa + 2*bb))/14)),
    (17*aa)/14 + (15*(-aa + 2*bb))/14},
   {0, -2/((3*aa)/2 + (3*(-aa + 2*bb))/2),
    6/((3*aa)/2 + (3*(-aa + 2*bb))/2), (3*aa)/2 + (3*(-aa + 2*bb))/2},
   {-14/(15*aa), 0, 26/(15*aa), (15*aa)/14},
   {-14/(15*aa), -4/(15*aa), 26/(15*aa), (15*aa)/14},
   {-((15*aa)/14 + (17*(-aa + 2*bb))/210)^(-1),
    -4/(7*((15*aa)/14 + (17*(-aa + 2*bb))/210)),
    208/(105*((15*aa)/14 + (17*(-aa + 2*bb))/210)),
    (15*aa)/14 + (17*(-aa + 2*bb))/210},
   {-((15*aa)/14 + (17*(-aa + 2*bb))/70)^(-1),
    -32/(35*((15*aa)/14 + (17*(-aa + 2*bb))/70)),
    78/(35*((15*aa)/14 + (17*(-aa + 2*bb))/70)),
    (15*aa)/14 + (17*(-aa + 2*bb))/70},
   {-34/(35*((229*aa)/210 + (17*(-aa + 2*bb))/35)),
    -48/(35*((229*aa)/210 + (17*(-aa + 2*bb))/35)),
    55/(21*((229*aa)/210 + (17*(-aa + 2*bb))/35)),
   (229*aa)/210 + (17*(-aa + 2*bb))/35},
   {-6/(7*((7*aa)/6 + (17*(-aa + 2*bb))/21)),
    -2/((7*aa)/6 + (17*(-aa + 2*bb))/21),
    67/(21*((7*aa)/6 + (17*(-aa + 2*bb))/21)),
    (7*aa)/6 + (17*(-aa + 2*bb))/21},
   {-4/(7*((19*aa)/14 + (17*(-aa + 2*bb))/14)),
    -20/(7*((19*aa)/14 + (17*(-aa + 2*bb))/14)),
    4/((19*aa)/14 + (17*(-aa + 2*bb))/14), (19*aa)/14 + (17*(-aa + 2*bb))/14},
     {-20/(17*aa), 0, 22/(17*aa), (17*aa)/14},
   {-20/(17*aa), -28/(85*aa), 22/(17*aa), (17*aa)/14},
   {-10/(7*((17*aa)/14 + (-aa + 2*bb)/10)),
    -4/(5*((17*aa)/14 + (-aa + 2*bb)/10)),
    58/(35*((17*aa)/14 + (-aa + 2*bb)/10)), (17*aa)/14 + (-aa + 2*bb)/10},
   {-10/(7*((17*aa)/14 + (3*(-aa + 2*bb))/10)),
    -89/(70*((17*aa)/14 + (3*(-aa + 2*bb))/10)),
    64/(35*((17*aa)/14 + (3*(-aa + 2*bb))/10)),
    (17*aa)/14 + (3*(-aa + 2*bb))/10},
   {-7/(5*((87*aa)/70 + (3*(-aa + 2*bb))/5)),
    -66/(35*((87*aa)/70 + (3*(-aa + 2*bb))/5)),
    73/(35*((87*aa)/70 + (3*(-aa + 2*bb))/5)),
    (87*aa)/70 + (3*(-aa + 2*bb))/5},
   {-9/(7*((5*aa)/14 + 2*bb)), -19/(7*((5*aa)/14 + 2*bb)),
   17/(7*((5*aa)/14 + 2*bb)), (5*aa)/14 + 2*bb},
   {-120/(101*aa), 0, 82/(101*aa), (101*aa)/70},
   {-120/(101*aa), -32/(101*aa), 82/(101*aa), (101*aa)/70},
   {-12/(7*((101*aa)/70 + (2*(-aa + 2*bb))/15)),
    -32/(35*((101*aa)/70 + (2*(-aa + 2*bb))/15)),
    127/(105*((101*aa)/70 + (2*(-aa + 2*bb))/15)),
    (101*aa)/70 + (2*(-aa + 2*bb))/15},
   {-12/(7*((101*aa)/70 + (2*(-aa + 2*bb))/5)),
    -10/(7*((101*aa)/70 + (2*(-aa + 2*bb))/5)),
    9/(7*((101*aa)/70 + (2*(-aa + 2*bb))/5)),
    (101*aa)/70 + (2*(-aa + 2*bb))/5},
   {-12/(7*((3*aa)/2 + (4*(-aa + 2*bb))/5)),
    -72/(35*((3*aa)/2 + (4*(-aa + 2*bb))/5)),
    7/(5*((3*aa)/2 + (4*(-aa + 2*bb))/5)), (3*aa)/2 + (4*(-aa + 2*bb))/5},
   {-aa^(-1), 0, 2/(5*aa), (25*aa)/14},
   {-aa^(-1), -6/(25*aa), 2/(5*aa), (25*aa)/14},
   {-25/(14*((25*aa)/14 + (4*(-aa + 2*bb))/21)),
    -6/(7*((25*aa)/14 + (4*(-aa + 2*bb))/21)),
    5/(7*((25*aa)/14 + (4*(-aa + 2*bb))/21)),
    (25*aa)/14 + (4*(-aa + 2*bb))/21},
   {-25/(14*((25*aa)/14 + (4*(-aa + 2*bb))/7)),
    -9/(7*((25*aa)/14 + (4*(-aa + 2*bb))/7)),
   5/(7*((25*aa)/14 + (4*(-aa + 2*bb))/7)), (25*aa)/14 + (4*(-aa + 2*bb))/7},
     {-11/(16*aa), 0, 1/(8*aa), (16*aa)/7},
   {-11/(16*aa), -1/(8*aa), 1/(8*aa), (16*aa)/7},
   {-11/(7*((16*aa)/7 + (2*(-aa + 2*bb))/7)),
    -4/(7*((16*aa)/7 + (2*(-aa + 2*bb))/7)),
    2/(7*((16*aa)/7 + (2*(-aa + 2*bb))/7)), (16*aa)/7 + (2*(-aa + 2*bb))/7},
   {-1/(3*aa), 0, 0, 3*aa}, {-1/(3*aa), 0, 0, 3*aa}, {0, 0, 0, 4*aa}};

 (* there was an error in the input polynomial, in z, 
    the coeff of u^2v^2 was 4 instead of 8 *)


hilbertfalse =  {{0, 0, 2, aa}, {0, 0, 2, aa}, {0, 0, 15/7, aa + (-aa + 2*bb)/14}, 
   {0, 0, 17/7, aa + (3*(-aa + 2*bb))/14}, 
   {0, 0, 101/35, (71*aa)/70 + (3*(-aa + 2*bb))/7}, 
   {0, 0, 25/7, (15*aa)/14 + (5*(-aa + 2*bb))/7}, 
   {0, 0, 32/7, (17*aa)/14 + (15*(-aa + 2*bb))/14}, 
   {0, 0, 6, (3*aa)/2 + (3*(-aa + 2*bb))/2}, 
   {0, 0, 8, 2*aa + 2*(-aa + 2*bb)}, {-1/2, 0, 2, aa}, {-1/2, -1/7, 2, aa}, 
   {-1/2, -2/7, 15/7, aa + (-aa + 2*bb)/14}, 
   {-1/2, -16/35, 17/7, aa + (3*(-aa + 2*bb))/14}, 
   {-17/35, -24/35, 101/35, (71*aa)/70 + (3*(-aa + 2*bb))/7}, 
   {-3/7, -1, 25/7, (15*aa)/14 + (5*(-aa + 2*bb))/7}, 
   {-2/7, -10/7, 32/7, (17*aa)/14 + (15*(-aa + 2*bb))/14}, 
   {0, -2, 6, (3*aa)/2 + (3*(-aa + 2*bb))/2}, {-1, 0, 13/7, (15*aa)/14}, 
   {-1, -2/7, 13/7, (15*aa)/14}, 
   {-1, -4/7, 209/105, (15*aa)/14 + (17*(-aa + 2*bb))/210}, 
   {-1, -32/35, 79/35, (15*aa)/14 + (17*(-aa + 2*bb))/70}, 
   {-34/35, -48/35, 281/105, (229*aa)/210 + (17*(-aa + 2*bb))/35}, 
   {-6/7, -2, 23/7, (7*aa)/6 + (17*(-aa + 2*bb))/21}, 
   {-4/7, -20/7, 29/7, (19*aa)/14 + (17*(-aa + 2*bb))/14}, 
   {-10/7, 0, 11/7, (17*aa)/14}, {-10/7, -2/5, 11/7, (17*aa)/14}, 
   {-10/7, -4/5, 59/35, (17*aa)/14 + (-aa + 2*bb)/10}, 
   {-10/7, -89/70, 67/35, (17*aa)/14 + (3*(-aa + 2*bb))/10}, 
   {-7/5, -66/35, 79/35, (87*aa)/70 + (3*(-aa + 2*bb))/5}, 
   {-9/7, -19/7, 19/7, (5*aa)/14 + 2*bb}, {-12/7, 0, 41/35, (101*aa)/70}, 
   {-12/7, -16/35, 41/35, (101*aa)/70}, 
   {-12/7, -32/35, 19/15, (101*aa)/70 + (2*(-aa + 2*bb))/15}, 
   {-12/7, -10/7, 51/35, (101*aa)/70 + (2*(-aa + 2*bb))/5}, 
   {-12/7, -72/35, 61/35, (3*aa)/2 + (4*(-aa + 2*bb))/5}, 
   {-25/14, 0, 5/7, (25*aa)/14}, {-25/14, -3/7, 5/7, (25*aa)/14}, 
   {-25/14, -6/7, 17/21, (25*aa)/14 + (4*(-aa + 2*bb))/21}, 
   {-25/14, -9/7, 1, (25*aa)/14 + (4*(-aa + 2*bb))/7}, 
   {-11/7, 0, 2/7, (16*aa)/7}, {-11/7, -2/7, 2/7, (16*aa)/7}, 
   {-11/7, -4/7, 3/7, (16*aa)/7 + (2*(-aa + 2*bb))/7}, {-1, 0, 0, 3*aa}, 
   {-1, 0, 0, 3*aa}, {0, 0, 0, 4*aa}};



(*  Case aa = 1, bb = 1/2                                             *)


poly = {{{-4, 3, 4}, {4, 1, 4}, {4, 3, 0}, {-4, 1, 0}},
        {{8, 3, 3}, {8, 3, 1}, {-8, 1, 3}, {-8, 1, 1}},
        {{2, 4, 4}, {4, 4, 2}, {-4, 2, 4}, {2, 4, 0}, {2, 0, 4}, 
         {-4, 2, 2}, {-4, 2, 0}, {4, 0, 2}, {2, 0, 0}},
        {{1, 4, 4}, {1, 4, 0}, {1, 0, 4}, {2, 2, 4}, {2, 2, 0}, {1, 0, 0}}};


(*  Case aa = 1, bb = 1/2                                             *)


hilnet =   {{0, 0, 2, 1}, {0, 0, 2, 1}, {0, 0, 15/7, 1}, {0, 0, 17/7, 1},
   {0, 0, 202/71, 71/70}, {0, 0, 10/3, 15/14}, {0, 0, 64/17, 17/14},
   {0, 0, 4, 3/2}, {0, 0, 4, 2}, {-1/2, 0, 2, 1}, {-1/2, -1/7, 2, 1},
   {-1/2, -2/7, 15/7, 1}, {-1/2, -16/35, 17/7, 1},
   {-34/71, -48/71, 202/71, 71/70}, {-2/5, -14/15, 10/3, 15/14},
   {-4/17, -20/17, 64/17, 17/14}, {0, -4/3, 4, 3/2},
   {-14/15, 0, 26/15, 15/14}, {-14/15, -4/15, 26/15, 15/14},
   {-14/15, -8/15, 416/225, 15/14}, {-14/15, -64/75, 52/25, 15/14},
   {-204/229, -288/229, 550/229, 229/210}, {-36/49, -12/7, 134/49, 7/6},
   {-8/19, -40/19, 56/19, 19/14}, {-20/17, 0, 22/17, 17/14},
   {-20/17, -28/85, 22/17, 17/14}, {-20/17, -56/85, 116/85, 17/14},
   {-20/17, -89/85, 128/85, 17/14}, {-98/87, -44/29, 146/87, 87/70},
   {-18/19, -2, 34/19, 19/14}, {-120/101, 0, 82/101, 101/70},
   {-120/101, -32/101, 82/101, 101/70}, {-120/101, -64/101, 254/303, 101/70},
   {-120/101, -100/101, 90/101, 101/70}, {-8/7, -48/35, 14/15, 3/2},
   {-1, 0, 2/5, 25/14}, {-1, -6/25, 2/5, 25/14}, {-1, -12/25, 2/5, 25/14},
   {-1, -18/25, 2/5, 25/14}, {-11/16, 0, 1/8, 16/7},
   {-11/16, -1/8, 1/8, 16/7}, {-11/16, -1/4, 1/8, 16/7}, {-1/3, 0, 0, 3},
   {-1/3, 0, 0, 3}, {0, 0, 0, 4}};



falsehilnet =  {{0, 0, 2, 1}, {0, 0, 2, 1}, {0, 0, 15/7, 1}, {0, 0, 17/7, 1}, 
   {0, 0, 202/71, 71/70}, {0, 0, 10/3, 15/14}, {0, 0, 64/17, 17/14}, 
   {0, 0, 4, 3/2}, {0, 0, 4, 2}, {-1/2, 0, 2, 1}, {-1/2, -1/7, 2, 1}, 
   {-1/2, -2/7, 15/7, 1}, {-1/2, -16/35, 17/7, 1}, 
   {-34/71, -48/71, 202/71, 71/70}, {-2/5, -14/15, 10/3, 15/14}, 
   {-4/17, -20/17, 64/17, 17/14}, {0, -4/3, 4, 3/2}, 
   {-14/15, 0, 26/15, 15/14}, {-14/15, -4/15, 26/15, 15/14}, 
   {-14/15, -8/15, 418/225, 15/14}, {-14/15, -64/75, 158/75, 15/14}, 
   {-204/229, -288/229, 562/229, 229/210}, {-36/49, -12/7, 138/49, 7/6}, 
   {-8/19, -40/19, 58/19, 19/14}, {-20/17, 0, 22/17, 17/14}, 
   {-20/17, -28/85, 22/17, 17/14}, {-20/17, -56/85, 118/85, 17/14}, 
   {-20/17, -89/85, 134/85, 17/14}, {-98/87, -44/29, 158/87, 87/70}, 
   {-18/19, -2, 2, 19/14}, {-120/101, 0, 82/101, 101/70}, 
   {-120/101, -32/101, 82/101, 101/70}, {-120/101, -64/101, 266/303, 101/70}, 
   {-120/101, -100/101, 102/101, 101/70}, {-8/7, -48/35, 122/105, 3/2}, 
   {-1, 0, 2/5, 25/14}, {-1, -6/25, 2/5, 25/14}, {-1, -12/25, 34/75, 25/14}, 
   {-1, -18/25, 14/25, 25/14}, {-11/16, 0, 1/8, 16/7}, 
   {-11/16, -1/8, 1/8, 16/7}, {-11/16, -1/4, 3/16, 16/7}, {-1/3, 0, 0, 3}, 
   {-1/3, 0, 0, 3}, {0, 0, 0, 4}};



         
render1[hilnet,8,2,0,0,-2.1,2.1,-2.1,2.1,0,4.1,0]
sqrender[hilnet,8,1,1,-1,-1,2,1,1,-2.1,2.1,-2.1,2.1,0,4.1,0] (* light  *)
sqrender[hilnet,8,1,1,-1,-1,2,0,0,-2.1,2.1,-2.1,2.1,0,4.1,0] (* beautiful  *)
sqrender[hilnet,8,1,1,-1,-1,2,2,0,-2.1,2.1,-2.1,2.1,0,4.1,0] (* in/outside colors  *)
sqrender[hilnet,8,1,1,-1,-1,3,0,0,-2.1,2.1,-2.1,2.1,0,4.1,0] (* gorgeous  *)

lrender[hilnet,8,5,8,-2.1,2.1,-2.1,2.1,0,4.1,0]   (* beautiful  *)



(* Monkey saddle  (triangular net, degree 3                 *)

monknet = {{0, 0, 0, 1}, {0, 1/3, 0, 1}, {0, 2/3, 0, 1}, {0, 1, 0, 1},
       {1/3, 0, 0, 1}, {1/3, 1/3, 0, 1},  {1/3, 2/3, -1, 1},  
       {2/3, 0, 0, 1}, {2/3, 1/3, 0, 1}, 
       {1, 0, 1, 1}};

subdiv4[monknet,3,2,0,1.01,0,1.01,-1,1,0]
subdiv4[monknet,3,2,0,1.01,0,1.01,-0.5,1,0]

new2net[monknet,3,1,1,3,-1.01,1.01,-1.01,1.01,-2.01,2.01,0]
fractal2[monknet,3,3,-1.01,1.01,-1.01,1.01,-2.01,2.01,-1]     (* cute  *)
fractal2[monknet,3,4,-1.01,1.01,-1.01,1.01,-2.01,2.01,0]     (* solid  *)
fractal2[monknet,3,3,-1.01,1.01,-1.01,1.01,-2.01,2.01,2]     (* 2 sides  *)
fractal2[monknet,3,3,-1.01,1.01,-1.01,1.01,-2.01,2.01,4]     (* 3 colors  *)
new2net[monknet,3,1.5,1.5,3,-1.51,1.51,-1.51,1.51,-6.8,6.8,0]
new2net[monknet,3,1.5,1.5,3,-1.51,1.51,-1.51,1.51,-6.8,6.8,0]

sqrender[monknet,3,1,1,-1,-1,3,0,0, -1.01,1.01,-1.01,1.01,-2.01,2.01, 0] (* very nice *)
sqrender[monknet,3,1,1,-1,-1,3,2,0, -1.01,1.01,-1.01,1.01,-2.01,2.01, 0] (* 2 sides *)
new2net[monknet,3,2,2,2,-2.01,2.01,-2.01,2.01,-16,16,0]

render[monknet,3,3,0,0, -1.01,1.01,-1.01,1.01,-2.01,2.01, 0] 

subd2[net,3,3,-2,2,-2,3,-2,2,0]

(* Monkey saddle  (rectangular net, degree 3, 2                 *)

sqmonknet1 =  {{0, 0, 0, 1}, {0, 1/2, 0, 1}, {0, 1, 0, 1}, {1/3, 0, 0, 1},
   {1/3, 1/2, 0, 1}, {1/3, 1, -1, 1}, {2/3, 0, 0, 1}, {2/3, 1/2, 0, 1},
   {2/3, 1, -2, 1}, {1, 0, 1, 1}, {1, 1/2, 1, 1}, {1, 1, -2, 1}}


  recrender[sqmonknet1,3,2,3,0,0,0,1.01,-1.01,1.01,-2.01,1.01, 0]  (* good *)

sqmonknet = newrecnet[sqmonknet1,3,2,-1,1,-1,1,0]

sqmonknet =   {{-1, -1, 2, 1}, {-1, 0, -4, 1}, {-1, 1, 2, 1}, {-1/3, -1, 2, 1},
   {-1/3, 0, 0, 1}, {-1/3, 1, 2, 1}, {1/3, -1, -2, 1}, {1/3, 0, 0, 1},
   {1/3, 1, -2, 1}, {1, -1, -2, 1}, {1, 0, 4, 1}, {1, 1, -2, 1}}

 recrender[sqmonknet,3,2,1,0,0,-1.01,1.01,-1.01,1.01,-2.01,2.01, 0]
 recrender[sqmonknet,3,2,2,0,0,-1.01,1.01,-1.01,1.01,-2.01,2.01, 0]
 recrender[sqmonknet,3,2,3,0,0,-1.01,1.01,-1.01,1.01,-2.01,2.01, 0]  (* good *)


(* Whitney's umbrella   degree 2               *)

net = {{0, 0, 0, 1}, {0, 0, 0, 1}, {0, 0, 1, 1},
       {0, 1/2, 0, 1}, {1, 1/2, 0, 1},
       {0, 1, 0, 1}};

subdiv4[net,2,3,0,1,0,1,-1,1,0]
render1[net,2,3,0,0,0,1,0,1,-1,1,0]
new2net[net,2,1,1,3,-2,2,-1,1,-1,1,0]
sqrender[net,2,1,1,-1,-1,4,0,0,-2,2,-1,1,-1,1,0]
sqrender[net,2,1,1,-1,-1,3,0,0,-2,2,-1,1,-1,1,0] (* great *)
 (* triangulation by line segments *)  
sqrender[net,2,1,1,-1,-1,3,0,0,-2,2,-1,1,-1,1,0]  (* solid tiangulation *)
sqrender[net,2,1,1,-1,-1,3,-1,0,-2,2,-1,1,-1,1,0] 
new2net[net,2,2,2,3,-8,8,-2,2,-4,4,0]


(* Plucker's conoid,  bad version                 *)

plucknet = {{0, 0, 0, 0}, {0, 1/2, 0, 0}, {0, 1, 0, 1},
       {1/2, 0, 0, 0}, {1/2, 1/2, 1, 0},
       {1, 0, 0, 1}};

subdiv4[plucknet,2,3,0,4,0,6,0,4]
subdiv4[plucknet,2,3,0,4,0,4,0,1]
new2net[plucknet,2,2,2,3,-2,2,-2,2,-1.5,1.5]

reftrigb = {{1, -1}, {1, 1}, {-1, -1}}

recpluck = blowtrsq[plucknet, 2, 1, reftrigb, 0]

pluck = testblow2[plucknet, 2, 1, 0]

  recrender[recpluck,1,2,3,0,0,-2,2,-2,2,-1.5,1.5, 0]

  sqrender[pluck,3,1, 1, -1, -1, 3,0,0,-3,3,-3,3,-3,3, 0]

(* Plucker's conoid  (degree 5)               *)

poly = {{{1, 0, 1}, {-1, 4, 1}},
        {{2, 1, 1}, {2, 3, 1}},
        {{4, 1, 0}, {-4, 3, 0}},
        {{1, 4, 0}, {2, 2, 0}, {1, 0, 0}}};

net = contnet[poly, 5]

plucknet =   {{0, 0, 0, 1}, {1/5, 0, 0, 1}, {2/5, 0, 0, 1}, {3/5, 0, 0, 1}, 
   {4/5, 0, 0, 1}, {1, 0, 0, 1}, {0, 0, 4/5, 1}, {1/5, 1/10, 4/5, 1}, 
   {2/5, 1/5, 4/5, 1}, {3/5, 3/10, 4/5, 1}, {4/5, 2/5, 4/5, 1}, 
   {0, 0, 4/3, 6/5}, {1/6, 1/6, 4/3, 6/5}, {1/3, 1/3, 4/3, 6/5}, 
   {1/2, 1/2, 4/3, 6/5}, {0, 0, 5/4, 8/5}, {1/8, 1/4, 5/4, 8/5}, 
   {1/4, 1/2, 5/4, 8/5}, {0, 0, 2/3, 12/5}, {0, 1/3, 2/3, 12/5}, {0, 0, 0, 4}};

render1[plucknet,5,3,0,0,-0.1,1.1,-0.1,1.1,-0.1,1.1,0]
sqrender[plucknet,5,1,1,0,-1,3,0,1,-1.1,1.1,-1.1,1.1,-1.1,1.1,0] 
sqrender[plucknet,5,1,1,-1,-1,2,1,1,-1.1,1.1,-1.1,1.1,-1.1,1.1,0] (* light  *)
sqrender[plucknet,5,1,1,-1,-1,3,0,0,-1.1,1.1,-1.1,1.1,-1.1,1.1,0]  (* very nice  *)
sqrender[plucknet,5,1,2,-1,-2,3,0,0,-2.1,2.1,-2.1,2.1,-1.1,1.1,0]  (* great *)
sqrender[plucknet,5,1,3/2,-1,-3/2,3,0,0,-2.1,2.1,-2.1,2.1,-1.1,1.1,0] 
render[plucknet,5,3,0,0,-4,4,-4,4,-1.1,1.1,0]


(* Right  conoid, degree 3                 *)

poly  = {{{1, 0, 1}, {-1, 2, 1}},
         {{2, 1, 1}},
         {{4, 1, 0}},
         {{1, 2, 0}, {1, 0, 0}}};

net = contnet[poly, 3]

rconet0 =   {{0, 0, 0, 1}, {1/3, 0, 0, 1}, {2/3, 0, 0, 1}, {1, 0, 0, 1}, 
   {0, 0, 4/3, 1}, {1/3, 1/3, 4/3, 1}, {2/3, 2/3, 4/3, 1}, {0, 0, 2, 4/3}, 
   {0, 1/2, 2, 4/3}, {0, 0, 2, 2}};

(*  for -1 <= u <= 1, we only get half of the conoid  *)

render1[rconet0,3,3,1,0,-2.1,2.1,-2.1,2.1,-2.1,2.1,0]            (* light  *)
render1[rconet0,3,3,0,0,-2.1,2.1,-2.1,2.1,-2.1,2.1,0] 
trender[rconet0,3,reftrig1,3,0,0,-2.1,2.1,-2.1,2.1,-2.1,2.1,0] 
trender[rconet0,3,reftrig2,3,0,0,-2.1,2.1,-2.1,2.1,-2.1,2.1,0] 
sqrender[rconet0,3,1,1,0,-1,3,0,0,-2.1,2.1,-2.1,2.1,-2.1,2.1,0]
sqrender[rconet0,3,1,1,-1,-1,3,0,0,-2.1,2.1,-2.1,2.1,-2.1,2.1,0]
sqrender[rconet0,3,1,3/2,-1,-3/2,3,0,0,-2.2,2.2,-2.2,2.2,-2.2,2.2,0] (* nice *)
sqrender[rconet0,3,1,2,-1,-2,3,0,0,-2.2,2.2,-2.2,2.2,-2.1,2.1,0]  (* very pretty *)
sqrender[rconet0,3,1,2,-1,-2,3,0,1,-2.6,2.6,-2.6,2.6,-1.1,1.1,0]  (* lite *)
sqrender[rconet0,3,1,3,-1,-3,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]  (* pretty *)


(* Right  conoid, degree 5                 *)

poly  = {{{1, 4, 1}, {-6, 2, 1}, {1, 0, 1}},
         {{4, 1, 1}, {-4, 3, 1}},
         {{8, 1, 0}, {-8, 3, 0}},
         {{1, 4, 0}, {2, 2, 0}, {1, 0, 0}}};

net = contnet[poly, 5];  rconet = InputForm[net];

rconet =   {{0, 0, 0, 1}, {1/5, 0, 0, 1}, {2/5, 0, 0, 1}, {3/5, 0, 0, 1}, 
   {4/5, 0, 0, 1}, {1, 0, 0, 1}, {0, 0, 8/5, 1}, {1/5, 1/5, 8/5, 1}, 
   {2/5, 2/5, 8/5, 1}, {3/5, 3/5, 8/5, 1}, {4/5, 4/5, 8/5, 1}, 
   {0, 0, 8/3, 6/5}, {0, 1/3, 8/3, 6/5}, {0, 2/3, 8/3, 6/5}, 
   {0, 1, 8/3, 6/5}, {0, 0, 5/2, 8/5}, {-1/4, 1/4, 5/2, 8/5}, 
   {-1/2, 1/2, 5/2, 8/5}, {0, 0, 4/3, 12/5}, {-1/3, 0, 4/3, 12/5}, 
   {0, 0, 0, 4}};

render1[rconet,5,3,0,0,-2.2,2.2,-2.2,2.2,-2.2,2.2,0] 
trender[rconet,5,reftrig1,3,0,0,-2.2,2.2,-2.2,2.2,-2.2,2.2,0] 
trender[rconet,5,reftrig2,3,0,0,-2.2,2.2,-2.2,2.2,-2.2,2.2,0] 
sqrender[rconet,5,1,3/2,-1,-3/2,3,0,0,-2.2,2.2,-2.2,2.2,-2.2,2.2,0] (* very nice *)
sqrender[rconet,5,1,1,-1,-1,3,0,0,-1.2,1.2,-1.2,1.2,-2.2,2.2,0] 
sqrender[rconet,5,1,2,-1,-2,3,0,0,-2.2,2.2,-2.2,2.2,-2.2,2.2,0] (* nice *)

(* Show[%295, ViewPoint -> {8, 1, 8}]  *)
(*  Show[%7, ViewPoint -> {8, 0.2, 4}] *)


(* Other conoid, from Cagnac, Vol III, page 425-426 *)

x = v cos theta
y = v sin theta
z = aa cos theta - bb v

x = u^4v - 6u^2v + v
y = 4uv - 4u^3v
z = aa u^4 - 6aa u^2 + aa - bb u^4v - 2bb u^2v - bb v
w = u^4 + 2u^2 + 1

poly = {{{1, 4, 1}, {-6, 2, 1}, {1, 0, 1}},
        {{4, 1, 1}, {-4, 3, 1}},
        {{aa, 4, 0}, {-6aa, 2, 0},  {aa, 0, 0}, 
         {-bb, 4 ,1}, {-2bb, 2, 1}, {-bb, 0, 1}},
        {{1, 4, 0}, {2, 2, 0}, {1, 0, 0}}};

netl = contnet[poly, 4]; netlim = InputForm[netl];

netlim =  {{0, 0, aa, 1}, {1/4, 0, aa - bb/4, 1}, {1/2, 0, aa - bb/2, 1},
   {3/4, 0, aa - (3*bb)/4, 1}, {1, 0, aa - bb, 1}, {0, 0, aa, 1},
   {1/4, 1/3, aa - bb/4, 1}, {1/2, 2/3, aa - bb/2, 1},
   {3/4, 1, aa - (3*bb)/4, 1}, {0, 0, 0, 4/3}, {-3/16, 1/2, (-5*bb)/16, 4/3},
   {-3/8, 1, (-5*bb)/8, 4/3}, {0, 0, -aa, 2},
   {-5/8, 0, (-2*aa - (3*bb)/4)/2, 2}, {0, 0, -aa, 4}};


(* Case a = 1, b = 1 *)

netlim =   {{0, 0, 1, 1}, {1/4, 0, 3/4, 1}, {1/2, 0, 1/2, 1}, {3/4, 0, 1/4, 1},
   {1, 0, 0, 1}, {0, 0, 1, 1}, {1/4, 1/3, 3/4, 1}, {1/2, 2/3, 1/2, 1},
   {3/4, 1, 1/4, 1}, {0, 0, 0, 4/3}, {-3/16, 1/2, -5/16, 4/3},
   {-3/8, 1, -5/8, 4/3}, {0, 0, -1, 2}, {-5/8, 0, -11/8, 2}, {0, 0, -1, 4}};


rendersq[netlim,4,-1,1,-2,2,3,0,0,-2.3,2.3,-2.3,2.3,-3.1,3.1,0]








(* Torus , degree 4                 *)

poly  =  {{{-aa, 2, 2}, {2 * bb, 2, 1}, {-aa, 2, 0}, {aa, 0, 2}, 
           {-2 * bb, 0, 1}, {aa, 0, 0}},
          {{2 * aa, 1, 2}, {-4 * bb, 1, 1}, {2 * aa, 1, 0}},
          {{-cc, 2, 2}, {-cc, 0, 2}, {cc, 2, 0}, {cc, 0, 0}},
          {{1, 2, 2}, {1, 2, 0}, {1, 0, 2}, {1, 0, 0}}};

net = contnet[poly, 4]; tornets = InputForm[net];

(*  Master net   *)

tornets =  {{aa, 0, cc, 1}, {aa - bb/2, 0, cc, 1},
   {(6*((7*aa)/6 - bb))/7, 0, (5*cc)/7, 7/6},
   {(2*((3*aa)/2 - (3*bb)/2))/3, 0, cc/3, 3/2}, {(2*aa - 2*bb)/2, 0, 0, 2},
   {aa, aa/2, cc, 1}, {aa - bb/2, aa/2 - bb/3, cc, 1},
   {(6*((7*aa)/6 - bb))/7, (6*((2*aa)/3 - (2*bb)/3))/7, (5*cc)/7, 7/6},
   {(2*((3*aa)/2 - (3*bb)/2))/3, (2*(aa - bb))/3, cc/3, 3/2},
   {(5*aa)/7, (6*aa)/7, cc, 7/6},
   {(6*((5*aa)/6 - bb/3))/7, (6*(aa - (2*bb)/3))/7, cc, 7/6},
   {(2*((5*aa)/6 - (2*bb)/3))/3, (2*((4*aa)/3 - (4*bb)/3))/3, (5*cc)/9, 3/2},
   {aa/3, aa, cc, 3/2}, {aa/3, (2*((3*aa)/2 - bb))/3, cc, 3/2},
   {0, aa, cc, 2}};


(*   aa = 2,  bb = 1  cc = 1    *)

tornet =   {{2, 0, 1, 1}, {3/2, 0, 1, 1}, {8/7, 0, 5/7, 7/6}, {1, 0, 1/3, 3/2},
   {1, 0, 0, 2}, {2, 1, 1, 1}, {3/2, 2/3, 1, 1}, {8/7, 4/7, 5/7, 7/6},
   {1, 2/3, 1/3, 3/2}, {10/7, 12/7, 1, 7/6}, {8/7, 8/7, 1, 7/6},
   {2/3, 8/9, 5/9, 3/2}, {2/3, 2, 1, 3/2}, {2/3, 4/3, 1, 3/2}, {0, 2, 1, 2}};


(* testing the net123 program blowup, and conversion programs   *)

znets = net123[tornet, 4, 0]

zog = testnet[tornet, 4, 0]

reftrig  = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};

bonet = maptohat[tornet];

zig1 = newcnet3old[bonet, 4, reftrig1];
zig2 = newcnet3[bonet, 4, reftrig1];

dnet =  {{0, 0, 0, 0}, {3, 0, 4, 1}, {6, 0, 0, 1},
       {2, 3, 4, 1}, {5, 3, 4, 1}, {3, 6, 0, 1}};

trender[dnet, 2, reftrig, 2, 0, 0, 0,6,0,6,0,4, 0]


zut = testblow2[dnet, 2, 1, 0]

ddnet =   {{2, 3, 4, 1}, {7/3, 2, 4, 1}, {8/3, 1, 4, 1}, {3, 0, 4, 1},
   {7/3, 4, 8/3, 1}, {19/6, 5/2, 4, 1}, {11/3, 1, 8/3, 1}, {8/3, 5, 4/3, 1},
   {4, 3, 4, 1}, {3, 6, 0, 1}}


ddnetz =    {{6, 0, 0, 1}, {5, 0, 4/3, 1}, {4, 0, 8/3, 1}, {3, 0, 4, 1},
   {16/3, 2, 8/3, 1}, {9/2, 3/2, 8/3, 1}, {11/3, 1, 8/3, 1},
   {13/3, 4, 8/3, 1}, {4, 3, 4, 1}, {3, 6, 0, 1}}


trender[ddnet, 3, reftrig, 2, 0, 0, 0,6,0,6,0,4, 0]
sqrender[ddnet, 3, 1, 1, 0, 0, 2, 0, 0, 0,6,0,6,0,4, 0]
sqrender[ddnetz, 3, 1, 1, 0, 0, 2, 0, 0, 0,6,0,6,0,4, 0]


u = {1/2}
v = {1/2, 1/2}

popo = sqpoldecas[dnet, 1, 2, 0, 1, 0, 1, u, v, 2]

net = {{0, 0, 0, 1}, {3, 0, 4, 1}, {6, 0, 0, 1},
       {2, 3, 4, 1}, {5, 3, 4, 1}, {3, 6, 0, 1}};

blo = tconvert[net, 2, 2]


 reftrig  = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};

zog = tconvert[net, 2, 2]

gnet1 =   {{0, 0, 0, 1}, {3/2, 0, 2, 1}, {3, 0, 8/3, 1}, {9/2, 0, 2, 1},
   {6, 0, 0, 1}, {1, 3/2, 2, 1}, {5/2, 3/2, 10/3, 1}, {4, 3/2, 10/3, 1},
   {11/2, 3/2, 2, 1}, {11/6, 3, 8/3, 1}, {10/3, 3, 10/3, 1},
   {29/6, 3, 8/3, 1}, {5/2, 9/2, 2, 1}, {4, 9/2, 2, 1}, {3, 6, 0, 1}}



trender[gnet1, 4, reftrig, 2, 0, 0, 0,6,0,6,0,4, 0]
sqrender[gnet1, 4, 1, 1, 0, 0, 2, 0, 0, 0,6,0,6,0,4, 0]



net = {{0, 0, -2, 1}, {0, 3, -2, 1}, {0, 3, 0, 2},
       {4, 0, -2, 1}, {4, 3, -2, 1}, {4, 0, 0, 2}};

subdiv4[net,2,3,0,4,0,3,-2,0,0]
subd2[net,2,3,-4,4,-3,3,-2,2,0]

zog = tconvert[net, 2, 0]

gnet2 =   {{0, 0, -2, 1}, {0, 3/2, -2, 1}, {0, 18/7, -10/7, 7/6}, {0, 3, -2/3, 3/2},
   {0, 3, 0, 2}, {2, 0, -2, 1}, {2, 3/2, -2, 1}, {12/7, 18/7, -10/7, 7/6},
   {4/3, 3, -2/3, 3/2}, {24/7, 0, -10/7, 7/6}, {24/7, 9/7, -10/7, 7/6},
   {3, 9/4, -1, 4/3}, {4, 0, -2/3, 3/2}, {4, 1, -2/3, 3/2}, {4, 0, 0, 2}}



trender[gnet2, 4, reftrig, 2, 0, 0, 0,4,0,3,-2,0,0]
sqrender[gnet2, 4, 1, 1, -1, -1, 2, 0, 0, -4,4,-3,3,-2,2,0]



net = {{0, 0, 0, 1}, {2, 0, 2, 1}, {4, 0, 2, 1}, {6, 0, 0, 1}, 
       {1, 2, 2, 1}, {3, 2, 5, 1}, {5, 2, 2, 1}, 
       {2, 4, 2, 1}, {4, 4, 2, 1},  {3, 6, 0, 1}};


netdd = {{0, 0, 0, 0}, {0, 0, 0, 0}, {4, 0, 2, 1}, {6, 0, 0, 1}, 
       {0, 0, 0, 0}, {3, 2, 5, 1}, {5, 2, 2, 1}, 
       {2, 4, 2, 1}, {4, 4, 2, 1},  {3, 6, 0, 1}};



netdd2 = testblow2[netdd, 3, 2, 0]


netddd =  {{6, 0, 0, 1}, {11/2, 0, 1/2, 1}, {5, 0, 1, 1}, {9/2, 0, 3/2, 1},
   {4, 0, 2, 1}, {21/4, 3/2, 3/2, 1}, {29/6, 4/3, 2, 1},
   {53/12, 7/6, 5/2, 1}, {4, 1, 3, 1}, {9/2, 3, 2, 1}, {25/6, 8/3, 5/2, 1},
   {23/6, 7/3, 3, 1}, {15/4, 9/2, 3/2, 1}, {7/2, 4, 2, 1}, {3, 6, 0, 1}}



netdd2 =   {{2, 4, 2, 1}, {5/2, 3, 7/2, 1}, {3, 2, 4, 1}, {7/2, 1, 7/2, 1},
   {4, 0, 2, 1}, {9/4, 9/2, 3/2, 1}, {17/6, 10/3, 3, 1},
   {41/12, 13/6, 7/2, 1}, {4, 1, 3, 1}, {5/2, 5, 1, 1}, {19/6, 11/3, 5/2, 1},
   {23/6, 7/3, 3, 1}, {11/4, 11/2, 1/2, 1}, {7/2, 4, 2, 1}, {3, 6, 0, 1}}


sqrender[netdd2, 4, 1, 1, 0, 0, 2, 0, 0, -0.2,6.1,-0.2,6.1,-0.2,6.1,0]
trender[netdd2, 4, reftrig, 2, 0, 0,-0.2,6.1,-0.2,6.1,-0.2,6.1,0]

sqrender[netddd, 4, 1, 1, 0, 0, 2, 0, 0, -0.2,6.1,-0.2,6.1,-0.2,6.1,0]
trender[netddd, 4, reftrig, 2, 0, 0,0,6,0,6,0,3.1,0]


(*  trying consistent rows  *)

netf = {{0, 0, 0, 0}, {0, 0, 0, 0}, {4, 0, 2, 1}, {6, 0, 0, 1}, 
       {0, 0, 0, 0}, {4, 0, 2, 1}, {5, 2, 2, 1}, 
       {4, 0, 2, 1}, {4, 4, 2, 1},  {3, 6, 0, 1}};


netf2 = {{0, 0, 0, 0}, {0, 0, 0, 0}, {4, 0, 5, 1}, {6, 0, 0, 1}, 
       {0, 0, 0, 0}, {4, 0, 5, 1}, {5, 2, 2, 1}, 
       {4, 0, 5, 1}, {4, 4, 2, 1},  {3, 6, 0, 1}};

netf6 =  {{6, 0, 0, 1}, {5, 2, 2, 1}, {4, 4, 2, 1}, {3, 6, 0, 1}, {4, 0, 5, 1},
   {4, 0, 5, 1}, {4, 0, 5, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}


netf4 = testblow2[netf2, 3, 2, 0]

netf3 =  {{6, 0, 0, 1}, {11/2, 0, 1/2, 1}, {5, 0, 1, 1}, {9/2, 0, 3/2, 1},
   {4, 0, 2, 1}, {21/4, 3/2, 3/2, 1}, {5, 1, 3/2, 1}, {19/4, 1/2, 3/2, 1},
   {9/2, 0, 3/2, 1}, {9/2, 3, 2, 1}, {9/2, 2, 2, 1}, {9/2, 1, 2, 1},
   {15/4, 9/2, 3/2, 1}, {4, 3, 2, 1}, {3, 6, 0, 1}}

netf5 =   {{4, 0, 5, 1}, {4, 0, 5, 1}, {4, 0, 5, 1}, {4, 0, 5, 1}, {4, 0, 5, 1},
   {15/4, 3/2, 15/4, 1}, {4, 1, 17/4, 1}, {17/4, 1/2, 17/4, 1},
   {9/2, 0, 15/4, 1}, {7/2, 3, 5/2, 1}, {4, 2, 7/2, 1}, {9/2, 1, 7/2, 1},
   {13/4, 9/2, 5/4, 1}, {4, 3, 11/4, 1}, {3, 6, 0, 1}}



sqrender[netf3, 4, 1, 1, 0, 0, 2, 0, 0, 0,6,0,6,0,3.1,0]

sqrender[netf6, 3, 1, 1, 0, 0, 2, 0, 0, 0,6,0,6,0,5,0]

sqrender[netf5, 4, 1, 1, 0, 0, 2, 0, 0, 0,6,0,6,0,5,0]
trender[netf5, 4, reftrig, 2, 0, 0,0,6,0,6.1,0,5,0]

netfz = {{4, 0, 5, 1}, {4, 0, 5, 1}, {4, 0, 5, 1}, {6, 0, 0, 1}, 
       {4, 0, 5, 1}, {4, 0, 5, 1}, {5, 2, 2, 1}, 
       {4, 0, 5, 1}, {4, 4, 2, 1},  {3, 6, 0, 1}};


trender[netfz, 3, reftrig, 2, 0, 0,0,6,0,6.1,0,5,0]



(* testing fzerocorner *)

netg =  {{0, 0, 0, 1}, {2, 0, 2, 1}, {4, 0, 2, 1}, {6, 0, 0, 1}, 
       {1, 2, 2, 1}, {1, 2, 2, 1}, {1, 2, 2, 1}, 
       {0, 0, 0, 0}, {0, 0, 0, 0},  {0, 0, 0, 0}};


pair = {-1, 1, {1, 2, 2, 1}}

pair = {-1}

tutu = fzerocorner[netg, pair, 3, 0]

(*  more tests on the torus   *)

zut = testblow[tornet, 4, 2, 0]

zut3 =  {{{0, 1, 0, 4}, {0, 1, -1/9, 3}, {0, 98/97, -25/97, 97/45},
    {0, 23/22, -5/11, 22/15}, {0, 8/7, -5/7, 14/15}, {0, 7/5, -1, 5/9},
    {0, 2, -1, 1/3}, {-1, 1, -1, 4/3}, {-14/19, 21/19, -15/19, 19/15},
    {-56/103, 122/103, -67/103, 103/90}, {-12/29, 36/29, -17/29, 29/30},
    {-4/11, 14/11, -7/11, 11/15}, {-1/2, 5/4, -1, 4/9},
    {-4/3, 1, -4/3, 4/5}, {-17/10, 11/10, -7/5, 2/3},
    {-142/79, 96/79, -103/79, 79/135}, {-37/25, 33/25, -1, 5/9},
    {-10/13, 18/13, -7/13, 26/45}, {-2, 1, -1, 4/5},
    {-19/10, 7/10, -1, 2/3}, {-104/43, 22/43, -55/43, 43/90},
    {-38/7, 4/7, -19/7, 7/30}, {-4, -1/3, -4/3, 4/5},
    {-30/11, 1/11, -1, 11/15}, {-36/37, -2/37, -13/37, 37/45},
    {-3, -3, -1, 4/3}, {-12, -3, -5, 1/3}, {0, -3, 0, 4}},
   {{0, 3, 0, 4}, {0, 3, -1/9, 3}, {0, 290/97, -25/97, 97/45},
    {0, 65/22, -5/11, 22/15}, {0, 20/7, -5/7, 14/15}, {0, 13/5, -1, 5/9},
    {0, 2, -1, 1/3}, {3/2, 3, 0, 8/3}, {42/31, 3, -3/31, 31/15},
    {164/139, 416/139, -31/139, 139/90}, {32/33, 98/33, -13/33, 11/10},
    {8/11, 32/11, -7/11, 11/15}, {1/2, 11/4, -1, 4/9},
    {24/7, 15/7, 0, 28/15}, {69/22, 51/22, -1/11, 22/15},
    {418/151, 378/151, -31/151, 151/135}, {85/37, 99/37, -13/37, 37/45},
    {22/13, 36/13, -7/13, 26/45}, {9/2, 0, 0, 8/5}, {9/2, 1/2, -1/9, 6/5},
    {344/79, 88/79, -19/79, 79/90}, {74/19, 34/19, -7/19, 19/30},
    {24/7, -15/7, 0, 28/15}, {78/19, -33/19, -3/19, 19/15},
    {180/37, -38/37, -13/37, 37/45}, {3/2, -3, 0, 8/3},
    {12/5, -3, -1/5, 5/3}, {0, -3, 0, 4}}}


zut3 =   {{{0, -2, -1, 1/3}, {-1, -2, -1, 2/9}, {-16/7, -10/7, -1, 7/45},
    {-3, 0, -1, 2/15}, {-16/7, 10/7, -1, 7/45}, {-1, 2, -1, 2/9},
    {0, 2, -1, 1/3}, {0, -13/5, -1, 5/9}, {-3/2, -35/16, -1, 16/45},
    {-31/11, -1, -1, 11/45}, {-27/10, 7/10, -1, 2/9},
    {-18/13, 19/13, -1, 13/45}, {-1/2, 5/4, -1, 4/9},
    {0, -20/7, -5/7, 14/15}, {-32/13, -30/13, -17/13, 13/30},
    {-59/26, -15/26, -10/13, 52/135}, {-80/23, 18/23, -35/23, 23/90},
    {-10/13, 18/13, -7/13, 26/45}, {0, -65/22, -5/11, 22/15},
    {-4, -100/41, -77/41, 41/90}, {-41/26, -7/26, -7/13, 26/45},
    {-38/7, 4/7, -19/7, 7/30}, {0, -290/97, -25/97, 97/45},
    {-126/19, -50/19, -55/19, 19/45}, {-36/37, -2/37, -13/37, 37/45},
    {0, -3, -1/9, 3}, {-12, -3, -5, 1/3}, {0, -3, 0, 4}},
   {{0, -2, -1, 1/3}, {1, -2, -1, 2/9}, {16/7, -10/7, -1, 7/45},
    {3, 0, -1, 2/15}, {16/7, 10/7, -1, 7/45}, {1, 2, -1, 2/9},
    {0, 2, -1, 1/3}, {0, -13/5, -1, 5/9}, {3/2, -41/16, -1, 16/45},
    {37/11, -17/11, -1, 11/45}, {39/10, 7/10, -1, 2/9},
    {30/13, 31/13, -1, 13/45}, {1/2, 11/4, -1, 4/9}, {0, -20/7, -5/7, 14/15},
    {32/17, -48/17, -13/17, 17/30}, {107/26, -18/13, -10/13, 52/135},
    {4, 48/35, -23/35, 7/18}, {22/13, 36/13, -7/13, 26/45},
    {0, -65/22, -5/11, 22/15}, {164/77, -226/77, -41/77, 77/90},
    {119/26, -31/26, -7/13, 26/45}, {74/19, 34/19, -7/19, 19/30},
    {0, -290/97, -25/97, 97/45}, {126/55, -164/55, -19/55, 11/9},
    {180/37, -38/37, -13/37, 37/45}, {0, -3, -1/9, 3}, {12/5, -3, -1/5, 5/3},
    {0, -3, 0, 4}}}


sqrender[zut3[[1]], 6, 1, 1, 0, 0, 2, 0, 0, -3.1,3.1,-3.1,3.1,-2.1,2.1,0]
sqrender[zut3[[2]], 6, 1, 1, 0, 0, 2, 0, 0, -3.1,3.1,-3.1,3.1,-2.1,2.1,0]


bzut = testblow3[tornet, 4, 2, 0]


bzutt =  {{{0, -2, -1, 1/3}, {-2, -2, -1, 1/6}, {-4, 0, -1, 1/9}, {-2, 2, -1, 1/6},
    {0, 2, -1, 1/3}, {0, -3, -1, 1}, {-3, -2, -1, 1/2}, {-4, 1, -1, 1/3},
    {-1, 2, -1, 1/2}, {0, 1, -1, 1}, {0, -3, 0, 4}, {-6, 0, -2, 0},
    {0, 1, 0, 4/3}, {-2, 0, -2, 0}, {0, 1, 0, 4}},
   {{0, -2, -1, 1/3}, {2, -2, -1, 1/6}, {4, 0, -1, 1/9}, {2, 2, -1, 1/6},
    {0, 2, -1, 1/3}, {0, -3, -1, 1}, {3, -3, -1, 1/2}, {6, 0, -1, 1/3},
    {3, 3, -1, 1/2}, {0, 3, -1, 1}, {0, -3, 0, 4}, {3, -3, 0, 2},
    {6, 0, 0, 4/3}, {3, 3, 0, 2}, {0, 3, 0, 4}}}


bzut1 =  {{0, -2, -1, 1/3}, {-2, -2, -1, 1/6}, {-4, 0, -1, 1/9}, {-2, 2, -1, 1/6},
    {0, 2, -1, 1/3}, {0, -3, -1, 1}, {-3, -2, -1, 1/2}, {-4, 1, -1, 1/3},
    {-1, 2, -1, 1/2}, {0, 1, -1, 1}, {0, -3, 0, 4}, {-6, 0, -2, 0},
    {0, 1, 0, 4/3}, {-2, 0, -2, 0}, {0, 1, 0, 4}}

bzut2 =   {{0, -2, -1, 1/3}, {2, -2, -1, 1/6}, {4, 0, -1, 1/9}, {2, 2, -1, 1/6},
    {0, 2, -1, 1/3}, {0, -3, -1, 1}, {3, -3, -1, 1/2}, {6, 0, -1, 1/3},
    {3, 3, -1, 1/2}, {0, 3, -1, 1}, {0, -3, 0, 4}, {3, -3, 0, 2},
    {6, 0, 0, 4/3}, {3, 3, 0, 2}, {0, 3, 0, 4}}


  recrender[bzut1,2,4,2,0,1, -3.1,3.1,-3.1,3.1,-2.1,2.1,0]
  recrender[bzut1,2,4,3,0,0, -3.1,3.1,-3.1,3.1,-2.1,2.1,0]
  recrender[bzut1,2,4,1,0,0, -3.1,3.1,-3.1,3.1,-2.1,2.1,2]
  recrender[bzut2,2,4,3,0,0, -3.1,3.1,-3.1,3.1,-2.1,2.1,0]



sqrender[tornet,4,1,1,-1,-1,3,0,0,-0.01,3.01,-3.01,3.01,-0.01,1.01,0]  (* nice  *)
sqrender[tornet,4,1,1,-1,-1,3,1,0,-0.1,3.1,-3.1,3.1,-0.1,1.1,0]  (* lite  *)
render1[tornet,4,3,0,0,0,2.01,0,2.01,0,1.01,0]  

render[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   (* good)
render[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   (* lite *)
render[tornet,4,1,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   (* lite *)

render3[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]  
render3[tornet,4,2,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]  
render3[tornet,4,1,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,-1]   (* lite *)
render3[tornet,4,2,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,-1]   (* lite *)
render3[tornet,4,2,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,-2]   (* lite *)
render3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,1]   (* lite *)
render3[tornet,4,4,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,-2]   (* lite *)
render3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,-1]   (* lite *)
render3[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]
render3[tornet,4,4,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,-1]
render3[tornet,4,1,1,0,-3.5,3.5,-3.5,3.5,-2.5,2.5,1]   (* lite *)
render4[tornet,4,1,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,-1]   (* lite *)
render4[tornet,4,2,0,0,-3.5,3.5,-3.5,3.5,-2.5,2.5,0]  
render5[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   (* lite *)
render5[tornet,4,2,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,1]   (* lite *)
render5[tornet,4,2,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0] 
render6[tornet,4,2,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,-1]   (* lite *)
render6[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]  
render34[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]

(************)
render3[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   (* good *)
render4[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   (* good *)
render34[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]  (* good *)
render56[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]  (* good *)
render3to6[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0] (* good *)
(***********)

render34[tornet,4,4,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]
render34[tornet,4,2,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   (* lite *)
render34[tornet,4,2,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   

render56[tornet,4,2,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0] 
render56[tornet,4,2,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,1]   (* lite *)
render3to6[tornet,4,2,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]   (* lite *)


srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.5,0.5]   (* lite *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.4,0.4]   (* lite *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.05,0.01]   (* lite *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,1,0.01,0.01]   (* lite *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0,0]   (* lite *)
srender3[tornet,4,1,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0,0]   (* lite *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.02,0.02]   (* lite *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.005,0.005]   (* lite *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.0001,0.0001]   (* better *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.00001,0.00001]   (* better *)
srender3[tornet,4,4,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.00001,0.00001]   (* better *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.000008,0.000008]  (* better *)
srender3[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.000008,0.000008] (* nice *) 
srender3[tornet,4,1,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.000008,0.000008]  
srender3[tornet,4,4,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.000008,0.000008]   (* nice *) 

srender3[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.000008,0.000008] (* nice *) 
srender34[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.000008,0.000008] 
srender34[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.000008,0.000008] 
srender34[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.001,0.001] 
srender34[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.0001,0.0001] 
srender34[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.01,0.01] 
srender34[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.05,0.05] 
srender34[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0,0] 

srender56[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0,0] 
srender56[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.1,0.1] 

srender3to6[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.000001,0.000001] 
srender3to6[tornet,4,3,1,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.0001,0.0001] 
srender3to6[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0,0] 
srender3to6[tornet,4,3,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0,0.1,0.1] 

lrender[tornet,4,5,2,-3.1,3.1,-3.1,3.1,-2.1,2.1,0]

lfrender[tornet,4,5,1,-3.1,3.1,-3.1,3.1,-2.1,2.1,0] (* interesting *)
lfrender[tornet,4,5,4,-3.1,3.1,-3.1,3.1,-2.1,2.1,0] 

 runblow[tornet, 4, 6, 1, 1, 0, -3.1,3.1,-3.1,3.1,-2.1,2.1,-2] 
 runblow[tornet, 4, 6, 2, 0, 0, -3.1,3.1,-3.1,3.1,-2.1,2.1,-2] 
 runblow[tornet, 4, 6, 2, 1, 0, -3.1,3.1,-3.1,3.1,-2.1,2.1,-2] 
 runblow3[tornet, 4, 6, 2, 0, 0, -3.1,3.1,-3.1,3.1,-2.1,2.1,0] 


reftrig  = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
trender[fixnet,6,reftrig,2,0,0,-3.1,3.1,-3.1,3.1,-2.1,2.1,0] 


 aa = 2; bb = 1; cc = 1;


 tor2x[u_, v_] = (aa*(u^2 + 1) - 2*bb*u)*(u^2 - v^2)/((u^2 + v^2)*(u^2 + 1));

 tor2y[u_, v_] = 2*u*v*(aa*(u^2 + 1) - 2*bb*u)/((u^2 + v^2)*(u^2 + 1));

 tor2z[u_, v_] = cc*(u^2 - 1)/(u^2 + 1);



 tor2 := 
 ParametricPlot3D[{tor2x[u, v], tor2y[u, v], tor2z[u, v]},  
                          {u, -1, 1}, {v, -1, 1},
                          DisplayFunction -> Identity];                    


 viewtor2[lx_, mx_, ly_, my_, lz_, mz_] := 
         Show[tor2,
              PlotRange -> {{lx, mx}, {ly, my}, {lz, mz}},
              Axes -> True,
              AxesLabel -> {"x", "y", "z"},
              DisplayFunction -> $DisplayFunction];


 tor3x[u_, v_] = (aa*(u^2 + v^2) - 2*bb*u*v)*(v^2 -1)/((u^2 + v^2)*(v^2 + 1));

 tor3y[u_, v_] = 2*v*(aa*(u^2 + v^2) - 2*bb*u*v)/((u^2 + v^2)*(v^2 + 1));

 tor3z[u_, v_] = cc*(v^2 - u^2)/(u^2 + v^2);



 tor3 := 
 ParametricPlot3D[{tor3x[u, v], tor3y[u, v], tor3z[u, v]},  
                          {u, -1, 1}, {v, -1, 1},
                          DisplayFunction -> Identity];                    


 viewtor3[lx_, mx_, ly_, my_, lz_, mz_] := 
         Show[tor3,
              PlotRange -> {{lx, mx}, {ly, my}, {lz, mz}},
              Axes -> True,
              AxesLabel -> {"x", "y", "z"},
              DisplayFunction -> $DisplayFunction];



 btor2x[u_, v_] = (aa*(u^2*(1 - v)^2 + 1) - 2*bb*u(1 - v))*(1 - 2*v)/
                  (((1 - v)^2 + v^2)*(u^2*(1 - v)^2 + 1));

 btor2y[u_, v_] = 2*(1 - v)*v*(aa*(u^2*(1 - v)^2 + 1) - 2*bb*u(1 - v))/
                  (((1 - v)^2 + v^2)*(u^2*(1 - v)^2 + 1));

 btor2z[u_, v_] = cc*(u^2*(1 - v)^2 - 1)/(u^2*(1 - v)^2 + 1);


 btor2 := 
 ParametricPlot3D[{btor2x[u, v], btor2y[u, v], btor2z[u, v]},  
                          {u, -2, 2}, {v, 0, 1},
                          DisplayFunction -> Identity];                    


 btor2 := 
 ParametricPlot3D[{btor2x[u, v], btor2y[u, v], btor2z[u, v]},  
                          {u, -2, 2}, {v, -2, 2},
                          DisplayFunction -> Identity];                    


 viewbtor2[lx_, mx_, ly_, my_, lz_, mz_] := 
         Show[btor2,
              PlotRange -> {{lx, mx}, {ly, my}, {lz, mz}},
              Axes -> True,
              AxesLabel -> {"x", "y", "z"},
              DisplayFunction -> $DisplayFunction];



viewtor2[-3.1,3.1,-3.1,3.1,-2.1,2.1]
viewtor3[-3.1,3.1,-3.1,3.1,-2.1,2.1]
viewbtor2[-3.1,3.1,-3.1,3.1,-2.1,2.1]




(* Elliptic Torus , degree 8  (in terms of tan theta/4 tan fi/4             *)


poly1  = (aa * (1 + v^2)^2 - 4 * bb * v * (1 - v^2)) * (u^4 - 6 * u^2 + 1);

poly2  = 4 * u * (1 - u^2) * (aa * (1 + v^2)^2 - 4 * bb * v * (1 - v^2));

poly3  = cc *  (v^4 - 6 * v^2 + 1) * (1 + u^2)^2;

poly4 = (1 + u^2)^2 * (1 + v^2)^2;

pp1 = Expand[poly1];  p1 = InputForm[pp1];

p1 =   aa - 6*aa*u^2 + aa*u^4 - 4*bb*v + 24*bb*u^2*v - 4*bb*u^4*v + 2*aa*v^2 - 
   12*aa*u^2*v^2 + 2*aa*u^4*v^2 + 4*bb*v^3 - 24*bb*u^2*v^3 + 4*bb*u^4*v^3 + 
   aa*v^4 - 6*aa*u^2*v^4 + aa*u^4*v^4

pp2 = Expand[poly2];  p2 = InputForm[pp2];

p2 =   4*aa*u - 4*aa*u^3 - 16*bb*u*v + 16*bb*u^3*v + 8*aa*u*v^2 - 8*aa*u^3*v^2 + 
   16*bb*u*v^3 - 16*bb*u^3*v^3 + 4*aa*u*v^4 - 4*aa*u^3*v^4

pp3 = Expand[poly3];  p3 = InputForm[pp3];

p3 =   cc + 2*cc*u^2 + cc*u^4 - 6*cc*v^2 - 12*cc*u^2*v^2 - 6*cc*u^4*v^2 + cc*v^4 + 
   2*cc*u^2*v^4 + cc*u^4*v^4

pp4 = Expand[poly4];  p4 = InputForm[pp4];

p4 =   1 + 2*u^2 + u^4 + 2*v^2 + 4*u^2*v^2 + 2*u^4*v^2 + v^4 + 2*u^2*v^4 + u^4*v^4


poly  =  {{{aa, 0, 0}, {-6*aa, 2, 0}, {aa, 4, 0}, {-4*bb, 0, 1}, {24*bb, 2, 1},
           {-4*bb, 4, 1}, {2*aa, 0, 2}, {-12*aa, 2, 2}, {2*aa, 4, 2},
           {4*bb, 0, 3}, {-24*bb, 2, 3}, {4*bb, 4, 3}, {aa, 0, 4},
           {-6*aa, 2, 4}, {aa, 4, 4}},
          {{4*aa, 1, 0}, {-4*aa, 3, 0}, {-16*bb, 1, 1}, {16*bb, 3, 1}, 
           {8*aa, 1, 2}, {-8*aa, 3, 2}, {16*bb, 1, 3}, {-16*bb, 3, 3},
           {4*aa, 1, 4}, {-4*aa, 3, 4}},
          {{cc, 0, 0}, {2*cc, 2, 0}, {cc, 4, 0}, {-6*cc, 0, 2}, {-12*cc, 2, 2},
           {-6*cc, 4, 2}, {cc, 0, 4}, {2*cc, 2, 4}, {cc, 4, 4}},
          {{1, 0, 0}, {2, 2, 0}, {1, 4, 0}, {2, 0, 2}, {4, 2, 2},
           {2, 4, 2}, {1, 0, 4}, {2, 2, 4}, {1, 4, 4}}};

tornet2 = contnet[poly, 8]

(*  This is the master control net for  an elliptic torus  depending      *) 
(*  on aa, bb, and cc.  The numbers bb and cc specify the axes of the     *)
(*  ellipse  revolving around the z axis, and  aa is the radius of the    *)
(* circle  on which the center of the revolving ellipse is located        *)
(* Note: for aa <= bb or aa <= cc, the torus is self intersecting         *)


nettorus =   {{aa, 0, cc, 1}, {aa - bb/2, 0, cc, 1}, 
   {(14*((15*aa)/14 - bb))/15, 0, (11*cc)/15, 15/14}, 
   {(14*((17*aa)/14 - (10*bb)/7))/17, 0, (5*cc)/17, 17/14}, 
   {(70*((101*aa)/70 - (12*bb)/7))/101, 0, (-19*cc)/101, 101/70}, 
   {(14*((25*aa)/14 - (25*bb)/14))/25, 0, (-3*cc)/5, 25/14}, 
   {(7*((16*aa)/7 - (11*bb)/7))/16, 0, (-7*cc)/8, 16/7}, 
   {(3*aa - bb)/3, 0, -cc, 3}, {aa, 0, -cc, 4}, {aa, aa/2, cc, 1}, 
   {aa - bb/2, aa/2 - (2*bb)/7, cc, 1}, 
   {(14*((15*aa)/14 - bb))/15, (14*((23*aa)/42 - (4*bb)/7))/15, (11*cc)/15, 
    15/14}, {(14*((17*aa)/14 - (10*bb)/7))/17, 
    (14*((9*aa)/14 - (4*bb)/5))/17, (5*cc)/17, 17/14}, 
   {(70*((101*aa)/70 - (12*bb)/7))/101, (70*((4*aa)/5 - (32*bb)/35))/101, 
    (-19*cc)/101, 101/70}, {(14*((25*aa)/14 - (25*bb)/14))/25, 
    (14*((22*aa)/21 - (6*bb)/7))/25, (-3*cc)/5, 25/14}, 
   {(7*((16*aa)/7 - (11*bb)/7))/16, (7*((10*aa)/7 - (4*bb)/7))/16, 
    (-7*cc)/8, 16/7}, {(3*aa - bb)/3, (2*aa)/3, -cc, 3}, 
   {(11*aa)/15, (14*aa)/15, cc, 15/14}, 
   {(14*((11*aa)/14 - (5*bb)/14))/15, (14*(aa - (4*bb)/7))/15, cc, 15/14}, 
   {(105*((29*aa)/35 - (5*bb)/7))/121, (105*((23*aa)/21 - (8*bb)/7))/121, 
    (87*cc)/121, 121/105}, {(35*((32*aa)/35 - (73*bb)/70))/46, 
    (35*((9*aa)/7 - (8*bb)/5))/46, (6*cc)/23, 46/35}, 
   {(210*((73*aa)/70 - (46*bb)/35))/331, (210*((8*aa)/5 - (64*bb)/35))/331, 
    (-77*cc)/331, 331/210}, {(42*((17*aa)/14 - (3*bb)/2))/83, 
    (42*((44*aa)/21 - (12*bb)/7))/83, (-53*cc)/83, 83/42}, 
   {(7*((10*aa)/7 - (11*bb)/7))/18, (7*((20*aa)/7 - (8*bb)/7))/18, 
    (-8*cc)/9, 18/7}, {(5*aa)/17, (20*aa)/17, cc, 17/14}, 
   {(14*((5*aa)/14 - bb/14))/17, (14*((10*aa)/7 - (4*bb)/5))/17, cc, 17/14}, 
   {(35*((12*aa)/35 - bb/7))/46, (35*((109*aa)/70 - (8*bb)/5))/46, 
    (16*cc)/23, 46/35}, {(35*((11*aa)/35 - (19*bb)/70))/53, 
    (35*((127*aa)/70 - (79*bb)/35))/53, (11*cc)/53, 53/35}, 
   {(70*((17*aa)/70 - (18*bb)/35))/129, (70*((78*aa)/35 - (92*bb)/35))/129, 
    (-13*cc)/43, 129/70}, {(14*(aa/14 - (13*bb)/14))/33, 
    (14*((20*aa)/7 - (18*bb)/7))/33, (-23*cc)/33, 33/14}, 
   {(-19*aa)/101, (120*aa)/101, cc, 101/70}, 
   {(70*((-19*aa)/70 + (12*bb)/35))/101, (70*((12*aa)/7 - (32*bb)/35))/101, 
    cc, 101/70}, {(210*((-11*aa)/30 + (24*bb)/35))/331, 
    (210*((194*aa)/105 - (64*bb)/35))/331, (219*cc)/331, 331/210}, 
   {(70*((-39*aa)/70 + (6*bb)/7))/129, (70*((74*aa)/35 - (92*bb)/35))/129, 
    (17*cc)/129, 129/70}, {(10*((-9*aa)/10 + (24*bb)/35))/23, 
    (10*((88*aa)/35 - (16*bb)/5))/23, (-9*cc)/23, 23/10}, 
   {(-3*aa)/5, aa, cc, 25/14}, {(14*((-15*aa)/14 + (6*bb)/7))/25, 
    (14*((25*aa)/14 - (6*bb)/7))/25, cc, 25/14}, 
   {(42*((-53*aa)/42 + (12*bb)/7))/83, (42*((79*aa)/42 - (12*bb)/7))/83, 
    (51*cc)/83, 83/42}, {(14*((-23*aa)/14 + (16*bb)/7))/33, 
    (14*((29*aa)/14 - (18*bb)/7))/33, cc/33, 33/14}, 
   {(-7*aa)/8, (11*aa)/16, cc, 16/7}, 
   {(7*(-2*aa + (10*bb)/7))/16, (7*((11*aa)/7 - (4*bb)/7))/16, cc, 16/7}, 
   {(7*((-16*aa)/7 + (20*bb)/7))/18, (7*((11*aa)/7 - (8*bb)/7))/18, 
    (5*cc)/9, 18/7}, {-aa, aa/3, cc, 3}, {(-3*aa + 2*bb)/3, aa/3, cc, 3}, 
   {-aa, 0, cc, 4}};

(* Control net for a torus with aa = 2, bb = 1, cc = 1                        *) 

aa = 2; bb = 1;  cc = 1;

tornet =  {{2, 0, 1, 1}, {3/2, 0, 1, 1}, {16/15, 0, 11/15, 15/14}, 
   {14/17, 0, 5/17, 17/14}, {82/101, 0, -19/101, 101/70}, 
   {1, 0, -3/5, 25/14}, {21/16, 0, -7/8, 16/7}, {5/3, 0, -1, 3}, 
   {2, 0, -1, 4}, {2, 1, 1, 1}, {3/2, 5/7, 1, 1}, 
   {16/15, 22/45, 11/15, 15/14}, {14/17, 2/5, 5/17, 17/14}, 
   {82/101, 48/101, -19/101, 101/70}, {1, 52/75, -3/5, 25/14}, 
   {21/16, 1, -7/8, 16/7}, {5/3, 4/3, -1, 3}, {22/15, 28/15, 1, 15/14}, 
   {17/15, 4/3, 1, 15/14}, {9/11, 10/11, 87/121, 121/105}, 
   {55/92, 17/23, 6/23, 46/35}, {162/331, 288/331, -77/331, 331/210}, 
   {39/83, 104/83, -53/83, 83/42}, {1/2, 16/9, -8/9, 18/7}, 
   {10/17, 40/17, 1, 17/14}, {9/17, 144/85, 1, 17/14}, 
   {19/46, 53/46, 16/23, 46/35}, {25/106, 48/53, 11/53, 53/35}, 
   {-2/129, 128/129, -13/43, 129/70}, {-1/3, 4/3, -23/33, 33/14}, 
   {-38/101, 240/101, 1, 101/70}, {-14/101, 176/101, 1, 101/70}, 
   {-10/331, 392/331, 219/331, 331/210}, {-6/43, 112/129, 17/129, 129/70}, 
   {-78/161, 128/161, -9/23, 23/10}, {-6/5, 2, 1, 25/14}, 
   {-18/25, 38/25, 1, 25/14}, {-34/83, 86/83, 51/83, 83/42}, 
   {-14/33, 2/3, 1/33, 33/14}, {-7/4, 11/8, 1, 16/7}, {-9/8, 9/8, 1, 16/7}, 
   {-2/3, 7/9, 5/9, 18/7}, {-2, 2/3, 1, 3}, {-4/3, 2/3, 1, 3}, {-2, 0, 1, 4}};



sqrender[tornet,8,1,1,-1,-1,2,0,0,-3.2,3.2,-3.2,3.2,-1.1,1.1,0]  (* great *)
sqrender[tornet,8,1,1,-1,-1,2,1,0,-3.2,3.2,-3.2,3.2,-1.1,1.1,0]  (* lite *)
sqfractal[tornet,8,1,1,-1,-1,3,0,0,-3.2,3.2,-3.2,3.2,-1.1,1.1]  (* very cute *)

reftrig1 = {{-1, 1, 1}, {-1, -1, 3}, {1, 1, -1}};
reftrig2 = {{1, -1, 1}, {1, 1, -1}, {-1, -1, 3}};
trender[tornet,8,reftrig1,2,1,0,-3.2,3.2,-3.2,3.2,-1.1,1.1,0]  (* lite *)
trender[tornet,8,reftrig1,1,1,0,-4,4,-4,4,-3,3,0]  (* lite *)
trender[tornet,8,reftrig1,2,1,1,-4,4,-4,4,-3,3,0]  (* lite *)
trender[tornet,8,reftrig1,2,1,0,-4,4,-4,4,-3,3,0] 


(* Control net for a torus with aa = 1/2, bb = 1, cc = 1                *) 
(*  this torus intersects itself                   *)

aa = 1/2; bb = 1;  cc = 1

tornet2=   {{1/2, 0, 1, 1}, {0, 0, 1, 1}, {-13/30, 0, 11/15, 15/14}, 
   {-23/34, 0, 5/17, 17/14}, {-139/202, 0, -19/101, 101/70}, 
   {-1/2, 0, -3/5, 25/14}, {-3/16, 0, -7/8, 16/7}, {1/6, 0, -1, 3}, 
   {1/2, 0, -1, 4}, {1/2, 1/4, 1, 1}, {0, -1/28, 1, 1}, 
   {-13/30, -5/18, 11/15, 15/14}, {-23/34, -67/170, 5/17, 17/14}, 
   {-139/202, -36/101, -19/101, 101/70}, {-1/2, -14/75, -3/5, 25/14}, 
   {-3/16, 1/16, -7/8, 16/7}, {1/6, 1/3, -1, 3}, {11/30, 7/15, 1, 15/14}, 
   {1/30, -1/15, 1, 15/14}, {-63/242, -125/242, 87/121, 121/105}, 
   {-41/92, -67/92, 6/23, 46/35}, {-333/662, -216/331, -77/331, 331/210}, 
   {-75/166, -28/83, -53/83, 83/42}, {-1/3, 1/9, -8/9, 18/7}, 
   {5/34, 10/17, 1, 17/14}, {3/34, -6/85, 1, 17/14}, 
   {1/46, -5/8, 16/23, 46/35}, {-4/53, -189/212, 11/53, 53/35}, 
   {-55/258, -106/129, -13/43, 129/70}, {-25/66, -16/33, -23/33, 33/14}, 
   {-19/202, 60/101, 1, 101/70}, {29/202, -4/101, 1, 101/70}, 
   {211/662, -190/331, 219/331, 331/210}, {27/86, -110/129, 17/129, 129/70}, 
   {33/322, -136/161, -9/23, 23/10}, {-3/10, 1/2, 1, 25/14}, 
   {9/50, 1/50, 1, 25/14}, {91/166, -65/166, 51/83, 83/42}, 
   {41/66, -43/66, 1/33, 33/14}, {-7/16, 11/32, 1, 16/7}, 
   {3/16, 3/32, 1, 16/7}, {2/3, -5/36, 5/9, 18/7}, {-1/2, 1/6, 1, 3}, 
   {1/6, 1/6, 1, 3}, {-1/2, 0, 1, 4}};


sqrender[tornet2,8,1,1,-1,-1,2,0,0,-1.7,1.7,-1.7,1.7,-1.1,1.1,0]  (* great *)


(* Control net for an elliptic torus with aa = 2, bb = 1/2, cc = 1            *) 

aa = 2; bb = 1/2; cc = 1;  

tornet3 =    {{2, 0, 1, 1}, {7/4, 0, 1, 1}, {23/15, 0, 11/15, 15/14}, 
   {24/17, 0, 5/17, 17/14}, {142/101, 0, -19/101, 101/70}, 
   {3/2, 0, -3/5, 25/14}, {53/32, 0, -7/8, 16/7}, {11/6, 0, -1, 3}, 
   {2, 0, -1, 4}, {2, 1, 1, 1}, {7/4, 6/7, 1, 1}, 
   {23/15, 34/45, 11/15, 15/14}, {24/17, 62/85, 5/17, 17/14}, 
   {142/101, 80/101, -19/101, 101/70}, {3/2, 14/15, -3/5, 25/14}, 
   {53/32, 9/8, -7/8, 16/7}, {11/6, 4/3, -1, 3}, {22/15, 28/15, 1, 15/14}, 
   {13/10, 8/5, 1, 15/14}, {273/242, 170/121, 87/121, 121/105}, 
   {183/184, 31/23, 6/23, 46/35}, {300/331, 480/331, -77/331, 331/210}, 
   {141/166, 140/83, -53/83, 83/42}, {29/36, 2, -8/9, 18/7}, 
   {10/17, 40/17, 1, 17/14}, {19/34, 172/85, 1, 17/14}, 
   {43/92, 81/46, 16/23, 46/35}, {69/212, 175/106, 11/53, 53/35}, 
   {16/129, 220/129, -13/43, 129/70}, {-3/22, 62/33, -23/33, 33/14}, 
   {-38/101, 240/101, 1, 101/70}, {-26/101, 208/101, 1, 101/70}, 
   {-82/331, 584/331, 219/331, 331/210}, {-16/43, 68/43, 17/129, 129/70}, 
   {-102/161, 240/161, -9/23, 23/10}, {-6/5, 2, 1, 25/14}, 
   {-24/25, 44/25, 1, 25/14}, {-70/83, 122/83, 51/83, 83/42}, 
   {-10/11, 40/33, 1/33, 33/14}, {-7/4, 11/8, 1, 16/7}, 
   {-23/16, 5/4, 1, 16/7}, {-11/9, 1, 5/9, 18/7}, {-2, 2/3, 1, 3}, 
   {-5/3, 2/3, 1, 3}, {-2, 0, 1, 4}}


render1[tornet3,8,2,0,0,-2.6,2.6,-2.6,2.6,-1.1,1.1,0] 
sqrender[tornet3,8,1,1,-1,-1,2,0,0,-2.6,2.6,-2.6,2.6,-1.1,1.1,0] (* great  *)
sqrender[tornet3,8,1,1,-1,-1,3,0,0,-2.6,2.6,-2.6,2.6,-1.1,1.1,0] (* great  *)
trender[tornet3,8,reftrig1,2,0,0,-3.2,3.2,-3.2,3.2,-1.1,1.1,0]  


(* Moebius strip  , degree 7                 *)

poly = {{{2, 0, 0}, {-10, 2, 0}, {-10, 4, 0}, {2, 6, 0}, {2, 1, 1},
         {-12, 3, 1}, {2, 5, 1}},
        {{8, 1, 0}, {-8, 5, 0}, {8, 2, 1}, {-8, 4, 1}},
        {{1, 0, 1}, {1, 2, 1}, {-1, 4, 1}, {-1, 6, 1}},
        {{1, 0, 0}, {3, 2, 0}, {3, 4, 0}, {1, 6, 0}}};

net = contnet[poly, 7]; mobnet = InputForm[net];

mobnet =  {{2, 0, 0, 1}, {2, 0, 1/7, 1}, {2, 0, 2/7, 1}, {2, 0, 3/7, 1}, 
   {2, 0, 4/7, 1}, {2, 0, 5/7, 1}, {2, 0, 6/7, 1}, {2, 0, 1, 1}, 
   {2, 8/7, 0, 1}, {43/21, 8/7, 1/7, 1}, {44/21, 8/7, 2/7, 1}, 
   {15/7, 8/7, 3/7, 1}, {46/21, 8/7, 4/7, 1}, {47/21, 8/7, 5/7, 1}, 
   {16/7, 8/7, 6/7, 1}, {4/3, 2, 0, 8/7}, {17/12, 31/15, 2/15, 8/7}, 
   {3/2, 32/15, 4/15, 8/7}, {19/12, 11/5, 2/5, 8/7}, {5/3, 34/15, 8/15, 8/7}, 
   {7/4, 7/3, 2/3, 8/7}, {2/5, 12/5, 0, 10/7}, {11/25, 64/25, 3/25, 10/7}, 
   {12/25, 68/25, 6/25, 10/7}, {13/25, 72/25, 9/25, 10/7}, 
   {14/25, 76/25, 12/25, 10/7}, {-10/17, 40/17, 0, 68/35}, 
   {-2/3, 130/51, 5/51, 68/35}, {-38/51, 140/51, 10/51, 68/35}, 
   {-14/17, 50/17, 5/17, 68/35}, {-22/15, 28/15, 0, 20/7}, 
   {-5/3, 2, 1/15, 20/7}, {-28/15, 32/15, 2/15, 20/7}, {-2, 1, 0, 32/7}, 
   {-9/4, 1, 0, 32/7}, {-2, 0, 0, 8}};


sqrender[mobnet,7,1,1,-1,-1,2,0,0,-3.2,3.2,-3.2,3.2,-2.2,2.2,0]
sqrender[mobnet,7,1,1,-1,-1,2,0,0,-3.1,3,-3,3,-2.2,2.2,0] (*  gorgeous *)
sqrender[mobnet,7,1,1,-1,-1,2,2,0,-3.1,3,-3,3,-2.2,2.2,0] (*  in/outside colors *)
sqrender[mobnet,7,1,1,-1,-1,2,4,0,-3.1,3,-3,3,-2.2,2.2,0] (*  4 colors *)
sqfractal[mobnet,7,1,1,-1,-1,2,0,0,-3.1,3,-3,3,-2.2,2.2] 
sqfractal[mobnet,7,1,1,-1,-1,3,1,0,-3.1,3,-3,3,-2.2,2.2] (* lite! *)
sqfractal[mobnet,7,1,1,-1,-1,3,0,0,-3.1,3,-3.1,3.1,-2.2,2.2] (* cute *)
  trender[mobnet,7,reftrig1,2,0,0,-3.2,3.2,-3.2,3.2,-2.2,2.2,0]  
  trender[mobnet,7,reftrig1,2,4,0,-3.2,3.2,-3.2,3.2,-2.2,2.2,0]  
  trender[mobnet,7,reftrig1,2,2,0,-3.2,3.2,-3.2,3.2,-2.2,2.2,0]  
  trender[mobnet,7,reftrig2,2,2,0,-3.2,3.2,-3.2,3.2,-2.2,2.2,0]  


(* Moebius strip, rectangular, degree (6, 1)                 *)

poly = {{{2, 0, 0}, {-10, 2, 0}, {-10, 4, 0}, {2, 6, 0}, {2, 1, 1},
         {-12, 3, 1}, {2, 5, 1}},
        {{8, 1, 0}, {-8, 5, 0}, {8, 2, 1}, {-8, 4, 1}},
        {{1, 0, 1}, {1, 2, 1}, {-1, 4, 1}, {-1, 6, 1}},
        {{1, 0, 0}, {3, 2, 0}, {3, 4, 0}, {1, 6, 0}}};


rmobnet2 = gbicontnet[poly, 6,1, -1, 1, -1, 1]; 
recmobnet2 = InputForm[rmobnet2];

 recmobnet2 =  {{-3, 0, 0, 8}, {-1, 0, 0, 8}, {0, -16, -8/3, 0}, {0, -16/3, 8/3, 0},
   {17/3, 0, 0, 8/5}, {1, 0, 0, 8/5}, {0, 16/5, -8/5, 0}, {0, -16/5, 8/5, 0},
   {1, 0, 0, 8/5}, {17/3, 0, 0, 8/5}, {0, 16/3, -8/3, 0}, {0, 16, 8/3, 0},
   {-1, 0, 0, 8}, {-3, 0, 0, 8}}


polmob = bipolarizesurf[poly, 6, 1]
rmobnet = bicontnet[poly, 6,1]; recmobnet = InputForm[rmobnet];

recmobnet = {{2, 0, 0, 1}, {2, 0, 1, 1}, {2, 4/3, 0, 1}, {7/3, 4/3, 1, 1},
   {10/9, 20/9, 0, 6/5}, {5/3, 8/3, 8/9, 6/5}, {0, 5/2, 0, 8/5},
   {1/4, 7/2, 3/4, 8/5}, {-10/9, 20/9, 0, 12/5}, {-14/9, 10/3, 5/9, 12/5},
   {-2, 4/3, 0, 4}, {-3, 2, 1/3, 4}, {-2, 0, 0, 8}, {-3, 0, 0, 8}}


 recmob4 = newrecnet[recmobnet, 6, 1, -1, 1, -1, 1, 2]
 recmob5 = InputForm[recmob4]

 recmobnet2 =  {{-3, 0, 0, 8}, {-1, 0, 0, 8}, {0, -16, -8/3, 0}, {0, -16/3, 8/3, 0},
   {17/3, 0, 0, 8/5}, {1, 0, 0, 8/5}, {0, 16/5, -8/5, 0}, {0, -16/5, 8/5, 0},
   {1, 0, 0, 8/5}, {17/3, 0, 0, 8/5}, {0, 16/3, -8/3, 0}, {0, 16, 8/3, 0},
   {-1, 0, 0, 8}, {-3, 0, 0, 8}}

 
 recrender[recmobnet2,6,1,3,2,0,-3,3,-3,3,-2.2,2.2,0]  (* 2 colors *)
 recrender[recmobnet2,6,1,1,0,0,-3,3,-3,3,-2.2,2.2,0]  (* cute *)
 recrender[recmobnet2,6,1,2,0,0,-3,3,-3,3,-2.2,2.2,0]  (* cute *)

bbmob2 = convrectr[recmobnet, 6, 1, 0]
trmob = InputForm[bbmob]

trmob =   {{2, 0, 0, 1}, {2, 0, 1/7, 1}, {2, 0, 2/7, 1}, {2, 0, 3/7, 1},
   {2, 0, 4/7, 1}, {2, 0, 5/7, 1}, {2, 0, 6/7, 1}, {2, 0, 1, 1},
   {2, 8/7, 0, 1}, {43/21, 8/7, 1/7, 1}, {44/21, 8/7, 2/7, 1},
   {15/7, 8/7, 3/7, 1}, {46/21, 8/7, 4/7, 1}, {47/21, 8/7, 5/7, 1},
   {16/7, 8/7, 6/7, 1}, {4/3, 2, 0, 8/7}, {17/12, 31/15, 2/15, 8/7},
   {3/2, 32/15, 4/15, 8/7}, {19/12, 11/5, 2/5, 8/7}, {5/3, 34/15, 8/15, 8/7},
   {7/4, 7/3, 2/3, 8/7}, {2/5, 12/5, 0, 10/7}, {11/25, 64/25, 3/25, 10/7},
   {12/25, 68/25, 6/25, 10/7}, {13/25, 72/25, 9/25, 10/7},
   {14/25, 76/25, 12/25, 10/7}, {-10/17, 40/17, 0, 68/35},
   {-2/3, 130/51, 5/51, 68/35}, {-38/51, 140/51, 10/51, 68/35},
   {-14/17, 50/17, 5/17, 68/35}, {-22/15, 28/15, 0, 20/7},
   {-5/3, 2, 1/15, 20/7}, {-28/15, 32/15, 2/15, 20/7}, {-2, 1, 0, 32/7},
   {-9/4, 1, 0, 32/7}, {-2, 0, 0, 8}}

(* again the mobius strip, triangular net  *)

mobnet =  {{2, 0, 0, 1}, {2, 0, 1/7, 1}, {2, 0, 2/7, 1}, {2, 0, 3/7, 1}, 
   {2, 0, 4/7, 1}, {2, 0, 5/7, 1}, {2, 0, 6/7, 1}, {2, 0, 1, 1}, 
   {2, 8/7, 0, 1}, {43/21, 8/7, 1/7, 1}, {44/21, 8/7, 2/7, 1}, 
   {15/7, 8/7, 3/7, 1}, {46/21, 8/7, 4/7, 1}, {47/21, 8/7, 5/7, 1}, 
   {16/7, 8/7, 6/7, 1}, {4/3, 2, 0, 8/7}, {17/12, 31/15, 2/15, 8/7}, 
   {3/2, 32/15, 4/15, 8/7}, {19/12, 11/5, 2/5, 8/7}, {5/3, 34/15, 8/15, 8/7}, 
   {7/4, 7/3, 2/3, 8/7}, {2/5, 12/5, 0, 10/7}, {11/25, 64/25, 3/25, 10/7}, 
   {12/25, 68/25, 6/25, 10/7}, {13/25, 72/25, 9/25, 10/7}, 
   {14/25, 76/25, 12/25, 10/7}, {-10/17, 40/17, 0, 68/35}, 
   {-2/3, 130/51, 5/51, 68/35}, {-38/51, 140/51, 10/51, 68/35}, 
   {-14/17, 50/17, 5/17, 68/35}, {-22/15, 28/15, 0, 20/7}, 
   {-5/3, 2, 1/15, 20/7}, {-28/15, 32/15, 2/15, 20/7}, {-2, 1, 0, 32/7}, 
   {-9/4, 1, 0, 32/7}, {-2, 0, 0, 8}};


 (* testing gbicontnet and newrecnet    *)

 mobnet4 = gbicontnet[poly, 6,1, -1, 0, -1, 0]; 
 mobnet5 = InputForm[mobnet4];

 mobnet5 =   {{-3, 0, 0, 8}, {-2, 0, 0, 8}, {-3, -2, -1/3, 4}, {-2, -4/3, 0, 4},
   {-14/9, -10/3, -5/9, 12/5}, {-10/9, -20/9, 0, 12/5},
   {1/4, -7/2, -3/4, 8/5}, {0, -5/2, 0, 8/5}, {5/3, -8/3, -8/9, 6/5},
   {10/9, -20/9, 0, 6/5}, {7/3, -4/3, -1, 1}, {2, -4/3, 0, 1}, {2, 0, -1, 1},
   {2, 0, 0, 1}}


 recmob6 = newrecnet[recmobnet, 6, 1, -1, 0, -1, 0, 0]
 recmob7 = InputForm[recmob6]

 recmob7 =    {{-3, 0, 0, 8}, {-2, 0, 0, 8}, {-3, -2, -1/3, 4}, {-2, -4/3, 0, 4},
   {-14/9, -10/3, -5/9, 12/5}, {-10/9, -20/9, 0, 12/5},
   {1/4, -7/2, -3/4, 8/5}, {0, -5/2, 0, 8/5}, {5/3, -8/3, -8/9, 6/5},
   {10/9, -20/9, 0, 6/5}, {7/3, -4/3, -1, 1}, {2, -4/3, 0, 1}, {2, 0, -1, 1},
   {2, 0, 0, 1}}






(* Wrong Funny Klein bottle  , degree 8                 *)


poly1 =  aa*(u^4-6*u^2+1)*(1+v^2)^2+rr*(v^4-6*v^2+1)*(1-u^4);
poly2 =  4*bb*u*(1-u^2)*(1+v^2)^2+2*rr*u*(v^4-6*v^2+1)*(1+u^2);
poly3 = 4*rr*v(1-v^2)*((1+u^2)^2);
poly4 = (1+u^2)^2*(1+v^2)^2;
dudo2 =  4*bb*u*(1-u^2)*(1+v^2)^2+2*rr*u*(v^4-6*v^2+1)*(1+u^2);
p1 = Expand[poly1]; p1 = InputForm[p1];

p1 =  aa + rr - 6*aa*u^2 + aa*u^4 - rr*u^4 + 2*aa*v^2 - 6*rr*v^2 - 
   12*aa*u^2*v^2 + 2*aa*u^4*v^2 + 6*rr*u^4*v^2 + aa*v^4 + rr*v^4 - 
   6*aa*u^2*v^4 + aa*u^4*v^4 - rr*u^4*v^4 

p2 = Expand[poly2]; p2 = InputForm[p2];

p2 =  4*bb*u + 2*rr*u - 4*bb*u^3 + 2*rr*u^3 + 8*bb*u*v^2 - 12*rr*u*v^2 - 
   8*bb*u^3*v^2 - 12*rr*u^3*v^2 + 4*bb*u*v^4 + 2*rr*u*v^4 - 4*bb*u^3*v^4 + 
   2*rr*u^3*v^4

p3 = Expand[poly3]; p3 = InputForm[p3];

p3 =   4*rr*v + 8*rr*u^2*v + 4*rr*u^4*v - 4*rr*v^3 - 8*rr*u^2*v^3 - 4*rr*u^4*v^3;

p4 = Expand[poly4]; p4 = InputForm[p4];

p4 =  1 + 2*u^2 + u^4 + 2*v^2 + 4*u^2*v^2 + 2*u^4*v^2 + v^4 + 2*u^2*v^4 + u^4*v^4;

poly  = {{{aa + rr, 0, 0}, {-6*aa, 2, 0},  {aa - rr, 4, 0},
          {2*aa - 6*rr, 0, 2}, {12*aa, 2, 2}, {2*aa + 6*rr, 4, 2}, 
          {aa + rr, 0, 4}, {-6*aa, 2, 4}, {aa - rr, 4, 4}},
         {{4*bb + 2*rr, 1, 0}, {-4*bb + 2*rr, 3, 0}, {8*bb - 12*rr, 1, 2},
          {-8*bb - 12*rr, 3, 2}, {4*bb + 2*rr, 1, 4}, 
          {-4*bb +  2*rr, 3, 4}},
         {{4*rr, 0, 1}, {8*rr, 2, 1}, {4*rr, 4, 1}, {-4*rr, 0, 3},
          {-8*rr, 2, 3},  {-4*rr, 4, 3}},
         {{1, 0, 0},  {2, 2, 0}, {1, 4, 0}, {2, 0, 2}, {4, 2, 2},  
          {2, 4, 2}, {1, 0, 4}, {2, 2, 4}, {1, 4, 4}}};


(*  In the above poly, in p1, coeff of u^2v^2 is 12*aa instead of -12*aa *)

poly  = {{{aa + rr, 0, 0}, {-6*aa, 2, 0},  {aa - rr, 4, 0},
          {2*aa - 6*rr, 0, 2}, {-12*aa, 2, 2}, {2*aa + 6*rr, 4, 2}, 
          {aa + rr, 0, 4}, {-6*aa, 2, 4}, {aa - rr, 4, 4}},
         {{4*bb + 2*rr, 1, 0}, {-4*bb + 2*rr, 3, 0}, {8*bb - 12*rr, 1, 2},
          {-8*bb - 12*rr, 3, 2}, {4*bb + 2*rr, 1, 4}, 
          {-4*bb +  2*rr, 3, 4}},
         {{4*rr, 0, 1}, {8*rr, 2, 1}, {4*rr, 4, 1}, {-4*rr, 0, 3},
          {-8*rr, 2, 3},  {-4*rr, 4, 3}},
         {{1, 0, 0},  {2, 2, 0}, {1, 4, 0}, {2, 0, 2}, {4, 2, 2},  
          {2, 4, 2}, {1, 0, 4}, {2, 2, 4}, {1, 4, 4}}};


net = contnet[poly, 8]; kleinet = InputForm[net];

(*  Master  net   *)

wkleinet =   {{aa + rr, 0, 0, 1}, {aa + rr, 0, rr/2, 1}, 
   {(14*(aa + (2*aa - 6*rr)/28 + rr))/15, 0, (14*rr)/15, 15/14}, 
   {(14*(aa + (3*(2*aa - 6*rr))/28 + rr))/17, 0, (20*rr)/17, 17/14}, 
   {(70*(aa + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, 0, 
    (120*rr)/101, 101/70}, {(14*
       (aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/25, 0, rr, 25/14}, 
   {(7*(aa + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/16, 0, 
    (11*rr)/16, 16/7}, {(aa + (3*(2*aa - 6*rr))/4 + rr + (aa + rr)/2)/3, 0, 
    rr/3, 3}, {(4*aa - 4*rr)/4, 0, 0, 4}, {aa + rr, (4*bb + 2*rr)/8, 0, 1}, 
   {aa + rr, (4*bb + 2*rr)/8, rr/2, 1}, 
   {(14*(aa + (2*aa - 6*rr)/28 + rr))/15, 
    (14*((8*bb - 12*rr)/168 + (4*bb + 2*rr)/8))/15, (14*rr)/15, 15/14}, 
   {(14*(aa + (3*(2*aa - 6*rr))/28 + rr))/17, 
    (14*((8*bb - 12*rr)/56 + (4*bb + 2*rr)/8))/17, (20*rr)/17, 17/14}, 
   {(70*(aa + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, 
    (70*((8*bb - 12*rr)/28 + (9*(4*bb + 2*rr))/70))/101, (120*rr)/101, 
    101/70}, {(14*(aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/25, 
    (14*((5*(8*bb - 12*rr))/84 + (4*bb + 2*rr)/7))/25, rr, 25/14}, 
   {(7*(aa + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/16, 
    (7*((5*(8*bb - 12*rr))/56 + (5*(4*bb + 2*rr))/28))/16, (11*rr)/16, 16/7}, 
   {(aa + (3*(2*aa - 6*rr))/4 + rr + (aa + rr)/2)/3, 
    ((8*bb - 12*rr)/8 + (4*bb + 2*rr)/4)/3, rr/3, 3}, 
   {(14*((11*aa)/14 + rr))/15, (7*(4*bb + 2*rr))/30, 0, 15/14}, 
   {(14*((11*aa)/14 + rr))/15, (7*(4*bb + 2*rr))/30, (23*rr)/45, 15/14}, 
   {(105*((57*aa)/70 + (2*aa - 6*rr)/28 + rr))/121, 
    (105*((8*bb - 12*rr)/84 + (4*bb + 2*rr)/4))/121, (115*rr)/121, 121/105}, 
   {(35*((61*aa)/70 + (3*(2*aa - 6*rr))/28 + rr))/46, 
    (35*((8*bb - 12*rr)/28 + (4*bb + 2*rr)/4))/46, (109*rr)/92, 46/35}, 
   {(210*((33*aa)/35 + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/331, 
    (210*((8*bb - 12*rr)/14 + (9*(4*bb + 2*rr))/35))/331, (388*rr)/331, 
    331/210}, {(42*(aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/83, 
    (42*((5*(8*bb - 12*rr))/42 + (2*(4*bb + 2*rr))/7))/83, (79*rr)/83, 83/42}\
    , {(7*(aa + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/18, 
    (7*((5*(8*bb - 12*rr))/28 + (5*(4*bb + 2*rr))/14))/18, (11*rr)/18, 18/7}, 
   {(14*((5*aa)/14 + rr))/17, (14*
       ((-4*bb + 2*rr)/56 + (3*(4*bb + 2*rr))/8))/17, 0, 17/14}, 
   {(14*((5*aa)/14 + rr))/17, (14*
       ((-4*bb + 2*rr)/56 + (3*(4*bb + 2*rr))/8))/17, (9*rr)/17, 17/14}, 
   {(35*((31*aa)/70 + (2*aa - 6*rr)/28 + rr))/46, 
    (35*((-8*bb - 12*rr)/560 + (8*bb - 12*rr)/56 + (-4*bb + 2*rr)/56 + 
         (3*(4*bb + 2*rr))/8))/46, (45*rr)/46, 46/35}, 
   {(35*((43*aa)/70 + (3*(2*aa - 6*rr))/28 + rr))/53, 
    (35*((3*(-8*bb - 12*rr))/560 + (3*(8*bb - 12*rr))/56 + 
         (-4*bb + 2*rr)/56 + (3*(4*bb + 2*rr))/8))/53, (127*rr)/106, 53/35}, 
   {(70*((29*aa)/35 + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/129, 
    (70*((3*(-8*bb - 12*rr))/280 + (3*(8*bb - 12*rr))/28 + 
         (3*(-4*bb + 2*rr))/140 + (27*(4*bb + 2*rr))/70))/129, (148*rr)/129, 
    129/70}, {(14*(aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/33, 
    (14*((-8*bb - 12*rr)/56 + (5*(8*bb - 12*rr))/28 + (-4*bb + 2*rr)/28 + 
         (3*(4*bb + 2*rr))/7))/33, (29*rr)/33, 33/14}, 
   {(70*((-2*aa)/7 + (aa - rr)/70 + rr))/101, 
    (70*((-4*bb + 2*rr)/14 + (4*bb + 2*rr)/2))/101, 0, 101/70}, 
   {(70*((-2*aa)/7 + (aa - rr)/70 + rr))/101, 
    (70*((-4*bb + 2*rr)/14 + (4*bb + 2*rr)/2))/101, (56*rr)/101, 101/70}, 
   {(210*((-4*aa)/35 + (2*aa - 6*rr)/28 + (aa - rr)/70 + rr + 
         (2*aa + 6*rr)/420))/331, 
    (210*((-8*bb - 12*rr)/140 + (8*bb - 12*rr)/42 + (-4*bb + 2*rr)/14 + 
         (4*bb + 2*rr)/2))/331, (336*rr)/331, 331/210}, 
   {(70*((8*aa)/35 + (3*(2*aa - 6*rr))/28 + (aa - rr)/70 + rr + 
         (2*aa + 6*rr)/140))/129, 
    (70*((3*(-8*bb - 12*rr))/140 + (8*bb - 12*rr)/14 + (-4*bb + 2*rr)/14 + 
         (4*bb + 2*rr)/2))/129, (52*rr)/43, 129/70}, 
   {(10*((23*aa)/35 + (3*(2*aa - 6*rr))/14 + (aa - rr)/35 + rr + 
         (aa + rr)/70 + (2*aa + 6*rr)/70))/23, 
    (10*((3*(-8*bb - 12*rr))/70 + (8*bb - 12*rr)/7 + 
         (3*(-4*bb + 2*rr))/35 + (18*(4*bb + 2*rr))/35))/23, (176*rr)/161, 
    23/10}, {(14*((-8*aa)/7 + (aa - rr)/14 + rr))/25, 
    (14*((5*(-4*bb + 2*rr))/28 + (5*(4*bb + 2*rr))/8))/25, 0, 25/14}, 
   {(14*((-8*aa)/7 + (aa - rr)/14 + rr))/25, 
    (14*((5*(-4*bb + 2*rr))/28 + (5*(4*bb + 2*rr))/8))/25, (44*rr)/75, 25/14}\
    , {(42*((-6*aa)/7 + (2*aa - 6*rr)/28 + (aa - rr)/14 + rr + 
         (2*aa + 6*rr)/84))/83, 
    (42*((-8*bb - 12*rr)/56 + (5*(8*bb - 12*rr))/168 + 
         (5*(-4*bb + 2*rr))/28 + (5*(4*bb + 2*rr))/8))/83, (88*rr)/83, 83/42}\
    , {(14*((-2*aa)/7 + (3*(2*aa - 6*rr))/28 + (aa - rr)/14 + rr + 
         (2*aa + 6*rr)/28))/33, 
    (14*((3*(-8*bb - 12*rr))/56 + (5*(8*bb - 12*rr))/56 + 
         (5*(-4*bb + 2*rr))/28 + (5*(4*bb + 2*rr))/8))/33, (40*rr)/33, 33/14}\
    , {(7*((-31*aa)/14 + (3*(aa - rr))/14 + rr))/16, 
    (7*((5*(-4*bb + 2*rr))/14 + (3*(4*bb + 2*rr))/4))/16, 0, 16/7}, 
   {(7*((-31*aa)/14 + (3*(aa - rr))/14 + rr))/16, 
    (7*((5*(-4*bb + 2*rr))/14 + (3*(4*bb + 2*rr))/4))/16, (5*rr)/8, 16/7}, 
   {(7*((-25*aa)/14 + (2*aa - 6*rr)/28 + (3*(aa - rr))/14 + rr + 
         (2*aa + 6*rr)/28))/18, 
    (7*((-8*bb - 12*rr)/28 + (8*bb - 12*rr)/28 + (5*(-4*bb + 2*rr))/14 + 
         (3*(4*bb + 2*rr))/4))/18, (10*rr)/9, 18/7}, 
   {((-7*aa)/2 + (aa - rr)/2 + rr)/3, 
    ((5*(-4*bb + 2*rr))/8 + (7*(4*bb + 2*rr))/8)/3, 0, 3}, 
   {((-7*aa)/2 + (aa - rr)/2 + rr)/3, 
    ((5*(-4*bb + 2*rr))/8 + (7*(4*bb + 2*rr))/8)/3, (2*rr)/3, 3}, 
   {-aa, rr, 0, 4}};


(* Case  rr = 1; aa =  4;   bb = 1   *)
rr = 1; aa = 4; bb = 1;

 
wklein =   {{5, 0, 0, 1}, {5, 0, 1/2, 1}, {71/15, 0, 14/15, 15/14}, 
   {73/17, 0, 20/17, 17/14}, {385/101, 0, 120/101, 101/70}, 
   {17/5, 0, 1, 25/14}, {25/8, 0, 11/16, 16/7}, {3, 0, 1/3, 3}, {3, 0, 0, 4}, 
   {5, 3/4, 0, 1}, {5, 3/4, 1/2, 1}, {71/15, 61/90, 14/15, 15/14}, 
   {73/17, 19/34, 20/17, 17/14}, {385/101, 44/101, 120/101, 101/70}, 
   {17/5, 26/75, 1, 25/14}, {25/8, 5/16, 11/16, 16/7}, {3, 1/3, 1/3, 3}, 
   {58/15, 7/5, 0, 15/14}, {58/15, 7/5, 23/45, 15/14}, 
   {909/242, 305/242, 115/121, 121/105}, {329/92, 95/92, 109/92, 46/35}, 
   {1107/331, 264/331, 388/331, 331/210}, {255/83, 52/83, 79/83, 83/42}, 
   {25/9, 5/9, 11/18, 18/7}, {2, 31/17, 0, 17/14}, {2, 31/17, 9/17, 17/14}, 
   {199/92, 295/184, 45/46, 46/35}, {257/106, 5/4, 127/106, 53/35}, 
   {337/129, 38/43, 148/129, 129/70}, {85/33, 20/33, 29/33, 33/14}, 
   {-7/101, 200/101, 0, 101/70}, {-7/101, 200/101, 56/101, 101/70}, 
   {145/331, 550/331, 336/331, 331/210}, {53/43, 50/43, 52/43, 129/70}, 
   {309/161, 104/161, 176/161, 23/10}, {-47/25, 19/10, 0, 25/14}, 
   {-47/25, 19/10, 44/75, 25/14}, {-1, 245/166, 88/83, 83/42}, 
   {1/3, 5/6, 40/33, 33/14}, {-101/32, 53/32, 0, 16/7}, 
   {-101/32, 53/32, 5/8, 16/7}, {-23/12, 41/36, 10/9, 18/7}, 
   {-23/6, 4/3, 0, 3}, {-23/6, 4/3, 2/3, 3}, {-4, 1, 0, 4}};


sqrender[wklein,8,1,1,-1,-1,2,0,0,-6.1,6.1,-2.1,2.1,-2.1,2.1,0] (* bizarre *) 
trender[wklein,8,reftrig1,2,0,0,-6.1,6.1,-2.1,2.1,-2.1,2.1,0] 
sqrender[wklein,8,1,1,-1,0,2,0,0,-6.1,6.1,-2.1,2.1,-2.1,2.1,0] 

(* Also very good viewpoint: ViewPoint -> {-15, -10, 5} *)
(* Show[%148,ViewPoint -> {-15, -5, 2}]  amazing *)


(*  Funny Klein bottle  , degree 8                 *)


poly1 =  aa*(u^4-6*u^2+1)*(1+v^2)^2+rr*(v^4-6*v^2+1)*(1-u^4);
poly2 =  4*bb*u*(1-u^2)*(1+v^2)^2+2*rr*u*(v^4-6*v^2+1)*(1+u^2);
poly3 = 4*rr*v*(1-v^2)*((1+u^2)^2);
poly4 = (1+u^2)^2*(1+v^2)^2;
dudo2 =  4*bb*u*(1-u^2)*(1+v^2)^2+2*rr*u*(v^4-6*v^2+1)*(1+u^2);
p1 = Expand[poly1]; p1 = InputForm[p1];

p1 =  aa + rr - 6*aa*u^2 + aa*u^4 - rr*u^4 + 2*aa*v^2 - 6*rr*v^2 - 
   12*aa*u^2*v^2 + 2*aa*u^4*v^2 + 6*rr*u^4*v^2 + aa*v^4 + rr*v^4 - 
   6*aa*u^2*v^4 + aa*u^4*v^4 - rr*u^4*v^4 

p2 = Expand[poly2]; p2 = InputForm[p2];

p2 =  4*bb*u + 2*rr*u - 4*bb*u^3 + 2*rr*u^3 + 8*bb*u*v^2 - 12*rr*u*v^2 - 
   8*bb*u^3*v^2 - 12*rr*u^3*v^2 + 4*bb*u*v^4 + 2*rr*u*v^4 - 4*bb*u^3*v^4 + 
   2*rr*u^3*v^4

p3 = Expand[poly3]; p3 = InputForm[p3];

p3 =   4*rr*v + 8*rr*u^2*v + 4*rr*u^4*v - 4*rr*v^3 - 8*rr*u^2*v^3 - 4*rr*u^4*v^3;

p4 = Expand[poly4]; p4 = InputForm[p4];

p4 =  1 + 2*u^2 + u^4 + 2*v^2 + 4*u^2*v^2 + 2*u^4*v^2 + v^4 + 2*u^2*v^4 + u^4*v^4;


poly  = {{{aa + rr, 0, 0}, {-6*aa, 2, 0},  {aa - rr, 4, 0},
          {2*aa - 6*rr, 0, 2}, {-12*aa, 2, 2}, {2*aa + 6*rr, 4, 2}, 
          {aa + rr, 0, 4}, {-6*aa, 2, 4}, {aa - rr, 4, 4}},
         {{4*bb + 2*rr, 1, 0}, {-4*bb + 2*rr, 3, 0}, {8*bb - 12*rr, 1, 2},
          {-8*bb - 12*rr, 3, 2}, {4*bb + 2*rr, 1, 4}, 
          {-4*bb +  2*rr, 3, 4}},
         {{4*rr, 0, 1}, {8*rr, 2, 1}, {4*rr, 4, 1}, {-4*rr, 0, 3},
          {-8*rr, 2, 3},  {-4*rr, 4, 3}},
         {{1, 0, 0},  {2, 2, 0}, {1, 4, 0}, {2, 0, 2}, {4, 2, 2},  
          {2, 4, 2}, {1, 0, 4}, {2, 2, 4}, {1, 4, 4}}};


net = contnet[poly, 8]; kleinet = InputForm[net];

(*  Master  net   *)

kleinet =   {{aa + rr, 0, 0, 1}, {aa + rr, 0, rr/2, 1}, 
   {(14*(aa + (2*aa - 6*rr)/28 + rr))/15, 0, (14*rr)/15, 15/14}, 
   {(14*(aa + (3*(2*aa - 6*rr))/28 + rr))/17, 0, (20*rr)/17, 17/14}, 
   {(70*(aa + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, 0, 
    (120*rr)/101, 101/70}, {(14*
       (aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/25, 0, rr, 25/14}, 
   {(7*(aa + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/16, 0, 
    (11*rr)/16, 16/7}, {(aa + (3*(2*aa - 6*rr))/4 + rr + (aa + rr)/2)/3, 0, 
    rr/3, 3}, {(4*aa - 4*rr)/4, 0, 0, 4}, {aa + rr, (4*bb + 2*rr)/8, 0, 1}, 
   {aa + rr, (4*bb + 2*rr)/8, rr/2, 1}, 
   {(14*(aa + (2*aa - 6*rr)/28 + rr))/15, 
    (14*((8*bb - 12*rr)/168 + (4*bb + 2*rr)/8))/15, (14*rr)/15, 15/14}, 
   {(14*(aa + (3*(2*aa - 6*rr))/28 + rr))/17, 
    (14*((8*bb - 12*rr)/56 + (4*bb + 2*rr)/8))/17, (20*rr)/17, 17/14}, 
   {(70*(aa + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, 
    (70*((8*bb - 12*rr)/28 + (9*(4*bb + 2*rr))/70))/101, (120*rr)/101, 
    101/70}, {(14*(aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/25, 
    (14*((5*(8*bb - 12*rr))/84 + (4*bb + 2*rr)/7))/25, rr, 25/14}, 
   {(7*(aa + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/16, 
    (7*((5*(8*bb - 12*rr))/56 + (5*(4*bb + 2*rr))/28))/16, (11*rr)/16, 16/7}, 
   {(aa + (3*(2*aa - 6*rr))/4 + rr + (aa + rr)/2)/3, 
    ((8*bb - 12*rr)/8 + (4*bb + 2*rr)/4)/3, rr/3, 3}, 
   {(14*((11*aa)/14 + rr))/15, (7*(4*bb + 2*rr))/30, 0, 15/14}, 
   {(14*((11*aa)/14 + rr))/15, (7*(4*bb + 2*rr))/30, (23*rr)/45, 15/14}, 
   {(105*((53*aa)/70 + (2*aa - 6*rr)/28 + rr))/121, 
    (105*((8*bb - 12*rr)/84 + (4*bb + 2*rr)/4))/121, (115*rr)/121, 121/105}, 
   {(35*((7*aa)/10 + (3*(2*aa - 6*rr))/28 + rr))/46, 
    (35*((8*bb - 12*rr)/28 + (4*bb + 2*rr)/4))/46, (109*rr)/92, 46/35}, 
   {(210*((3*aa)/5 + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/331, 
    (210*((8*bb - 12*rr)/14 + (9*(4*bb + 2*rr))/35))/331, (388*rr)/331, 
    331/210}, {(42*((3*aa)/7 + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/
     83, (42*((5*(8*bb - 12*rr))/42 + (2*(4*bb + 2*rr))/7))/83, (79*rr)/83, 
    83/42}, {(7*(aa/7 + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/18, 
    (7*((5*(8*bb - 12*rr))/28 + (5*(4*bb + 2*rr))/14))/18, (11*rr)/18, 18/7}, 
   {(14*((5*aa)/14 + rr))/17, (14*
       ((-4*bb + 2*rr)/56 + (3*(4*bb + 2*rr))/8))/17, 0, 17/14}, 
   {(14*((5*aa)/14 + rr))/17, (14*
       ((-4*bb + 2*rr)/56 + (3*(4*bb + 2*rr))/8))/17, (9*rr)/17, 17/14}, 
   {(35*((19*aa)/70 + (2*aa - 6*rr)/28 + rr))/46, 
    (35*((-8*bb - 12*rr)/560 + (8*bb - 12*rr)/56 + (-4*bb + 2*rr)/56 + 
         (3*(4*bb + 2*rr))/8))/46, (45*rr)/46, 46/35}, 
   {(35*(aa/10 + (3*(2*aa - 6*rr))/28 + rr))/53, 
    (35*((3*(-8*bb - 12*rr))/560 + (3*(8*bb - 12*rr))/56 + 
         (-4*bb + 2*rr)/56 + (3*(4*bb + 2*rr))/8))/53, (127*rr)/106, 53/35}, 
   {(70*(-aa/5 + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/129, 
    (70*((3*(-8*bb - 12*rr))/280 + (3*(8*bb - 12*rr))/28 + 
         (3*(-4*bb + 2*rr))/140 + (27*(4*bb + 2*rr))/70))/129, (148*rr)/129, 
    129/70}, {(14*((-5*aa)/7 + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/
     33, (14*((-8*bb - 12*rr)/56 + (5*(8*bb - 12*rr))/28 + 
         (-4*bb + 2*rr)/28 + (3*(4*bb + 2*rr))/7))/33, (29*rr)/33, 33/14}, 
   {(70*((-2*aa)/7 + (aa - rr)/70 + rr))/101, 
    (70*((-4*bb + 2*rr)/14 + (4*bb + 2*rr)/2))/101, 0, 101/70}, 
   {(70*((-2*aa)/7 + (aa - rr)/70 + rr))/101, 
    (70*((-4*bb + 2*rr)/14 + (4*bb + 2*rr)/2))/101, (56*rr)/101, 101/70}, 
   {(210*((-16*aa)/35 + (2*aa - 6*rr)/28 + (aa - rr)/70 + rr + 
         (2*aa + 6*rr)/420))/331, 
    (210*((-8*bb - 12*rr)/140 + (8*bb - 12*rr)/42 + (-4*bb + 2*rr)/14 + 
         (4*bb + 2*rr)/2))/331, (336*rr)/331, 331/210}, 
   {(70*((-4*aa)/5 + (3*(2*aa - 6*rr))/28 + (aa - rr)/70 + rr + 
         (2*aa + 6*rr)/140))/129, 
    (70*((3*(-8*bb - 12*rr))/140 + (8*bb - 12*rr)/14 + (-4*bb + 2*rr)/14 + 
         (4*bb + 2*rr)/2))/129, (52*rr)/43, 129/70}, 
   {(10*((-7*aa)/5 + (3*(2*aa - 6*rr))/14 + (aa - rr)/35 + rr + 
         (aa + rr)/70 + (2*aa + 6*rr)/70))/23, 
    (10*((3*(-8*bb - 12*rr))/70 + (8*bb - 12*rr)/7 + 
         (3*(-4*bb + 2*rr))/35 + (18*(4*bb + 2*rr))/35))/23, (176*rr)/161, 
    23/10}, {(14*((-8*aa)/7 + (aa - rr)/14 + rr))/25, 
    (14*((5*(-4*bb + 2*rr))/28 + (5*(4*bb + 2*rr))/8))/25, 0, 25/14}, 
   {(14*((-8*aa)/7 + (aa - rr)/14 + rr))/25, 
    (14*((5*(-4*bb + 2*rr))/28 + (5*(4*bb + 2*rr))/8))/25, (44*rr)/75, 25/14}\
    , {(42*((-10*aa)/7 + (2*aa - 6*rr)/28 + (aa - rr)/14 + rr + 
         (2*aa + 6*rr)/84))/83, 
    (42*((-8*bb - 12*rr)/56 + (5*(8*bb - 12*rr))/168 + 
         (5*(-4*bb + 2*rr))/28 + (5*(4*bb + 2*rr))/8))/83, (88*rr)/83, 83/42}\
    , {(14*(-2*aa + (3*(2*aa - 6*rr))/28 + (aa - rr)/14 + rr + 
         (2*aa + 6*rr)/28))/33, 
    (14*((3*(-8*bb - 12*rr))/56 + (5*(8*bb - 12*rr))/56 + 
         (5*(-4*bb + 2*rr))/28 + (5*(4*bb + 2*rr))/8))/33, (40*rr)/33, 33/14}\
    , {(7*((-31*aa)/14 + (3*(aa - rr))/14 + rr))/16, 
    (7*((5*(-4*bb + 2*rr))/14 + (3*(4*bb + 2*rr))/4))/16, 0, 16/7}, 
   {(7*((-31*aa)/14 + (3*(aa - rr))/14 + rr))/16, 
    (7*((5*(-4*bb + 2*rr))/14 + (3*(4*bb + 2*rr))/4))/16, (5*rr)/8, 16/7}, 
   {(7*((-37*aa)/14 + (2*aa - 6*rr)/28 + (3*(aa - rr))/14 + rr + 
         (2*aa + 6*rr)/28))/18, 
    (7*((-8*bb - 12*rr)/28 + (8*bb - 12*rr)/28 + (5*(-4*bb + 2*rr))/14 + 
         (3*(4*bb + 2*rr))/4))/18, (10*rr)/9, 18/7}, 
   {((-7*aa)/2 + (aa - rr)/2 + rr)/3, 
    ((5*(-4*bb + 2*rr))/8 + (7*(4*bb + 2*rr))/8)/3, 0, 3}, 
   {((-7*aa)/2 + (aa - rr)/2 + rr)/3, 
    ((5*(-4*bb + 2*rr))/8 + (7*(4*bb + 2*rr))/8)/3, (2*rr)/3, 3}, 
   {-aa, rr, 0, 4}};


(* Case  rr = 1; aa =  4;   bb = 1   *)
rr = 1; aa = 4; bb = 1;

klein =   {{5, 0, 0, 1}, {5, 0, 1/2, 1}, {71/15, 0, 14/15, 15/14}, 
   {73/17, 0, 20/17, 17/14}, {385/101, 0, 120/101, 101/70}, 
   {17/5, 0, 1, 25/14}, {25/8, 0, 11/16, 16/7}, {3, 0, 1/3, 3}, {3, 0, 0, 4}, 
   {5, 3/4, 0, 1}, {5, 3/4, 1/2, 1}, {71/15, 61/90, 14/15, 15/14}, 
   {73/17, 19/34, 20/17, 17/14}, {385/101, 44/101, 120/101, 101/70}, 
   {17/5, 26/75, 1, 25/14}, {25/8, 5/16, 11/16, 16/7}, {3, 1/3, 1/3, 3}, 
   {58/15, 7/5, 0, 15/14}, {58/15, 7/5, 23/45, 15/14}, 
   {861/242, 305/242, 115/121, 121/105}, {281/92, 95/92, 109/92, 46/35}, 
   {819/331, 264/331, 388/331, 331/210}, {159/83, 52/83, 79/83, 83/42}, 
   {13/9, 5/9, 11/18, 18/7}, {2, 31/17, 0, 17/14}, {2, 31/17, 9/17, 17/14}, 
   {151/92, 295/184, 45/46, 46/35}, {113/106, 5/4, 127/106, 53/35}, 
   {49/129, 38/43, 148/129, 129/70}, {-1/3, 20/33, 29/33, 33/14}, 
   {-7/101, 200/101, 0, 101/70}, {-7/101, 200/101, 56/101, 101/70}, 
   {-143/331, 550/331, 336/331, 331/210}, {-1, 50/43, 52/43, 129/70}, 
   {-267/161, 104/161, 176/161, 23/10}, {-47/25, 19/10, 0, 25/14}, 
   {-47/25, 19/10, 44/75, 25/14}, {-179/83, 245/166, 88/83, 83/42}, 
   {-85/33, 5/6, 40/33, 33/14}, {-101/32, 53/32, 0, 16/7}, 
   {-101/32, 53/32, 5/8, 16/7}, {-13/4, 41/36, 10/9, 18/7}, 
   {-23/6, 4/3, 0, 3}, {-23/6, 4/3, 2/3, 3}, {-4, 1, 0, 4}};



sqrender[klein,8,1,1,-1,-1,2,0,0,-5.1,5.1,-2.1,2.1,-2.1,2.1,0] 
trender[klein,8,reftrig1,2,0,0,-5.1,5.1,-2.1,2.1,-2.1,2.1,0] 


(* Case  rr = 2; aa =  6;   bb = 3   *)
rr = 2; aa = 6; bb = 3;


klein =   {{8, 0, 0, 1}, {8, 0, 1, 1}, {112/15, 0, 28/15, 15/14}, 
   {112/17, 0, 40/17, 17/14}, {568/101, 0, 240/101, 101/70}, 
   {24/5, 0, 2, 25/14}, {17/4, 0, 11/8, 16/7}, {4, 0, 2/3, 3}, {4, 0, 0, 4}, 
   {8, 2, 0, 1}, {8, 2, 1, 1}, {112/15, 28/15, 28/15, 15/14}, 
   {112/17, 28/17, 40/17, 17/14}, {568/101, 144/101, 240/101, 101/70}, 
   {24/5, 32/25, 2, 25/14}, {17/4, 5/4, 11/8, 16/7}, {4, 4/3, 2/3, 3}, 
   {94/15, 56/15, 0, 15/14}, {94/15, 56/15, 46/45, 15/14}, 
   {687/121, 420/121, 230/121, 121/105}, {217/46, 70/23, 109/46, 46/35}, 
   {1200/331, 864/331, 776/331, 331/210}, {216/83, 192/83, 158/83, 83/42}, 
   {16/9, 20/9, 11/9, 18/7}, {58/17, 82/17, 0, 17/14}, 
   {58/17, 82/17, 18/17, 17/14}, {127/46, 101/23, 45/23, 46/35}, 
   {91/53, 196/53, 127/53, 53/35}, {64/129, 128/43, 296/129, 129/70}, 
   {-8/11, 80/33, 58/33, 33/14}, {24/101, 520/101, 0, 101/70}, 
   {24/101, 520/101, 112/101, 101/70}, 
   {-132/331, 1488/331, 672/331, 331/210}, {-60/43, 448/129, 104/43, 129/70}, 
   {-408/161, 384/161, 352/161, 23/10}, {-64/25, 24/5, 0, 25/14}, 
   {-64/25, 24/5, 88/75, 25/14}, {-252/83, 324/83, 176/83, 83/42}, 
   {-124/33, 28/11, 80/33, 33/14}, {-73/16, 4, 0, 16/7}, 
   {-73/16, 4, 5/4, 16/7}, {-85/18, 26/9, 20/9, 18/7}, {-17/3, 3, 0, 3}, 
   {-17/3, 3, 4/3, 3}, {-6, 2, 0, 4}};

(* Case  rr = 2; aa =  6;   bb = 3   *)

sqrender[klein,8,1,1,-1,-1,2,0,0,-8.1,8.1,-5.1,5.1,-2.2,2.2,0]  (* great *) 

(* Also very good viewpoint: ViewPoint -> {-15, -10, 5} *)
(* Show[%835, ViewPoint -> {-12, -8, 2}]  *)
(* Show[%12, ViewPoint -> {-12, -5, 2}]  *)

sqrender[klein,8,1,0,-1,-1,2,0,0,-8.1,8.1,-5.1,5.1,-2.2,2.2,0]  (* cute, half klein *)
trender[klein,8,reftrig1,2,0,0,-8.1,8.1,-5.1,5.1,-2.2,2.2,0]  (* cute *)
render1[klein,8,2,0,0,-8.1,8.1,-5.1,5.1,-2.2,2.2,0]  (* cute *)
sqfractal[klein,8,1,1,-1,-1,2,0,0,-8.1,8.1,-5.1,5.1,-2.2,2.2]  
sqfractal[klein,8,1,1,-1,-1,3,0,0,-8.1,8.1,-5.1,5.1,-2.2,2.2]  

pta  = {1, 1, -1}; ptb =  {-1, -1, 3};
scurv3D[klein,8,5,pta,ptb,-8.1,8.1,-5.1,5.1,-2.2,2.2,0] 
clocurv3D[klein,8,5,pta,ptb,-8.1,8.1,-5.1,5.1,-2.2,2.2,0] (* very nice *)


(*  Experiencing with Klein bottle  , degree 8 (from Do Carmo)   *)

p1 = ((aa + rr)*v^4 + 2*(aa - 3*rr)*v^2 + aa + rr)*(u^4 -6*u^2 + 1);
p2 = ((aa + rr)*v^4 + 2*(aa - 3*rr)*v^2 + aa + rr)*4*u*(1 - u^2);
p3 = 4*rr*v*(1 - v^2)*(1 - u^4);
p4 = 8*rr*u*v*(1 - v^2)*(1 + u^2);
p5 = (u^2 + 1)^2*(v^2 + 1)^2;

p1 = Expand[p1]; p1 = InputForm[p1]
p2 = Expand[p2]; p2 = InputForm[p2]
p3 = Expand[p3]; p3 = InputForm[p3]
p4 = Expand[p4]; p4 = InputForm[p4]
p5 = Expand[p5]; p5 = InputForm[p5]

p1 =   aa + rr - 6*aa*u^2 - 6*rr*u^2 + aa*u^4 + rr*u^4 + 2*aa*v^2 - 6*rr*v^2 -
   12*aa*u^2*v^2 + 36*rr*u^2*v^2 + 2*aa*u^4*v^2 - 6*rr*u^4*v^2 + aa*v^4 +
   rr*v^4 - 6*aa*u^2*v^4 - 6*rr*u^2*v^4 + aa*u^4*v^4 + rr*u^4*v^4

p2 =   4*aa*u + 4*rr*u - 4*aa*u^3 - 4*rr*u^3 + 8*aa*u*v^2 - 24*rr*u*v^2 
      - 8*aa*u^3*v^2 + 24*rr*u^3*v^2 + 4*aa*u*v^4 + 4*rr*u*v^4 - 4*aa*u^3*v^4 
      - 4*rr*u^3*v^4

p3 = 4*rr*v - 4*rr*u^4*v - 4*rr*v^3 + 4*rr*u^4*v^3;

p4 = 8*rr*u*v + 8*rr*u^3*v - 8*rr*u*v^3 - 8*rr*u^3*v^3;

p5 = u^4*v^4 + 2*u^4*v^2 + u^4 + 2*u^2*v^4 + 4*u^2*v^2 + 2*u^2 + v^4 + 2*v^2 + 1;

(* projection along x axis  *)

polyx = {{{4*aa + 4*rr, 1, 0}, {-4*aa - 4*rr, 3, 0}, {8*aa - 24*rr, 1, 2}, 
          {-8*aa + 24*rr, 3, 2}, {4*aa + 4*rr, 1, 4}, {-4*aa - 4*rr, 3, 4}},
         {{4*rr, 0, 1}, {-4*rr, 4, 1}, {-4*rr, 0, 3},  {4*rr, 4, 3}},
         {{8*rr, 1, 1}, {8*rr, 3, 1}, {-8*rr, 1, 3}, {-8*rr, 3, 3}},
         {{1, 4, 4}, {2, 4, 2}, {1, 4, 0}, {2, 2, 4}, {4, 2, 2}, {2, 2, 0}, 
          {1, 0, 4}, {2, 0, 2}, {1, 0, 0}}};


p1 =   aa + rr - 6*aa*u^2 - 6*rr*u^2 + aa*u^4 + rr*u^4 + 2*aa*v^2 - 6*rr*v^2 -
   12*aa*u^2*v^2 + 36*rr*u^2*v^2 + 2*aa*u^4*v^2 - 6*rr*u^4*v^2 + aa*v^4 +
   rr*v^4 - 6*aa*u^2*v^4 - 6*rr*u^2*v^4 + aa*u^4*v^4 + rr*u^4*v^4

(* projection along y axis  *)

polyy = {{{aa + rr, 0, 0}, {-6*aa - 6*rr, 2, 0}, {aa + rr, 4, 0}, {2*aa - 6*rr, 0, 2}, 
          {-12*aa + 36*rr, 2, 2}, {2*aa - 6*rr, 4, 2}, {aa + rr, 0, 4},
          {-6*aa - 6*rr, 2, 4}, {aa + rr, 4, 4}},
         {{4*rr, 0, 1}, {-4*rr, 4, 1}, {-4*rr, 0, 3},  {4*rr, 4, 3}},
         {{8*rr, 1, 1}, {8*rr, 3, 1}, {-8*rr, 1, 3}, {-8*rr, 3, 3}},
         {{1, 4, 4}, {2, 4, 2}, {1, 4, 0}, {2, 2, 4}, {4, 2, 2}, {2, 2, 0}, 
          {1, 0, 4}, {2, 0, 2}, {1, 0, 0}}};


(* projection along z axis  *)

polyz = {{{aa + rr, 0, 0}, {-6*aa - 6*rr, 2, 0}, {aa + rr, 4, 0}, {2*aa - 6*rr, 0, 2}, 
          {-12*aa + 36*rr, 2, 2}, {2*aa - 6*rr, 4, 2}, {aa + rr, 0, 4},
          {-6*aa - 6*rr, 2, 4}, {aa + rr, 4, 4}},
         {{4*aa + 4*rr, 1, 0}, {-4*aa - 4*rr, 3, 0}, {8*aa - 24*rr, 1, 2}, 
          {-8*aa + 24*rr, 3, 2}, {4*aa + 4*rr, 1, 4}, {-4*aa - 4*rr, 3, 4}},
         {{8*rr, 1, 1}, {8*rr, 3, 1}, {-8*rr, 1, 3}, {-8*rr, 3, 3}},
         {{1, 4, 4}, {2, 4, 2}, {1, 4, 0}, {2, 2, 4}, {4, 2, 2}, {2, 2, 0}, 
          {1, 0, 4}, {2, 0, 2}, {1, 0, 0}}};

(* projection along t axis  *)

polyt = {{{aa + rr, 0, 0}, {-6*aa - 6*rr, 2, 0}, {aa + rr, 4, 0}, {2*aa - 6*rr, 0, 2}, 
          {-12*aa + 36*rr, 2, 2}, {2*aa - 6*rr, 4, 2}, {aa + rr, 0, 4},
          {-6*aa - 6*rr, 2, 4}, {aa + rr, 4, 4}},
         {{4*aa + 4*rr, 1, 0}, {-4*aa - 4*rr, 3, 0}, {8*aa - 24*rr, 1, 2}, 
          {-8*aa + 24*rr, 3, 2}, {4*aa + 4*rr, 1, 4}, {-4*aa - 4*rr, 3, 4}},
         {{4*rr, 0, 1}, {-4*rr, 4, 1}, {-4*rr, 0, 3},  {4*rr, 4, 3}},
         {{1, 4, 4}, {2, 4, 2}, {1, 4, 0}, {2, 2, 4}, {4, 2, 2}, {2, 2, 0}, 
          {1, 0, 4}, {2, 0, 2}, {1, 0, 0}}};



netx = contnet[polyx, 8]; kleinetx = InputForm[netx];


kleinetx =   {{0, 0, 0, 1}, {0, rr/2, 0, 1}, {0, (14*rr)/15, 0, 15/14},
   {0, (20*rr)/17, 0, 17/14}, {0, (120*rr)/101, 0, 101/70},
   {0, rr, 0, 25/14}, {0, (11*rr)/16, 0, 16/7}, {0, rr/3, 0, 3},
   {0, 0, 0, 4}, {(4*aa + 4*rr)/8, 0, 0, 1},
   {(4*aa + 4*rr)/8, rr/2, rr/7, 1},
   {(14*((8*aa - 24*rr)/168 + (4*aa + 4*rr)/8))/15, (14*rr)/15, (4*rr)/15,
    15/14}, {(14*((8*aa - 24*rr)/56 + (4*aa + 4*rr)/8))/17, (20*rr)/17,
    (28*rr)/85, 17/14}, {(70*((8*aa - 24*rr)/28 + (9*(4*aa + 4*rr))/70))/
     101, (120*rr)/101, (32*rr)/101, 101/70},
   {(14*((5*(8*aa - 24*rr))/84 + (4*aa + 4*rr)/7))/25, rr, (6*rr)/25, 25/14},
   {(7*((5*(8*aa - 24*rr))/56 + (5*(4*aa + 4*rr))/28))/16, (11*rr)/16, rr/8,
    16/7}, {((8*aa - 24*rr)/8 + (4*aa + 4*rr)/4)/3, rr/3, 0, 3},
   {(7*(4*aa + 4*rr))/30, 0, 0, 15/14},
   {(7*(4*aa + 4*rr))/30, (7*rr)/15, (4*rr)/15, 15/14},
   {(105*((8*aa - 24*rr)/84 + (4*aa + 4*rr)/4))/121, (105*rr)/121,
    (60*rr)/121, 121/105}, {(35*((8*aa - 24*rr)/28 + (4*aa + 4*rr)/4))/46,
    (25*rr)/23, (14*rr)/23, 46/35},
   {(210*((8*aa - 24*rr)/14 + (9*(4*aa + 4*rr))/35))/331, (360*rr)/331,
    (192*rr)/331, 331/210}, {(42*
       ((5*(8*aa - 24*rr))/42 + (2*(4*aa + 4*rr))/7))/83, (75*rr)/83,
    (36*rr)/83, 83/42}, {(7*((5*(8*aa - 24*rr))/28 + (5*(4*aa + 4*rr))/14))/
     18, (11*rr)/18, (2*rr)/9, 18/7},
   {(14*((-4*aa - 4*rr)/56 + (3*(4*aa + 4*rr))/8))/17, 0, 0, 17/14},
   {(14*((-4*aa - 4*rr)/56 + (3*(4*aa + 4*rr))/8))/17, (7*rr)/17,
    (32*rr)/85, 17/14}, {(35*((8*aa - 24*rr)/56 + (-4*aa - 4*rr)/56 +
         (3*(4*aa + 4*rr))/8 + (-8*aa + 24*rr)/560))/46, (35*rr)/46,
    (16*rr)/23, 46/35}, {(35*((3*(8*aa - 24*rr))/56 + (-4*aa - 4*rr)/56 +
         (3*(4*aa + 4*rr))/8 + (3*(-8*aa + 24*rr))/560))/53, (50*rr)/53,
    (89*rr)/106, 53/35}, {(70*((3*(8*aa - 24*rr))/28 +
         (3*(-4*aa - 4*rr))/140 + (27*(4*aa + 4*rr))/70 +
         (3*(-8*aa + 24*rr))/280))/129, (40*rr)/43, (100*rr)/129, 129/70},
   {(14*((5*(8*aa - 24*rr))/28 + (-4*aa - 4*rr)/28 + (3*(4*aa + 4*rr))/7 +
         (-8*aa + 24*rr)/56))/33, (25*rr)/33, (6*rr)/11, 33/14},
   {(70*((-4*aa - 4*rr)/14 + (4*aa + 4*rr)/2))/101, 0, 0, 101/70},
   {(70*((-4*aa - 4*rr)/14 + (4*aa + 4*rr)/2))/101, (34*rr)/101,
    (48*rr)/101, 101/70}, {(210*
       ((8*aa - 24*rr)/42 + (-4*aa - 4*rr)/14 + (4*aa + 4*rr)/2 +
         (-8*aa + 24*rr)/140))/331, (204*rr)/331, (288*rr)/331, 331/210},
   {(70*((8*aa - 24*rr)/14 + (-4*aa - 4*rr)/14 + (4*aa + 4*rr)/2 +
         (3*(-8*aa + 24*rr))/140))/129, (98*rr)/129, (44*rr)/43, 129/70},
   {(10*((8*aa - 24*rr)/7 + (3*(-4*aa - 4*rr))/35 +
         (18*(4*aa + 4*rr))/35 + (3*(-8*aa + 24*rr))/70))/23, (120*rr)/161,
    (144*rr)/161, 23/10}, {(14*
       ((5*(-4*aa - 4*rr))/28 + (5*(4*aa + 4*rr))/8))/25, 0, 0, 25/14},
   {(14*((5*(-4*aa - 4*rr))/28 + (5*(4*aa + 4*rr))/8))/25, (6*rr)/25,
    (14*rr)/25, 25/14}, {(42*((5*(8*aa - 24*rr))/168 +
         (5*(-4*aa - 4*rr))/28 + (5*(4*aa + 4*rr))/8 + (-8*aa + 24*rr)/56))/
     83, (36*rr)/83, (84*rr)/83, 83/42},
   {(14*((5*(8*aa - 24*rr))/56 + (5*(-4*aa - 4*rr))/28 +
         (5*(4*aa + 4*rr))/8 + (3*(-8*aa + 24*rr))/56))/33, (6*rr)/11,
    (38*rr)/33, 33/14}, {(7*((5*(-4*aa - 4*rr))/14 + (3*(4*aa + 4*rr))/4))/
     16, 0, 0, 16/7}, {(7*((5*(-4*aa - 4*rr))/14 + (3*(4*aa + 4*rr))/4))/16,
    rr/8, (5*rr)/8, 16/7}, {(7*
      ((8*aa - 24*rr)/28 + (5*(-4*aa - 4*rr))/14 + (3*(4*aa + 4*rr))/4 +
         (-8*aa + 24*rr)/28))/18, (2*rr)/9, (10*rr)/9, 18/7},
   {((5*(-4*aa - 4*rr))/8 + (7*(4*aa + 4*rr))/8)/3, 0, 0, 3},
   {((5*(-4*aa - 4*rr))/8 + (7*(4*aa + 4*rr))/8)/3, 0, (2*rr)/3, 3},
   {0, 0, 0, 4}};


(* Case rr = 1, aa = 2  *)


kleinx =  {{0, 0, 0, 1}, {0, 1/2, 0, 1}, {0, 14/15, 0, 15/14}, {0, 20/17, 0, 17/14},
   {0, 120/101, 0, 101/70}, {0, 1, 0, 25/14}, {0, 11/16, 0, 16/7},
   {0, 1/3, 0, 3}, {0, 0, 0, 4}, {3/2, 0, 0, 1}, {3/2, 1/2, 1/7, 1},
   {61/45, 14/15, 4/15, 15/14}, {19/17, 20/17, 28/85, 17/14},
   {88/101, 120/101, 32/101, 101/70}, {52/75, 1, 6/25, 25/14},
   {5/8, 11/16, 1/8, 16/7}, {2/3, 1/3, 0, 3}, {14/5, 0, 0, 15/14},
   {14/5, 7/15, 4/15, 15/14}, {305/121, 105/121, 60/121, 121/105},
   {95/46, 25/23, 14/23, 46/35}, {528/331, 360/331, 192/331, 331/210},
   {104/83, 75/83, 36/83, 83/42}, {10/9, 11/18, 2/9, 18/7},
   {60/17, 0, 0, 17/14}, {60/17, 7/17, 32/85, 17/14},
   {291/92, 35/46, 16/23, 46/35}, {273/106, 50/53, 89/106, 53/35},
   {84/43, 40/43, 100/129, 129/70}, {16/11, 25/33, 6/11, 33/14},
   {360/101, 0, 0, 101/70}, {360/101, 34/101, 48/101, 101/70},
   {1052/331, 204/331, 288/331, 331/210}, {332/129, 98/129, 44/43, 129/70},
   {304/161, 120/161, 144/161, 23/10}, {3, 0, 0, 25/14},
   {3, 6/25, 14/25, 25/14}, {221/83, 36/83, 84/83, 83/42},
   {71/33, 6/11, 38/33, 33/14}, {33/16, 0, 0, 16/7}, {33/16, 1/8, 5/8, 16/7},
   {11/6, 2/9, 10/9, 18/7}, {1, 0, 0, 3}, {1, 0, 2/3, 3}, {0, 0, 0, 4}};



rendersq[kleinx,8,-1,1,-1,1,2,0,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleinx,8,-1,1,-1,1,2,0,0,-2,2,-1.1,1.1,-1.1,1.1,0]
rendersq[kleinx,8,-1,1,-1,1,2,0,0,-1,2,-1.1,1.1,-1.1,1.1,0]
rendersq[kleinx,8,-1,1,-1,1,2,0,0,0,2,-1.1,1.1,-1.1,1.1,0]
rendersq[kleinx,8,0,1,-1,1,2,2,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleinx,8,-1,0,-1,1,2,2,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleinx,8,-1,1,0,1,2,0,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleinx,8,-1,1,-1,0,2,0,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]



nety = contnet[polyy, 8]; kleinety = InputForm[nety];

kleinety =   {{aa + rr, 0, 0, 1}, {aa + rr, rr/2, 0, 1},
   {(14*(aa + (2*aa - 6*rr)/28 + rr))/15, (14*rr)/15, 0, 15/14},
   {(14*(aa + (3*(2*aa - 6*rr))/28 + rr))/17, (20*rr)/17, 0, 17/14},
   {(70*(aa + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, (120*rr)/101,
    0, 101/70}, {(14*(aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/25,
    rr, 0, 25/14}, {(7*(aa + (15*(2*aa - 6*rr))/28 + rr +
         (3*(aa + rr))/14))/16, (11*rr)/16, 0, 16/7},
   {(aa + (3*(2*aa - 6*rr))/4 + rr + (aa + rr)/2)/3, rr/3, 0, 3},
   {(4*aa - 4*rr)/4, 0, 0, 4}, {aa + rr, 0, 0, 1}, {aa + rr, rr/2, rr/7, 1},
   {(14*(aa + (2*aa - 6*rr)/28 + rr))/15, (14*rr)/15, (4*rr)/15, 15/14},
   {(14*(aa + (3*(2*aa - 6*rr))/28 + rr))/17, (20*rr)/17, (28*rr)/85, 17/14},
   {(70*(aa + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, (120*rr)/101,
    (32*rr)/101, 101/70}, {(14*
       (aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/25, rr, (6*rr)/25,
    25/14}, {(7*(aa + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/16,
    (11*rr)/16, rr/8, 16/7}, {(aa + (3*(2*aa - 6*rr))/4 + rr + (aa + rr)/2)/
     3, rr/3, 0, 3}, {(14*(aa + (-6*aa - 6*rr)/28 + rr))/15, 0, 0, 15/14},
   {(14*(aa + (-6*aa - 6*rr)/28 + rr))/15, (7*rr)/15, (4*rr)/15, 15/14},
   {(105*(aa + (-6*aa - 6*rr)/28 + (2*aa - 6*rr)/28 + rr +
         (-12*aa + 36*rr)/420))/121, (105*rr)/121, (60*rr)/121, 121/105},
   {(35*(aa + (-6*aa - 6*rr)/28 + (3*(2*aa - 6*rr))/28 + rr +
         (-12*aa + 36*rr)/140))/46, (25*rr)/23, (14*rr)/23, 46/35},
   {(210*(aa + (4*(-6*aa - 6*rr))/105 + (3*(2*aa - 6*rr))/14 + rr +
         (aa + rr)/70 + (-12*aa + 36*rr)/70))/331, (360*rr)/331,
    (192*rr)/331, 331/210}, {(42*
       (aa + (-6*aa - 6*rr)/21 + (5*(2*aa - 6*rr))/14 + rr +
         (aa + rr)/14 + (-12*aa + 36*rr)/42))/83, (75*rr)/83, (36*rr)/83,
    83/42}, {(7*(aa + (-6*aa - 6*rr)/14 + (15*(2*aa - 6*rr))/28 + rr +
         (3*(aa + rr))/14 + (-12*aa + 36*rr)/28))/18, (11*rr)/18, (2*rr)/9, 
    18/7}, {(14*(aa + (3*(-6*aa - 6*rr))/28 + rr))/17, 0, 0, 17/14},
   {(14*(aa + (3*(-6*aa - 6*rr))/28 + rr))/17, (7*rr)/17, (32*rr)/85, 17/14},
   {(35*(aa + (3*(-6*aa - 6*rr))/28 + (2*aa - 6*rr)/28 + rr +
         (-12*aa + 36*rr)/140))/46, (35*rr)/46, (16*rr)/23, 46/35},
   {(35*(aa + (3*(-6*aa - 6*rr))/28 + (3*(2*aa - 6*rr))/28 + rr +
         (3*(-12*aa + 36*rr))/140))/53, (50*rr)/53, (89*rr)/106, 53/35},
   {(70*(aa + (4*(-6*aa - 6*rr))/35 + (3*(2*aa - 6*rr))/14 + rr +
         (aa + rr)/70 + (3*(-12*aa + 36*rr))/70))/129, (40*rr)/43,
    (100*rr)/129, 129/70}, {(14*
       (aa + (-6*aa - 6*rr)/7 + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14 +
         (-12*aa + 36*rr)/14))/33, (25*rr)/33, (6*rr)/11, 33/14},
   {(70*(aa + (3*(-6*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, 0, 0, 101/70},
   {(70*(aa + (3*(-6*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, (34*rr)/101,
    (48*rr)/101, 101/70}, {(210*
       (aa + (3*(-6*aa - 6*rr))/14 + (4*(2*aa - 6*rr))/105 + rr +
         (aa + rr)/70 + (-12*aa + 36*rr)/70))/331, (204*rr)/331,
    (288*rr)/331, 331/210}, {(70*
       (aa + (3*(-6*aa - 6*rr))/14 + (4*(2*aa - 6*rr))/35 + rr +
         (aa + rr)/70 + (3*(-12*aa + 36*rr))/70))/129, (98*rr)/129,
    (44*rr)/43, 129/70}, {(10*(aa + (8*(-6*aa - 6*rr))/35 +
         (8*(2*aa - 6*rr))/35 + rr + (3*(aa + rr))/70 +
         (3*(-12*aa + 36*rr))/35))/23, (120*rr)/161, (144*rr)/161, 23/10},
   {(14*(aa + (5*(-6*aa - 6*rr))/14 + rr + (aa + rr)/14))/25, 0, 0, 25/14},
   {(14*(aa + (5*(-6*aa - 6*rr))/14 + rr + (aa + rr)/14))/25, (6*rr)/25,
    (14*rr)/25, 25/14}, {(42*(aa + (5*(-6*aa - 6*rr))/14 +
         (2*aa - 6*rr)/21 + rr + (aa + rr)/14 + (-12*aa + 36*rr)/42))/83,
    (36*rr)/83, (84*rr)/83, 83/42},
   {(14*(aa + (5*(-6*aa - 6*rr))/14 + (2*aa - 6*rr)/7 + rr +
         (aa + rr)/14 + (-12*aa + 36*rr)/14))/33, (6*rr)/11, (38*rr)/33,
    33/14}, {(7*(aa + (15*(-6*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/16,
    0, 0, 16/7}, {(7*(aa + (15*(-6*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/
     16, rr/8, (5*rr)/8, 16/7},
   {(7*(aa + (15*(-6*aa - 6*rr))/28 + (2*aa - 6*rr)/14 + rr +
         (3*(aa + rr))/14 + (-12*aa + 36*rr)/28))/18, (2*rr)/9, (10*rr)/9,
    18/7}, {(aa + (3*(-6*aa - 6*rr))/4 + rr + (aa + rr)/2)/3, 0, 0, 3},
   {(aa + (3*(-6*aa - 6*rr))/4 + rr + (aa + rr)/2)/3, 0, (2*rr)/3, 3},
   {(-4*aa - 4*rr)/4, 0, 0, 4}}


(* Case rr = 1, aa = 2  *)


kleiny =    {{3, 0, 0, 1}, {3, 1/2, 0, 1}, {41/15, 14/15, 0, 15/14},
   {39/17, 20/17, 0, 17/14}, {183/101, 120/101, 0, 101/70},
   {7/5, 1, 0, 25/14}, {9/8, 11/16, 0, 16/7}, {1, 1/3, 0, 3}, {1, 0, 0, 4},
   {3, 0, 0, 1}, {3, 1/2, 1/7, 1}, {41/15, 14/15, 4/15, 15/14},
   {39/17, 20/17, 28/85, 17/14}, {183/101, 120/101, 32/101, 101/70},
   {7/5, 1, 6/25, 25/14}, {9/8, 11/16, 1/8, 16/7}, {1, 1/3, 0, 3},
   {11/5, 0, 0, 15/14}, {11/5, 7/15, 4/15, 15/14},
   {243/121, 105/121, 60/121, 121/105}, {39/23, 25/23, 14/23, 46/35},
   {441/331, 360/331, 192/331, 331/210}, {81/83, 75/83, 36/83, 83/42},
   {2/3, 11/18, 2/9, 18/7}, {15/17, 0, 0, 17/14},
   {15/17, 7/17, 32/85, 17/14}, {19/23, 35/46, 16/23, 46/35},
   {39/53, 50/53, 89/106, 53/35}, {25/43, 40/43, 100/129, 129/70},
   {1/3, 25/33, 6/11, 33/14}, {-57/101, 0, 0, 101/70},
   {-57/101, 34/101, 48/101, 101/70}, {-151/331, 204/331, 288/331, 331/210},
   {-37/129, 98/129, 44/43, 129/70}, {-29/161, 120/161, 144/161, 23/10},
   {-9/5, 0, 0, 25/14}, {-9/5, 6/25, 14/25, 25/14},
   {-127/83, 36/83, 84/83, 83/42}, {-37/33, 6/11, 38/33, 33/14},
   {-21/8, 0, 0, 16/7}, {-21/8, 1/8, 5/8, 16/7}, {-20/9, 2/9, 10/9, 18/7},
   {-3, 0, 0, 3}, {-3, 0, 2/3, 3}, {-3, 0, 0, 4}};


rendersq[kleiny,8,-1,1,-1,1,2,0,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0] (* very nice *)
rendersq[kleiny,8,-1,1,-1,1,2,2,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleiny,8,-1,1,-1,1,2,0,0,-0.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleiny,8,0,1,-1,1,2,0,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleiny,8,-1,0,-1,1,2,0,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleiny,8,-1,1,0,1,2,0,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]
rendersq[kleiny,8,-1,1,-1,0,2,0,0,-3.1,3.1,-1.1,1.1,-1.1,1.1,0]



netz = contnet[polyz, 8]; kleinetz = InputForm[netz];

kleinetz =  {{aa + rr, 0, 0, 1}, {aa + rr, 0, 0, 1},
   {(14*(aa + (2*aa - 6*rr)/28 + rr))/15, 0, 0, 15/14},
   {(14*(aa + (3*(2*aa - 6*rr))/28 + rr))/17, 0, 0, 17/14},
   {(70*(aa + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/101, 0, 0, 101/70},
   {(14*(aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/25, 0, 0, 25/14},
   {(7*(aa + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/16, 0, 0, 16/7},
   {(aa + (3*(2*aa - 6*rr))/4 + rr + (aa + rr)/2)/3, 0, 0, 3},
   {(4*aa - 4*rr)/4, 0, 0, 4}, {aa + rr, (4*aa + 4*rr)/8, 0, 1},
   {aa + rr, (4*aa + 4*rr)/8, rr/7, 1},
   {(14*(aa + (2*aa - 6*rr)/28 + rr))/15,
    (14*((8*aa - 24*rr)/168 + (4*aa + 4*rr)/8))/15, (4*rr)/15, 15/14},
   {(14*(aa + (3*(2*aa - 6*rr))/28 + rr))/17,
    (14*((8*aa - 24*rr)/56 + (4*aa + 4*rr)/8))/17, (28*rr)/85, 17/14},
   {(70*(aa + (3*(2*aa - 6*rr))/14 + rr + (aa + rr)/70))/101,
    (70*((8*aa - 24*rr)/28 + (9*(4*aa + 4*rr))/70))/101, (32*rr)/101, 101/70},
     {(14*(aa + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14))/25,
    (14*((5*(8*aa - 24*rr))/84 + (4*aa + 4*rr)/7))/25, (6*rr)/25, 25/14},
   {(7*(aa + (15*(2*aa - 6*rr))/28 + rr + (3*(aa + rr))/14))/16,
    (7*((5*(8*aa - 24*rr))/56 + (5*(4*aa + 4*rr))/28))/16, rr/8, 16/7},
   {(aa + (3*(2*aa - 6*rr))/4 + rr + (aa + rr)/2)/3,
    ((8*aa - 24*rr)/8 + (4*aa + 4*rr)/4)/3, 0, 3},
   {(14*(aa + (-6*aa - 6*rr)/28 + rr))/15, (7*(4*aa + 4*rr))/30, 0, 15/14},
   {(14*(aa + (-6*aa - 6*rr)/28 + rr))/15, (7*(4*aa + 4*rr))/30, (4*rr)/15,
    15/14}, {(105*(aa + (-6*aa - 6*rr)/28 + (2*aa - 6*rr)/28 + rr +
         (-12*aa + 36*rr)/420))/121,
    (105*((8*aa - 24*rr)/84 + (4*aa + 4*rr)/4))/121, (60*rr)/121, 121/105},
   {(35*(aa + (-6*aa - 6*rr)/28 + (3*(2*aa - 6*rr))/28 + rr +
         (-12*aa + 36*rr)/140))/46,
    (35*((8*aa - 24*rr)/28 + (4*aa + 4*rr)/4))/46, (14*rr)/23, 46/35},
   {(210*(aa + (4*(-6*aa - 6*rr))/105 + (3*(2*aa - 6*rr))/14 + rr +
         (aa + rr)/70 + (-12*aa + 36*rr)/70))/331,
    (210*((8*aa - 24*rr)/14 + (9*(4*aa + 4*rr))/35))/331, (192*rr)/331,
   331/210}, {(42*(aa + (-6*aa - 6*rr)/21 + (5*(2*aa - 6*rr))/14 + rr +
         (aa + rr)/14 + (-12*aa + 36*rr)/42))/83,
    (42*((5*(8*aa - 24*rr))/42 + (2*(4*aa + 4*rr))/7))/83, (36*rr)/83, 83/42},
     {(7*(aa + (-6*aa - 6*rr)/14 + (15*(2*aa - 6*rr))/28 + rr +
         (3*(aa + rr))/14 + (-12*aa + 36*rr)/28))/18,
    (7*((5*(8*aa - 24*rr))/28 + (5*(4*aa + 4*rr))/14))/18, (2*rr)/9, 18/7},
   {(14*(aa + (3*(-6*aa - 6*rr))/28 + rr))/17,
    (14*((-4*aa - 4*rr)/56 + (3*(4*aa + 4*rr))/8))/17, 0, 17/14},
   {(14*(aa + (3*(-6*aa - 6*rr))/28 + rr))/17,
    (14*((-4*aa - 4*rr)/56 + (3*(4*aa + 4*rr))/8))/17, (32*rr)/85, 17/14},
   {(35*(aa + (3*(-6*aa - 6*rr))/28 + (2*aa - 6*rr)/28 + rr +
         (-12*aa + 36*rr)/140))/46,
    (35*((8*aa - 24*rr)/56 + (-4*aa - 4*rr)/56 + (3*(4*aa + 4*rr))/8 +
         (-8*aa + 24*rr)/560))/46, (16*rr)/23, 46/35},
   {(35*(aa + (3*(-6*aa - 6*rr))/28 + (3*(2*aa - 6*rr))/28 + rr +
         (3*(-12*aa + 36*rr))/140))/53,
    (35*((3*(8*aa - 24*rr))/56 + (-4*aa - 4*rr)/56 + (3*(4*aa + 4*rr))/8 +
         (3*(-8*aa + 24*rr))/560))/53, (89*rr)/106, 53/35},
   {(70*(aa + (4*(-6*aa - 6*rr))/35 + (3*(2*aa - 6*rr))/14 + rr +
         (aa + rr)/70 + (3*(-12*aa + 36*rr))/70))/129,
    (70*((3*(8*aa - 24*rr))/28 + (3*(-4*aa - 4*rr))/140 +
         (27*(4*aa + 4*rr))/70 + (3*(-8*aa + 24*rr))/280))/129,
    (100*rr)/129, 129/70}, {(14*
       (aa + (-6*aa - 6*rr)/7 + (5*(2*aa - 6*rr))/14 + rr + (aa + rr)/14 +
         (-12*aa + 36*rr)/14))/33,
    (14*((5*(8*aa - 24*rr))/28 + (-4*aa - 4*rr)/28 + (3*(4*aa + 4*rr))/7 +
         (-8*aa + 24*rr)/56))/33, (6*rr)/11, 33/14},
   {(70*(aa + (3*(-6*aa - 6*rr))/14 + rr + (aa + rr)/70))/101,
    (70*((-4*aa - 4*rr)/14 + (4*aa + 4*rr)/2))/101, 0, 101/70},
   {(70*(aa + (3*(-6*aa - 6*rr))/14 + rr + (aa + rr)/70))/101,
    (70*((-4*aa - 4*rr)/14 + (4*aa + 4*rr)/2))/101, (48*rr)/101, 101/70},
   {(210*(aa + (3*(-6*aa - 6*rr))/14 + (4*(2*aa - 6*rr))/105 + rr +
         (aa + rr)/70 + (-12*aa + 36*rr)/70))/331,
    (210*((8*aa - 24*rr)/42 + (-4*aa - 4*rr)/14 + (4*aa + 4*rr)/2 +
         (-8*aa + 24*rr)/140))/331, (288*rr)/331, 331/210},
   {(70*(aa + (3*(-6*aa - 6*rr))/14 + (4*(2*aa - 6*rr))/35 + rr +
         (aa + rr)/70 + (3*(-12*aa + 36*rr))/70))/129,
    (70*((8*aa - 24*rr)/14 + (-4*aa - 4*rr)/14 + (4*aa + 4*rr)/2 +
         (3*(-8*aa + 24*rr))/140))/129, (44*rr)/43, 129/70},
   {(10*(aa + (8*(-6*aa - 6*rr))/35 + (8*(2*aa - 6*rr))/35 + rr +
         (3*(aa + rr))/70 + (3*(-12*aa + 36*rr))/35))/23,
    (10*((8*aa - 24*rr)/7 + (3*(-4*aa - 4*rr))/35 +
         (18*(4*aa + 4*rr))/35 + (3*(-8*aa + 24*rr))/70))/23, (144*rr)/161,
    23/10}, {(14*(aa + (5*(-6*aa - 6*rr))/14 + rr + (aa + rr)/14))/25,
    (14*((5*(-4*aa - 4*rr))/28 + (5*(4*aa + 4*rr))/8))/25, 0,