#@ CLASS: net `Class/Declare`("net", "An instance of this class represents a net which can be glued to produce a cromulent surface. ", ["Constructor","", proc(this) this["v"] := table(); this["v_anchor"] := table(): this["squares"] := table(): this["square_centres"] := table(): end ], ["Field","name"::string,"A name for the net"], ["Field","v"::table,"This is a table of points in $\\mathbb{R}^2$. The indices are integers in $\\{0,1,\\dotsc,13\\}$, or integers in that range plus a multiple of $0.1$. The idea is that vertices indexed 10, 10.1, 10.2 and so on will all be identified together and will become the vertex $v_{10}$ in the glued surface"], ["Field","edges"::list([numeric,numeric]),"This is a list of pairs. A pair @[i,j]@ appears in the list if @i@ and @j@ are indices in the @v@ table, and there is an edge from vertex @i@ to vertex @j@ in the net."], ["Field","outer_edges"::list([numeric,numeric]),"This is a list containing some of the entries in the @edges@ list, namely those that lie on the boundary of the net. It can be set by the @set_outer_edges@ method."], ["Field","squares"::table,"This is a table indexed by the 16 elements of the group $G$. Each entry is a list of four indices from the @v@ table. If $g\\in G$ and $F$ is the fundamental domain, then the net will have a quadrilateral region corresponding to $g.F$, and the corners of that region are indexed by the elements of the $g$'th element in the @squares@ table. These indices should be listed so that they correspond to $g.v_6$, $g.v_0$, $g.v_{11}$ and $g.v_3$ in that order."], ["Field","square_centres"::table,"This is a table indexed by the 16 elements of the group $G$, withentries in $\\mathbb{R}^2$. The $g$'th entry is the barycentre of the quadrilateral region in the net corresponding to $g.F$."], ["Field","tikz_scale"::numeric = 1,"This is the scale parameter that should be used when generating a tikzpicture environment illustrating this net."], ["Field","v_anchor"::table,"This is a table with the same indices as the @v@ table. The entries are strings like \"north\", \"south east\" and so on. These entries indicate where the relevant vertex labels should be placed relative to the vertices themselves."], ["Method","set_edges_from_squares","If the @squares@ table has been filled, then this method can be used to fill the @edges@ list.", proc(this) local Q,E; E := map(Q ->[[Q[1],Q[2]],[Q[2],Q[3]],[Q[3],Q[4]],[Q[4],Q[1]]], {seq(this["squares"][T],T in G16)}); E := sort(map(sort,map(op,E))); this["edges"] := [op(E)]; end ], ["Method","set_square_centres","This fills the @square_centres@ table using information from the @v@ and @squares@ tables.", proc(this) local T,Q; for T in G16 do Q := this["squares"][T]; this["square_centres"][T] := this["v"][Q[1]] /~ 4 +~ this["v"][Q[2]] /~ 4 +~ this["v"][Q[3]] /~ 4 +~ this["v"][Q[4]] /~ 4; od: end ], ["Method","set_outer_edges","This works out which edges lie on the boundary of the net.", proc(this) local E,S,N,T,Q,e; E := this["edges"]; S := this["squares"]; N := table(); for e in E do N[e] := 0; od; for T in G16 do Q := S[T]; e := sort([Q[1],Q[2]]); N[e] := N[e] + 1; e := sort([Q[2],Q[3]]); N[e] := N[e] + 1; e := sort([Q[3],Q[4]]); N[e] := N[e] + 1; e := sort([Q[4],Q[1]]); N[e] := N[e] + 1; od; this["outer_edges"] := select(e -> (N[e] = 1),E); end ], ["Method","plot","This generates a Maple plot illustrating the net.", proc(this) local V; V := eval(this["v"]); display(map(e -> line(V[e[1]],V[e[2]],colour=edge_colour(e)), this["edges"]), seq(textplot([op(V[i]),i]), i in map(op,[indices(V)])), seq(textplot([op(this["square_centres"][T]),T]),T in G16), axes = none ); end ], ["Method","save_plot","This calls the @plot@ method and saves the result, both as en entry in the global variable @pics@ and as a file in the @plots@ directory", proc(this) global pics; pics[this["name"]] := this["plot"]; save_plot(this["name"]); end ], ["Method","outer_edge_plot","This generates a Maple plot showing the outer edges of the net.", proc(this) local V,W,E; V := eval(this["v"]); E := this["outer_edges"]; W := {op(map(op,E))}; display(map(e -> line(V[e[1]],V[e[2]],colour=edge_colour(e)), this["outer_edges"]), seq(textplot([op(V[i]),i]),i in W), axes = none ); end ], ["Method","tikz","This generates a tikzpicture environment illustrating the net.", proc(this,scale_) local scale,s,e,i,ii,aa,T,V,E; V := eval(this["v"]); E := eval(this["edges"]); scale := `if`(nargs > 1, scale_, this["tikz_scale"]); s := "% Generated by net_square_tikz()\n"; s := cat(s,sprintf("\\begin{tikzpicture}[scale=%A]\n",scale)); for e in E do s := cat(s,sprintf(" \\draw[%7A] (%3d,%3d) -- (%3d,%3d);\n", edge_colour(e),op(V[e[1]]),op(V[e[2]]))); od: for i in map(op,[indices(V)]) do ii := `if`(0 aa := this["v_anchor"][i]; if type(aa,string) then aa := cat("[anchor=",aa,"]"); else aa := ""; fi; s := cat(s,sprintf(" \\draw (%3d,%3d) node%s{$\\ss %s$};\n",op(V[i]),aa,ii)); od; for T in G16 do s := cat(s,sprintf(" \\draw (%3.2f,%3.2f) node{$%s$};\n", op(this["square_centres"][T]),G_latex[T])); od; s := cat(s,"\\end{tikzpicture}\n"); return(s); end ], ["Method","save_tikz","This calls the @tikz@ method and saves the result", proc(this) save_tikz(this["name"],this["tikz"]); end ], ["Method","check","This checks the combinatorial structure of the net. It uses the global variable @edges@, which is set in @cromulent.mpl@", proc(this) local T; _ASSERT( sort([op({op(map(u -> map(floor,u),this["edges"]))})]) = edges, sprintf("Net %s: correct edge set",this["name"]) ); for T in G16 do _ASSERT( map(act_V[T],[6,0,11,3]) = map(floor,this["squares"][T]), sprintf("Net %s, square %A: correct vertices",this["name"],T) ); od; end ] ); ###################################################################### #@ net_0 net_0 := `new/net`(); net_0["name"] := "net_0"; net_0["v"] := table(): net_0["v"][ 0 ] := [ 0, 0]: net_0["v"][ 1 ] := [ 12, 12]: net_0["v"][ 1.1] := [-12, 12]: net_0["v"][ 1.2] := [-12, -12]: net_0["v"][ 1.3] := [ 12, -12]: net_0["v"][ 2 ] := [ 4, 8]: net_0["v"][ 2.1] := [ 4, -8]: net_0["v"][ 3 ] := [ 8, 4]: net_0["v"][ 3.1] := [ -8, 4]: net_0["v"][ 4 ] := [ -4, 8]: net_0["v"][ 4.1] := [ -4, -8]: net_0["v"][ 5 ] := [ 8, -4]: net_0["v"][ 5.1] := [ -8, -4]: net_0["v"][ 6 ] := [ 6, 6]: net_0["v"][ 7 ] := [ -6, 6]: net_0["v"][ 8 ] := [ -6, -6]: net_0["v"][ 9 ] := [ 6, -6]: net_0["v"][ 10 ] := [ 0, 8]: net_0["v"][ 10.1] := [ 0, -8]: net_0["v"][ 11 ] := [ 8, 0]: net_0["v"][ 11.1] := [ -8, 0]: net_0["v"][ 12 ] := [ 4, 12]: net_0["v"][ 12.1] := [ -4, -12]: net_0["v"][ 12.2] := [ -4, 12]: net_0["v"][ 12.3] := [ 4, -12]: net_0["v"][ 13 ] := [ 12, 4]: net_0["v"][ 13.1] := [-12, -4]: net_0["v"][ 13.2] := [ 12, -4]: net_0["v"][ 13.3] := [-12, 4]: net_0["v_anchor"][ 0 ] := "north"; net_0["v_anchor"][ 1 ] := "south west"; net_0["v_anchor"][ 1.1] := "south east"; net_0["v_anchor"][ 1.2] := "north east"; net_0["v_anchor"][ 1.3] := "north west"; net_0["v_anchor"][ 2 ] := "south east"; net_0["v_anchor"][ 2.1] := "north east"; net_0["v_anchor"][ 3.1] := "north east"; net_0["v_anchor"][ 3 ] := "north west"; net_0["v_anchor"][ 4.1] := "north west"; net_0["v_anchor"][ 4 ] := "south west"; net_0["v_anchor"][ 5 ] := "south west"; net_0["v_anchor"][ 5.1] := "south east"; net_0["v_anchor"][ 6 ] := "north"; net_0["v_anchor"][ 7 ] := "north"; net_0["v_anchor"][ 8 ] := "north"; net_0["v_anchor"][ 9 ] := "north"; net_0["v_anchor"][10 ] := "south"; net_0["v_anchor"][10.1] := "north"; net_0["v_anchor"][11 ] := "west"; net_0["v_anchor"][11.1] := "east"; net_0["v_anchor"][12.2] := "south west"; net_0["v_anchor"][12.3] := "north east"; net_0["v_anchor"][12 ] := "south east"; net_0["v_anchor"][12.1] := "north west"; net_0["v_anchor"][13 ] := "north west"; net_0["v_anchor"][13.1] := "south east"; net_0["v_anchor"][13.2] := "south west"; net_0["v_anchor"][13.3] := "north east"; net_0["squares"] := table([ 1 = [6, 0 , 11 , 3 ], L = [7, 0 , 10 , 4 ], LL = [8, 0 , 11.1, 5.1], LLL = [9, 0 , 10.1, 2.1], M = [9, 1.3, 13.2, 5 ], LM = [6, 1 , 12 , 2 ], LLM = [7, 1.1, 13.3, 3.1], LLLM = [8, 1.2, 12.1, 4.1], N = [9, 0 , 11 , 5 ], LN = [6, 0 , 10 , 2 ], LLN = [7, 0 , 11.1, 3.1], LLLN = [8, 0 , 10.1, 4.1], MN = [6, 1 , 13 , 3 ], LMN = [7, 1.1, 12.2, 4 ], LLMN = [8, 1.2, 13.1, 5.1], LLLMN = [9, 1.3, 12.3, 2.1] ]): net_0["set_edges_from_squares"]; net_0["tikz_scale"] := 0.5; net_0["set_outer_edges"]; net_0["set_square_centres"]; ###################################################################### #@ net_1 net_1 := `new/net`(); net_1["name"] := "net_1"; net_1["v"] := table(): net_1["v"][ 0 ] := [ 4, 4]: net_1["v"][ 0.1] := [ -4, 4]: net_1["v"][ 0.2] := [ -4, -4]: net_1["v"][ 0.3] := [ 4, -4]: net_1["v"][ 1 ] := [ 2, 2]: net_1["v"][ 1.1] := [ -2, 2]: net_1["v"][ 1.2] := [ -2, -2]: net_1["v"][ 1.3] := [ 2, -2]: net_1["v"][ 2 ] := [ 0, 3]: net_1["v"][ 3 ] := [ -3, 0]: net_1["v"][ 4 ] := [ 0, -3]: net_1["v"][ 5 ] := [ 3, 0]: net_1["v"][ 6 ] := [ -3, 3]: net_1["v"][ 7 ] := [ -3, -3]: net_1["v"][ 8 ] := [ 3, -3]: net_1["v"][ 9 ] := [ 3, 3]: net_1["v"][ 10 ] := [ 0, 4]: net_1["v"][ 10.1] := [ 0, -4]: net_1["v"][ 11 ] := [ 4, 0]: net_1["v"][ 11.1] := [ -4, 0]: net_1["v"][ 12 ] := [ 0, 2]: net_1["v"][ 12.1] := [ 0, -2]: net_1["v"][ 13 ] := [ 2, 0]: net_1["v"][ 13.1] := [ -2, 0]: net_1["v_anchor"][ 0 ] := "south west"; net_1["v_anchor"][ 0.1] := "south east"; net_1["v_anchor"][ 0.2] := "north east"; net_1["v_anchor"][ 0.3] := "north west"; net_1["v_anchor"][ 1 ] := "north east"; net_1["v_anchor"][ 1.1] := "north west"; net_1["v_anchor"][ 1.2] := "south west"; net_1["v_anchor"][ 1.3] := "south east"; net_1["v_anchor"][ 10 ] := "south"; net_1["v_anchor"][ 10.1] := "north"; net_1["v_anchor"][ 11 ] := "west"; net_1["v_anchor"][ 11.1] := "east"; net_1["v_anchor"][ 12 ] := "north"; net_1["v_anchor"][ 12.1] := "south"; net_1["v_anchor"][ 13 ] := "east"; net_1["v_anchor"][ 13.1] := "west"; net_1["squares"] := table([ 1 = [6,0.1,11.1,3], L = [7,0.2,10.1,4], LL = [8,0.3,11 ,5], LLL = [9,0 ,10 ,2], M = [9,1 ,13 ,5], LM = [6,1.1,12 ,2], LLM = [7,1.2,13.1,3], LLLM = [8,1.3,12.1,4], N = [9,0 ,11 ,5], LN = [6,0.1,10 ,2], LLN = [7,0.2,11.1,3], LLLN = [8,0.3,10.1,4], MN = [6,1.1,13.1,3], LMN = [7,1.2,12.1,4], LLMN = [8,1.3,13 ,5], LLLMN = [9,1 ,12 ,2] ]): net_1["set_edges_from_squares"]; net_1["set_outer_edges"]; net_1["set_square_centres"]; ###################################################################### #@ net_2 net_2 := `new/net`(); net_2["name"] := "net_2"; net_2["v"] := table(): net_2["v"][ 0 ] := [ -4, 0]: net_2["v"][ 0.1] := [ -4, 8]: net_2["v"][ 0.2] := [ -4, -8]: net_2["v"][ 1 ] := [ 4, 0]: net_2["v"][ 1.1] := [ 4, 8]: net_2["v"][ 1.2] := [ 4, -8]: net_2["v"][ 2 ] := [ 0, 4]: net_2["v"][ 3 ] := [ 0, -4]: net_2["v"][ 4 ] := [ 8, 4]: net_2["v"][ 4.1] := [ -8, 4]: net_2["v"][ 5 ] := [ 8, -4]: net_2["v"][ 5.1] := [ -8, -4]: net_2["v"][ 6 ] := [ 0, 0]: net_2["v"][ 7 ] := [ 8, 1]: net_2["v"][ 7.1] := [ -8, 1]: net_2["v"][ 7.2] := [ 0, -8]: net_2["v"][ 8 ] := [ 8, 8]: net_2["v"][ 8.1] := [ -8, 8]: net_2["v"][ 8.2] := [ -8, -8]: net_2["v"][ 8.3] := [ 8, -8]: net_2["v"][ 9 ] := [ 8, -1]: net_2["v"][ 9.1] := [ -8, -1]: net_2["v"][ 9.2] := [ 0, 8]: net_2["v"][ 10 ] := [ -4, 4]: net_2["v"][ 11 ] := [ -4, -4]: net_2["v"][ 12 ] := [ 4, 4]: net_2["v"][ 13 ] := [ 4, -4]: net_2["v_anchor"][ 0 ] := "east"; net_2["v_anchor"][ 0.1] := "south"; net_2["v_anchor"][ 0.2] := "north"; net_2["v_anchor"][ 1 ] := "west"; net_2["v_anchor"][ 1.1] := "south"; net_2["v_anchor"][ 1.2] := "north"; net_2["v_anchor"][ 4 ] := "west"; net_2["v_anchor"][ 4.1] := "east"; net_2["v_anchor"][ 5 ] := "west"; net_2["v_anchor"][ 5.1] := "east"; net_2["v_anchor"][ 7 ] := "west"; net_2["v_anchor"][ 7.1] := "east"; net_2["v_anchor"][ 7.2] := "north"; net_2["v_anchor"][ 8 ] := "south west"; net_2["v_anchor"][ 8.1] := "south east"; net_2["v_anchor"][ 8.2] := "north east"; net_2["v_anchor"][ 8.3] := "north west"; net_2["v_anchor"][ 9 ] := "west"; net_2["v_anchor"][ 9.1] := "east"; net_2["v_anchor"][ 9.2] := "south"; net_2["squares"] := table([ 1 = [ 6 ,0 , 11 , 3 ], L = [ 7.1,0 , 10 , 4.1], LL = [ 8.2,0.2, 11 , 5.1], LLL = [ 9.2,0.1, 10 , 2 ], M = [ 9 ,1 , 13 , 5 ], LM = [ 6 ,1 , 12 , 2 ], LLM = [ 7.2,1.2, 13 , 3 ], LLLM = [ 8 ,1.1, 12 , 4 ], N = [ 9.1,0 , 11 , 5.1], LN = [ 6 ,0 , 10 , 2 ], LLN = [ 7.2,0.2, 11 , 3 ], LLLN = [ 8.1,0.1, 10 , 4.1], MN = [ 6 ,1 , 13 , 3 ], LMN = [ 7 ,1 , 12 , 4 ], LLMN = [ 8.3,1.2, 13 , 5 ], LLLMN = [ 9.2,1.1, 12 , 2 ] ]): net_2["tikz_scale"] := 0.5; net_2["set_edges_from_squares"]; net_2["set_outer_edges"]; net_2["set_square_centres"]; ###################################################################### #@ net_3 net_3 := `new/net`(); net_3["name"] := "net_3"; net_3["v"] := table(): net_3["v"][ 0 ] := [ 8, 4]: net_3["v"][ 0.1] := [ -8, 4]: net_3["v"][ 0.2] := [ -8, -4]: net_3["v"][ 0.3] := [ 8, -4]: net_3["v"][ 1 ] := [ 0, 4]: net_3["v"][ 1.1] := [ 0, -4]: net_3["v"][ 2 ] := [ 4, 8]: net_3["v"][ 2.1] := [ -4, 8]: net_3["v"][ 3 ] := [ -4, 0]: net_3["v"][ 4 ] := [ 4, -8]: net_3["v"][ 4.1] := [ -4, -8]: net_3["v"][ 5 ] := [ 4, 0]: net_3["v"][ 6 ] := [ -4, 4]: net_3["v"][ 7 ] := [ -4, -4]: net_3["v"][ 8 ] := [ 4, -4]: net_3["v"][ 9 ] := [ 4, 4]: net_3["v"][ 10 ] := [ 8, 8]: net_3["v"][ 10.1] := [ -8, 8]: net_3["v"][ 10.2] := [ -8, -8]: net_3["v"][ 10.3] := [ 8, -8]: net_3["v"][ 11 ] := [ 8, 0]: net_3["v"][ 11.1] := [ -8, 0]: net_3["v"][ 12 ] := [ 1, 8]: net_3["v"][ 12.1] := [ -1, 8]: net_3["v"][ 12.2] := [ -1, -8]: net_3["v"][ 12.3] := [ 1, -8]: net_3["v"][ 13 ] := [ 0, 0]: net_3["v_anchor"][ 0 ] := "west"; net_3["v_anchor"][ 0.1] := "east"; net_3["v_anchor"][ 0.2] := "east"; net_3["v_anchor"][ 0.3] := "west"; net_3["v_anchor"][ 1 ] := "south"; net_3["v_anchor"][ 1.1] := "north"; net_3["v_anchor"][ 2 ] := "south"; net_3["v_anchor"][ 2.1] := "south"; net_3["v_anchor"][ 4 ] := "north"; net_3["v_anchor"][ 4.1] := "north"; net_3["v_anchor"][ 10 ] := "south west"; net_3["v_anchor"][ 10.1] := "south east"; net_3["v_anchor"][ 10.2] := "north east"; net_3["v_anchor"][ 10.3] := "north west"; net_3["v_anchor"][ 11 ] := "west"; net_3["v_anchor"][ 11.1] := "east"; net_3["v_anchor"][ 12 ] := "south"; net_3["v_anchor"][ 12.1] := "south"; net_3["v_anchor"][ 12.2] := "north"; net_3["v_anchor"][ 12.3] := "north"; net_3["squares"] := table([ 1 = [ 6 ,0.1, 11.1, 3 ], L = [ 7 ,0.2, 10.2, 4.1], LL = [ 8 ,0.3, 11 , 5 ], LLL = [ 9 ,0 , 10 , 2 ], M = [ 9 ,1 , 13 , 5 ], LM = [ 6 ,1 , 12.1, 2.1], LLM = [ 7 ,1.1, 13 , 3 ], LLLM = [ 8 ,1.1, 12.3, 4 ], N = [ 9 ,0 , 11 , 5 ], LN = [ 6 ,0.1, 10.1, 2.1], LLN = [ 7 ,0.2, 11.1, 3 ], LLLN = [ 8 ,0.3, 10.3, 4 ], MN = [ 6 ,1 , 13 , 3 ], LMN = [ 7 ,1.1, 12.2, 4.1], LLMN = [ 8 ,1.1, 13 , 5 ], LLLMN = [ 9 ,1 , 12 , 2 ] ]): net_3["tikz_scale"] := 0.5; net_3["set_edges_from_squares"]; net_3["set_outer_edges"]; net_3["set_square_centres"]; ###################################################################### #@ net_5 net_5 := `new/net`(); net_5["name"] := "net_5"; net_5["v"] := table(): net_5["v"][ 0 ] := [ 3, 2]: net_5["v"][ 0.1] := [ 2, 6]: net_5["v"][ 0.2] := [ -2, 3]: net_5["v"][ 0.3] := [ -6, 2]: net_5["v"][ 0.4] := [ -3, -2]: net_5["v"][ 0.5] := [ -2, -6]: net_5["v"][ 0.6] := [ 2, -3]: net_5["v"][ 0.7] := [ 6, -2]: net_5["v"][ 1 ] := [ 0, 0]: net_5["v"][ 2 ] := [ 3, 1]: net_5["v"][ 2.1] := [ -3, 1]: net_5["v"][ 3 ] := [ 1, -3]: net_5["v"][ 3.1] := [ 1, 3]: net_5["v"][ 4 ] := [ -3, -1]: net_5["v"][ 4.1] := [ 3, -1]: net_5["v"][ 5 ] := [ -1, 3]: net_5["v"][ 5.1] := [ -1, -3]: net_5["v"][ 6 ] := [ 2, 2]: net_5["v"][ 6.1] := [ -6, 1]: net_5["v"][ 7 ] := [ 2, -2]: net_5["v"][ 7.1] := [ 1, 6]: net_5["v"][ 8 ] := [ -2, -2]: net_5["v"][ 8.1] := [ 6, -1]: net_5["v"][ 9 ] := [ -2, 2]: net_5["v"][ 9.1] := [ -1, -6]: net_5["v"][ 10 ] := [ 5, -3]: net_5["v"][ 10.1] := [ -5, 3]: net_5["v"][ 11 ] := [ 3, 5]: net_5["v"][ 11.1] := [ -3, -5]: net_5["v"][ 12 ] := [ 3, 0]: net_5["v"][ 12.1] := [ -3, 0]: net_5["v"][ 13 ] := [ 0, 3]: net_5["v"][ 13.1] := [ 0, -3]: net_5["v_anchor"][ 0 ] := "west": net_5["v_anchor"][ 0.1] := "south west": net_5["v_anchor"][ 0.2] := "south": net_5["v_anchor"][ 0.3] := "south east": net_5["v_anchor"][ 0.4] := "east": net_5["v_anchor"][ 0.5] := "north east": net_5["v_anchor"][ 0.6] := "north": net_5["v_anchor"][ 0.7] := "north west": net_5["v_anchor"][ 1 ] := "east": net_5["v_anchor"][ 2 ] := "west": net_5["v_anchor"][ 2.1] := "north east": net_5["v_anchor"][ 3 ] := "north": net_5["v_anchor"][ 3.1] := "south east": net_5["v_anchor"][ 4 ] := "east": net_5["v_anchor"][ 4.1] := "south west": net_5["v_anchor"][ 5 ] := "south": net_5["v_anchor"][ 5.1] := "north west": net_5["v_anchor"][ 6 ] := "south": net_5["v_anchor"][ 6.1] := "north": net_5["v_anchor"][ 7 ] := "west": net_5["v_anchor"][ 7.1] := "east": net_5["v_anchor"][ 8 ] := "north": net_5["v_anchor"][ 8.1] := "south": net_5["v_anchor"][ 9 ] := "east": net_5["v_anchor"][ 9.1] := "west": net_5["v_anchor"][ 10 ] := "north": net_5["v_anchor"][ 10.1] := "south": net_5["v_anchor"][ 11 ] := "west": net_5["v_anchor"][ 11.1] := "east": net_5["v_anchor"][ 12 ] := "west": net_5["v_anchor"][ 12.1] := "east": net_5["v_anchor"][ 13 ] := "south": net_5["v_anchor"][ 13.1] := "north": net_5["squares"] := table([ 1 = [ 6 ,0 , 11 , 3.1], L = [ 7 ,0.6, 10 , 4.1], LL = [ 8 ,0.4, 11.1, 5.1], LLL = [ 9 ,0.2, 10.1, 2.1], M = [ 9 ,1 , 13 , 5 ], LM = [ 6 ,1 , 12 , 2 ], LLM = [ 7 ,1 , 13.1, 3 ], LLLM = [ 8 ,1 , 12.1, 4 ], N = [ 9.1,0.5, 11.1, 5.1], LN = [ 6.1,0.3, 10.1, 2.1], LLN = [ 7.1,0.1, 11 , 3.1], LLLN = [ 8.1,0.7, 10 , 4.1], MN = [ 6 ,1 , 13 , 3.1], LMN = [ 7 ,1 , 12 , 4.1], LLMN = [ 8 ,1 , 13.1, 5.1], LLLMN = [ 9 ,1 , 12.1, 2.1] ]): net_5["set_edges_from_squares"]; net_5["set_outer_edges"]; net_5["set_square_centres"];