# This is a generic function for drawing a picture of the image of a map # p : EX -> R^2. The function p is given as the first argument. # The last argument filter_ can be omitted or set to "F4" or "F16". # If it is set, then only p(F4) or p(F16) will be drawn rather than # the whole of p(EX). # # The argument v_label_align should be a table indexed by a subset of # {0,...,13} specifying the alignment of vertex labels relative to the # point marking the vertex itself. The argument c_label_param should be # a table indexed by a subset of {0,...,8}. If the i'th entry is t0 # then a label for c[i] will be placed near to p(c[i](t0)), with # alignment specified by c_label_align[i]. # # There is some logic to provide readable labels in the case where # several different vertices have the same image under p. #@ plane_proj_plot plane_proj_plot := proc( p,v_label_align,c_label_param,c_label_align,filter_ ) local filter,II,JJ,CL,i,j,vv,vla,vlm,cc,cla,t0,a0,x0,P; if nargs < 5 then filter := NULL; else filter := filter_; fi; if filter = "F16" then II := F16_vertices; JJ := select(j -> F16_curve_limits[j] <> NULL,{seq(j,j=0..8)}); CL := F16_curve_limits; elif filter = "F4" then II := F4_vertices; JJ := select(j -> F4_curve_limits[j] <> NULL,{seq(j,j=0..8)}); CL := F4_curve_limits; else II := {seq(i,i=0..13)}; JJ := {seq(j,j=0..8)}; CL := table([seq(i = 0..2*Pi,i=0..8)]); fi; vv := table(); vla := table(); vlm := table(); for i in II do vv[i] := simplify(subs(a_E=a_E0,p(v_E0[i]))); vla[vv[i]] := 'below'; if type(vlm[vv[i]],list) then vlm[vv[i]] := [op(vlm[vv[i]]),i]; else vlm[vv[i]] := [i]; fi; od; cc := table(); cla := table(); for i in JJ do cla[i] := 'below'; cc[i] := unapply(simplify(subs(a_E=a_E0,p(c_E0[i](t)))),t); od; for i in map(op,[indices(v_label_align)]) do vla[vv[i]] := v_label_align[i]; od; for i in map(op,[indices(c_label_align)]) do cla[i] := c_label_align[i]; od; P := seq(plot([op(cc[i](t)),t=CL[i]],colour=c_colour[i]),i in JJ); P := P,seq(point(vv[i]),i in II); P := P, seq( textplot([op(evalf(op(ii))),sprintf("%Q",op(vlm[op(ii)]))],'align'=vla[op(ii)]), ii in indices(vlm) ); for i in map(op,[indices(c_label_param)]) do if member(i,JJ) then t0 := c_label_param[i]; a0 := cla[i]; x0 := evalf(subs(a_E=a_E0,cc[i](t0))); P := P,textplot([op(x0),i],'align'=a0,colour=red); fi; od; return display(P,scaling=constrained,axes=none); end: ###################################################################### # This function is similar to plane_proj_plot() except that it generates # tikz code for inclusion in the latex file rather than a Maple plot. #@ plane_proj_tikz plane_proj_tikz := proc( p,v_label_align,c_label_param,c_label_align ) local filter,II,JJ,CL,i,j,vv,vla,vlm,cc,cla,t0,t1,t2,a0,a1,a2,a3,x0,s,s0,a,ls,comma, scale,point_size,num_points,label_size,centred,raw,ranges,arrows,extra; filter := NULL; scale := 4; point_size := 0.02; num_points := 10; raw := false; centred := false; ranges := false; label_size := ""; arrows := []; extra := ""; for a in args[5..-1] do if a = "F4" or a = "F16" then filter := a; elif type(a,`=`) then if lhs(a) = "scale" then scale := rhs(a); fi; if lhs(a) = "point_size" then point_size := rhs(a); fi; if lhs(a) = "label_size" then label_size := rhs(a); fi; if lhs(a) = "num_points" then num_points := rhs(a); fi; if lhs(a) = "centred" then centred := rhs(a); fi; if lhs(a) = "raw" then raw := rhs(a); fi; if lhs(a) = "ranges" then ranges := rhs(a); fi; if lhs(a) = "arrows" then arrows := rhs(a); fi; if lhs(a) = "extra" then extra := rhs(a); fi; fi; od; if label_size = "subscript" then ls := "\\ss "; elif label_size = "subsubscript" then ls := "\\sss "; else ls := ""; fi; if filter = "F16" then II := F16_vertices; JJ := select(j -> F16_curve_limits[j] <> NULL,{seq(j,j=0..8)}); CL := F16_curve_limits; elif filter = "F4" then II := F4_vertices; JJ := select(j -> F4_curve_limits[j] <> NULL,{seq(j,j=0..8)}); CL := F4_curve_limits; else II := {seq(i,i=0..13)}; JJ := {seq(j,j=0..8)}; CL := table([seq(i = 0..2*Pi,i=0..8)]); fi; vv := table(); vla := table(); vlm := table(); for i in II do vv[i] := simplify(subs(a_E=a_E0,p(v_E0[i]))); vla[vv[i]] := 'below'; if type(vlm[vv[i]],list) then vlm[vv[i]] := [op(vlm[vv[i]]),i]; else vlm[vv[i]] := [i]; fi; od; cc := table(); cla := table(); for i in JJ do cla[i] := 'below'; cc[i] := unapply(simplify(subs(a_E=a_E0,p(c_E0[i](t)))),t); od; for i in map(op,[indices(v_label_align)]) do vla[vv[i]] := v_label_align[i]; od; for i in map(op,[indices(c_label_align)]) do cla[i] := c_label_align[i]; od; if raw = true then s := ""; else s := sprintf("\\begin{tikzpicture}[scale=%A]\n",scale); fi; for i in JJ do s := cat(s,tikz_plot(cc[i](t),CL[i],num_points,c_colour[i])); od; for a in arrows do i := op(1,a); t0 := evalf(op(2,a)); a0 := evalf(cc[i](t0)); a1 := evalf(cc[i](t0+0.01)); s := cat(s, sprintf(" \\draw[%s,arrows={-angle 90}] (%.4f,%.4f) -- (%.4f,%.4f);\n", c_colour[i],op(a0),op(a1))); od; for i in II do s := cat(s,tikz_point(vv[i],point_size)); od; for i in map(op,[indices(vlm)]) do s0 := ls; comma := ""; for j in vlm[i] do s0 := cat(s0,comma,sprintf("v_{%A}",j)); comma := ","; od; s := cat(s,tikz_label(i,s0,vla[i])); od; for i in map(op,[indices(c_label_param)]) do if member(i,JJ) then t0 := c_label_param[i]; a0 := cla[i]; x0 := evalf(subs(a_E=a_E0,cc[i](t0))); s0 := sprintf("%sc_{%d}",ls,i); if ranges = true then s0 := sprintf("%s(%s\\dotsb%s)",s0, angle_latex[op(1,CL[i])],angle_latex[op(2,CL[i])]); fi; s := cat(s,tikz_label(x0,s0,a0)); fi; od; s := cat(s,extra); if raw <> true then s := cat(s,"\\end{tikzpicture}\n"); fi; if centred = true then s := cat("\\begin{center}\n",s,"\\end{center}\n"); fi; return(s); end: ###################################################################### #@ surface_plot surface_plot := proc(f,{M::integer := 0, plot_style := patchnogrid, with_curves := false, H := G16}) local i,j,T,N,P,SDI,CP,opt; require_square_diffeo_E0_inverse(); N := square_diffeo_E0_inverse_order; if M > 0 and type(N/M,integer) then N := M; fi; SDI := eval(square_diffeo_E0_inverse_table): P := table(): for T in H do for i from 0 to N do for j from 0 to N do P[T,i,j] := evalf(f(act_R4[T](SDI[i/N,j/N]))): od: od: od: if with_curves then CP := seq(spacecurve(f(c_E0[k](t)),t=0..2*Pi,colour=c_colour[k]),k=0..8); else CP := NULL; fi; if plot_style = wireframe then opt := style=wireframe,colour=gray; else opt := style=plot_style; fi; display( seq(seq(seq( polygon([P[T,i,j],P[T,i,j+1],P[T,i+1,j+1]],opt), i=0..N-1),j=0..N-1),T in H), seq(seq(seq( polygon([P[T,i,j],P[T,i+1,j],P[T,i+1,j+1]],opt), i=0..N-1),j=0..N-1),T in H), CP, scaling=constrained,axes=none ); end: ###################################################################### #@ make_c_E_plots make_c_E_plots := proc() local i; global pics,c_E_plot; for i from 0 to 16 do c_E_plot[i] := spacecurve(stereo(c_E1[i](t)),t=0..2*Pi,numpoints=200,colour = c_colour[i],axes = none); pics[sprintf("c_E[%d]",i)] := c_E_plot[i]; od: save_plots(seq(sprintf("c_E[%d]",i),i=0..8)); save_jpgs( seq(sprintf("c_E[%d]",i),i=0..8)); pics["curves_E"] := display(seq(c_E_plot[i],i=0..8),scaling=constrained,axes=none); save_plot("curves_E"); save_jpg( "curves_E"); pics["extra_curves_E"] := display(seq(c_E_plot[i],i=9..16),scaling=constrained,axes=none); save_plot("extra_curves_E"); save_jpg( "extra_curves_E"); pics["all_curves_E"] := display(pics["curves_E"],pics["extra_curves_E"]); save_plot("all_curves_E"); save_jpg( "all_curves_E"); end: load_c_E_plots := proc() load_plots(seq(sprintf("c_E[%d]",i),i=0..8),"curves_E"); end: ###################################################################### #@ make_E_plots make_E_plots := proc() global pics; pics["EX"] := surface_plot(stereo,M = 8); pics["EX_wireframe"] := surface_plot(stereo,M = 12,plot_style=wireframe); save_plots("EX","EX_wireframe"); save_jpgs( "EX","EX_wireframe"); pics["EX_with_curves"] := display( surface_plot(stereo,M = 8,with_curves = true), scaling=constrained,orientation=[65,80],axes = none ): save_plot("EX_with_curves"): save_jpg( "EX_with_curves"): NULL; end: load_E_plots := () -> load_plots("EX","EX_wireframe","EX_with_curves"); ###################################################################### #@ make_E_owl_plots make_E_owl_plots := proc() global pics; pics["EX_owl"] := surface_plot(owl_proj,M = 8); pics["EX_owl_wireframe"] := surface_plot(owl_proj,M = 12,plot_style=wireframe); save_plots("EX_owl","EX_owl_wireframe"); save_jpgs( "EX_owl","EX_owl_wireframe"); pics["EX_owl_with_curves"] := display( surface_plot(owl_proj,M = 8,with_curves = true), scaling=constrained,axes = none ): save_plot("EX_owl_with_curves"): save_jpg("EX_owl_with_curves"): NULL; end: load_E_owl_plots := () -> load_plots("EX_owl","EX_owl_wireframe","EX_owl_with_curves"); ############################################################ #@ make_Omega_plots make_Omega_plots := proc() global pics; pics["Omega"] := display( spacecurve(stereo(omega1[1](t)),t=0.8 .. 5.48,color=red,thickness=3), spacecurve(stereo(omega1[2](t)),t=0.8 .. 5.48,color=red,thickness=3), sphere([0,0,1/2],0.05,color=black), sphere([0,0,-1/2],0.05,color=black), spacecurve(stereo(-~ omega1[1](t)),t=0..2*Pi,color=blue,thickness=3), spacecurve(stereo(-~ omega1[2](t)),t=0..2*Pi,color=blue,thickness=3), line([-3,0,0],[3,0,0],color=black,thickness=3), line([0,-3,0],[0,3,0],color=black,thickness=3), line([0,0,-3],[0,0,3],color=black,thickness=3), textplot3d([3.2,0,0,"x"]), textplot3d([0,3.2,0,"y"]), textplot3d([0,0,3.2,"z"]), view=[-3.5..3.5,-3.5..3.5,-3.5..3.5],orientation=[40,65],axes=none ): save_plot("Omega"): save_jpg("Omega"): pics["XOmega"] := display( spacecurve(stereo(omega1[1](t)),t=0.8 .. 5.48,color=red,thickness=3), spacecurve(stereo(omega1[2](t)),t=0.8 .. 5.48,color=red,thickness=3), spacecurve(stereo(-~ omega1[1](t)),t=0..2*Pi,color=blue,thickness=3), spacecurve(stereo(-~ omega1[2](t)),t=0..2*Pi,color=blue,thickness=3), pics["EX_wireframe"], view=[-3.5..3.5,-3.5..3.5,-3.5..3.5], scaling=constrained,orientation=[65,80],axes=none ): save_plot("XOmega"): save_jpg("XOmega"): NULL; end: ############################################################ #@ make_F4_plot make_F4_plot := proc() global pics; pics["F4"] := display( surface_plot(stereo,M = 12,H = [1,LM,LN,MN]), seq(c_E_plot[i],i=3..8),orientation=[-120,0,50],axes=none ): save_plot("F4"): save_jpg("F4"): pics["F4"]; end: ###################################################################### #@ make_F16_plots make_F16_plots := proc() global pics; pics["F16_outline"] := display( seq( spacecurve(stereo(c_E0[k](t)), t=F16_curve_limits[k], colour = c_colour[k]), k in [0,1,3,5] ), scaling = constrained,axes=none ); save_plot("F16_outline"): save_jpg("F16_outline"): pics["F16"] := surface_plot(stereo,M = 24,H = [1]); save_plot("F16"); save_jpg( "F16"); pics["F16_wireframe"] := surface_plot(stereo,M = 24,H = [1],plot_style = wireframe); save_plot("F16_wireframe"); save_jpg( "F16_wireframe"); NULL; end: ############################################################ #@ make_y_proj_plots make_y_proj_plots := proc() global pics; pics["y_proj"] := plane_proj_plot(y_proj0, table([0=right,1=left,3=above,11=above,13=above]), table([0=Pi/6,1=2,2=1.9,3=2.1,4=2.1,5=1.5,6=1.5,7=1.5,8=1.5]), table([0=left,3=above,5=right,6=right,7=left,8=left])); save_plot("y_proj"); save_jpg("y_proj"); pics["y_proj_F4"] := plane_proj_plot(y_proj0, table([0=right,1=left,3=above,11=above,13=above]), table([0=Pi/6,1=2,2=1.9,3=2.1,4=2.1,5=1.5,6=1.5,7=1.5,8=1.5]), table([0=left,3=above,5=right,6=right,7=left,8=left]),"F4"); save_plot("y_proj_F4"); save_jpg("y_proj_F4"); pics["y_proj_F16"] := plane_proj_plot(y_proj0, table([1=left,3=above,11=above,13=above]), table([0=1.05,1=1.1,3=1,5=1.5]), table([0=left,3=above,5=right,6=right,7=left,8=left]), "F16"); save_plot("y_proj_F16"); save_jpg("y_proj_F16"); pics["y_proj_extra"] := display( seq(planecurve(y_proj0(c_E0[k](t)),t=0..2*Pi,colour=c_colour[k]), k in [0,1,3,4,5,6,7,8,9,11,13,14]), scaling=constrained,axes=none ); save_plot("y_proj_extra"); save_jpg("y_proj_extra"); NULL; end: ############################################################ #@ make_z_proj_plots make_z_proj_plots := proc() global pics; local v_z_map,v_z_align0,v_z_align,c_z_map0,c_z_map,c_z_labels,c_z_arrows,c_z_plots,c_z, i,ii,z0,t0,a,u,L,r,w; pics["z_proj"] := plane_proj_plot(z_proj0, table([2=above,10=above]), table([0=1.2,1=2.3,2=2.4,3=2.3,4=2.4,5=1.9,6=2.0,7=2.1,8=2.2]), table([0=left,3={above,left},4={above,left},5=right,6=right,7=right,8=right])); save_plot("z_proj"); save_jpg("z_proj"); v_z_align0 := table([ 0 = 'right', 2 = 'left', 6 = 'below' ]): c_z_map0 := table([ 0 = [ 1.20,'left'], 1 = [ 2.30,'below'], 2 = [ 2.40,'below'], 3 = [ 2.30,{'above','left'}], 4 = [ 2.40,{'above','left'}], 5 = [ 1.90,'right'], 6 = [ 2.00,'right'], 7 = [ 2.10,'right'], 8 = [ 2.20,'right'] ]): v_z_map := table(): v_z_align := table(); v_z_align := table(); for ii in indices(v_z_align0) do v_z_align[simplify(z_proj0(v_E0[op(ii)]))] := v_z_align0[op(ii)]; od: for i in select(j -> j <= 13,F16_vertices) do z0 := simplify(z_proj0(v_E0[i])); if not(assigned(v_z_align[z0])) then v_z_align[z0] := 'below'; fi; if type(v_z_map[z0],list) then v_z_map[z0] := [op(v_z_map[z0]),i]; else v_z_map[z0] := [i]; fi; od: c_z_labels := NULL; c_z_arrows := NULL; c_z_plots := NULL; for i from 0 to 8 do c_z[i] := unapply(simplify(evalf(simplify(z_proj0(c_E0[i](t))))),t); od: for i from 0 to 8 do if F16_curve_limits[i] <> NULL then t0,a := op(c_z_map0[i]); r := F16_curve_limits[i]; u := evalf(c_z[i](t0)); w := evalf(c_z[i](t0+0.05)) -~ u; w := w /~ nm2(w); c_z_plots := c_z_plots, plot([op(c_z[i](t)),t=r],colour=c_colour[i]); c_z_labels := c_z_labels, textplot([op(u),sprintf("%Q",i,op(r))],align=a,colour=red); c_z_arrows := c_z_arrows, line(u,u +~ 0.03 *~ [-w[1]-w[2], w[1]-w[2]],colour = c_colour[i]), line(u,u +~ 0.03 *~ [-w[1]+w[2],-w[1]-w[2]],colour = c_colour[i]); fi; od; pics["z_proj_F16"] := display( c_z_plots, c_z_labels, c_z_arrows, seq(point(evalf(op(ii))),ii in indices(v_z_map)), seq( textplot([op(evalf(op(ii))),sprintf("%Q",op(v_z_map[op(ii)]))],'align'=v_z_align[op(ii)]), ii in indices(v_z_map) ), scaling=constrained,axes=none ); save_plot("z_proj_F16"); save_jpg("z_proj_F16"); pics["z_proj_F16_bare"] := display( plot([op(z_proj0(c_E0[0](t))),t=Pi/4..Pi/2],colour = c_colour[0]), plot([op(z_proj0(c_E0[1](t))),t=0..Pi/2],colour = c_colour[1]), plot([op(z_proj0(c_E0[3](t))),t=0..Pi/2],colour = c_colour[3]), plot([op(z_proj0(c_E0[5](t))),t=0..Pi],colour = c_colour[5]), scaling = constrained,axes=none ): save_plot("z_proj_F16_bare"): save_jpg("z_proj_F16_bare"): pics["z_proj_extra"] := display( seq(planecurve(z_proj0(c_E0[k](t)),t=0..2*Pi,colour=c_colour[k]), k in [0,1,3,5,9,13]), scaling=constrained,axes=none ); save_plot("z_proj_extra"): save_jpg("z_proj_extra"): NULL; end: ############################################################ #@ make_z_proj_F16_tikz make_z_proj_F16_tikz := proc() local v_z_map,v_z_align0,v_z_align,c_z_map0,c_z_map,c_z_labels,c_z_arrows,c_z_plots,c_z, i,ii,z0,t0,a,u,L,r,w,s,num_points; v_z_align0 := table([ 0 = 'right', 2 = 'left', 6 = 'below' ]): c_z_map0 := table([ 0 = [ 1.20,'left'], 1 = [ 2.30,'below'], 2 = [ 2.40,'below'], 3 = [ 2.30,{'above','left'}], 4 = [ 2.40,{'above','left'}], 5 = [ 1.90,'right'], 6 = [ 2.00,'right'], 7 = [ 2.10,'right'], 8 = [ 2.20,'right'] ]): v_z_map := table(): v_z_align := table(); v_z_align := table(); for ii in indices(v_z_align0) do v_z_align[simplify(z_proj0(v_E0[op(ii)]))] := v_z_align0[op(ii)]; od: for i in select(j -> j <= 13,F16_vertices) do z0 := simplify(z_proj0(v_E0[i])); if not(assigned(v_z_align[z0])) then v_z_align[z0] := 'below'; fi; if type(v_z_map[z0],list) then v_z_map[z0] := [op(v_z_map[z0]),i]; else v_z_map[z0] := [i]; fi; od: c_z_labels := ""; c_z_arrows := ""; c_z_plots := ""; for i from 0 to 8 do c_z[i] := unapply(simplify(evalf(simplify(z_proj0(c_E0[i](t))))),t); od: num_points := 25; for i from 0 to 8 do if F16_curve_limits[i] <> NULL then t0,a := op(c_z_map0[i]); r := F16_curve_limits[i]; u := evalf(c_z[i](t0)); w := evalf(c_z[i](t0+0.01)); c_z_plots := cat(c_z_plots,tikz_plot(c_z[i],r,num_points,c_colour[i])); c_z_labels := cat(c_z_labels,tikz_label(u,sprintf("%Q",i,op(r)),a)); c_z_arrows := cat(c_z_arrows, sprintf(" \\draw[%s,arrows={-angle 90}] (%.4f,%.4f) -- (%.4f,%.4f);\n", c_colour[i],op(u),op(w))); fi; od; s := cat("\\begin{center}\n \\begin{tikzpicture}[scale=4]\n", c_z_plots, c_z_labels, c_z_arrows, " \\end{tikzpicture}\n\\end{center}\n"); save_tikz("z_proj_F16_raw",s); return(s); end: ############################################################ #@ make_w_proj_plots make_w_proj_plots := proc() global wp,pics; wp := (x) -> `if`(x[1]=0 and x[2]=0 and x[4]=0,[1,0],w_proj0(x)); pics["w_proj"] := plane_proj_plot(wp, table([2=above,10=above]), table([0=1.0,1=2.3,2=2.4,3=2.3,4=2.4,5=1.4,6=1.5,7=1.6,8=1.7]), table([0=left,3={above,left},4={above,left},5=right,6=right,7=right,8=right])); save_plot("w_proj"); save_jpg("w_proj"); pics["w_proj_extra"] := display( seq(planecurve(w_proj0(c_E0[k](t)),t=0..2*Pi,colour=c_colour[k]), k in [0,1,3,5,9,13]), scaling=constrained,axes=none ); save_plot("w_proj_extra"): save_jpg("w_proj_extra"): NULL; end: ############################################################ #@ make_t_proj_plots make_t_proj_plots := proc() global wp,pics; wp := (x) -> `if`(x[1]=0 and x[2]=0 and x[4]=0,[1,0],t_proj(x)); pics["t_proj"] := plane_proj_plot(wp, table([2=above,10=above]), table([0=1.0,1=2.3,2=2.4,3=2.3,4=2.4,5=1.4,6=1.5,7=1.6,8=1.7]), table([0=left,3={above,left},4={above,left},5=right,6=right,7=right,8=right])); save_plot("t_proj"); save_jpg("t_proj"); pics["t_proj_extra"] := display( seq(planecurve(t_proj(c_E0[k](t)),t=0..2*Pi,colour=c_colour[k]), k in [0,1,3,5,9,13]), scaling=constrained,axes=none ); save_plot("t_proj_extra"): save_jpg("t_proj_extra"): NULL; end: ############################################################ #@ make_v_square_plots make_v_square_plots := proc() local k,s; global pics; for k in {3,6,11} do s := sprintf("v_square[%d]",k); pics[s] := display( seq(op([ plot3d(v_stereo[k](act_E[T](t_lift([t[1],t[2]]))),t[1]=0..1,t[2]=0..1), spacecurve(v_stereo[k](act_E[T](c_E0[0](t))),t=Pi/4..Pi/2,colour=c_colour[0]), spacecurve(v_stereo[k](act_E[T](c_E0[1](t))),t=0..Pi/2,colour=c_colour[1]), spacecurve(v_stereo[k](act_E[T](c_E0[3](t))),t=0..Pi/2,colour=c_colour[3]), spacecurve(v_stereo[k](act_E[T](c_E0[5](t))),t=0..Pi,colour=c_colour[5])]), T in v_stabiliser_G16[k] ), scaling=constrained,axes=none ); save_plot(s); save_jpg( s); od: NULL; end: #@ load_v_square_plots load_v_square_plots := proc() local ss; ss := seq(sprintf("v_square[%d]",k),k in {3,6,11}); load_plots(ss); NULL; end: ############################################################ #@ make_disc_delta_plot make_disc_delta_plot := proc() global pics; local dpr; dpr := unapply(simplify(subs(a_E=a_E0,disc_delta_proj(xx))),x); pics["disc_delta"] := plane_proj_plot(dpr, table([0 = 'above',2 = {'above','right'},3 = {'above','left'}, 7 = 'left',9 = 'right',12 = 'above']), table(), table()); save_plot("disc_delta"); save_jpg("disc_delta"); pics["disc_delta"]; end: ###################################################################### #@ make_disc_pi_plot make_disc_pi_plot := proc() global pics; local dpr; dpr := unapply(simplify(subs(a_E=a_E0,disc_pi_proj(xx))),x); pics["disc_pi"] := plane_proj_plot(dpr, table([2=right,3=above,4=left, 6={above,right},7={above,left},8={below,left},9={below,right}]), table(), table()); save_plot("disc_pi"); save_jpg("disc_pi"); pics["disc_pi"]; end: ###################################################################### #@ make_disc_zeta_plots make_disc_zeta_plots := proc() global pics; local dpr; dpr := unapply(simplify(subs(a_E=a_E0,disc_zeta_proj(xx))),x); pics["disc_zeta"] := plane_proj_plot(dpr, table([0=left,1=right,3=above,6=above,7=above,10=right,11=right,12=left,13=left]), table(),table()); save_plot("disc_zeta"); save_jpg("disc_zeta"); pics["disc_zeta_F16"] := plane_proj_plot(dpr, table([3=left,6=left]), table(),table(),"F16"); save_plot("disc_zeta_F16"); save_jpg("disc_zeta_F16"); NULL; end: ###################################################################### #@ make_E_torus_plots make_E_torus_plots := proc() global pics; local k,lp,lm,lmq,wft; for k from 0 to 16 do lp := sprintf("c_Tp[%d]",k); lm := sprintf("c_Tm[%d]",k); lmq := sprintf("c_Tmq[%d]",k); pics[lp ] := spacecurve(TC_to_R3(c_TCp[ k](t)),t=0..2*Pi, colour=c_colour[k],numpoints=400,scaling=constrained,axes=none); pics[lm ] := spacecurve(TC_to_R3(c_TCm[ k](t)),t=0..2*Pi, colour=c_colour[k],numpoints=400,scaling=constrained,axes=none); pics[lmq] := spacecurve(TC_to_R3(c_TCmq[k](t)),t=0..2*Pi, colour=c_colour[k],numpoints=400,scaling=constrained,axes=none); save_plot(lp); save_plot(lm); save_plot(lmq); save_jpg(lp); save_jpg(lm); save_jpg(lmq); od: wft := plot3d(TA_to_R3([t,u]),t=0..2*Pi,u=0..2*Pi, colour=gray,style=wireframe,scaling=constrained,axes=none); pics["c_Tp" ] := display(wft,seq(pics[sprintf("c_Tp[%d]",k)], k in {0,1,3,4,5,6})); pics["c_Tm" ] := display(wft,seq(pics[sprintf("c_Tm[%d]",k)], k in {0,1,2,3,5,6})); pics["c_Tmq"] := display(wft,seq(pics[sprintf("c_Tmq[%d]",k)], k in {0,1,2,3,5,6})); save_plot("c_Tp"); save_plot("c_Tm"); save_plot("c_Tmq"); save_jpg("c_Tp"); save_jpg("c_Tm"); save_jpg("c_Tmq"); pics["c_Tp_extra"] := display( pics["c_Tp"], seq(pics[sprintf("c_Tp[%d]",k)],k in {9,10,13,15}) ); pics["c_Tm_extra"] := display( pics["c_Tm"], seq(pics[sprintf("c_Tm[%d]",k)],k in {9,10,13,14,15,16}) ); pics["c_Tmq_extra"] := display( pics["c_Tmq"], seq(pics[sprintf("c_Tmq[%d]",k)],k in {9,10,13,14,15,16}) ); save_plot("c_Tp_extra"); save_plot("c_Tm_extra"); save_plot("c_Tmq_extra"); save_jpg("c_Tp_extra"); save_jpg("c_Tm_extra"); save_jpg("c_Tmq_extra"); end: ###################################################################### #@ make_E_sphere_plots make_E_sphere_plots := proc() global pics; local wfs; wfs := display(sphere([0,0,0],1,colour=grey,style=wireframe),axes=none): # EX^*/pics["SQE_LL"] := display(wfs, seq(spacecurve(E_to_S2(c_E0[k](t)), t=0..2*Pi,colour=c_colour[k],numpoints=200),k=0..8), axes=none,scaling=constrained ): # EX^*/ pics["SQE_L"] := display(wfs, seq(spacecurve(p_S2[ 2, 3](E_to_S2(c_E0[k](t))), t=0..2*Pi,colour=c_colour[k],numpoints=200),k=0..8), axes=none,scaling=constrained ): # EX^*/ pics["SQE_LL_M"] := display(wfs, seq(spacecurve(p_S2[ 2, 8](E_to_S2(c_E0[k](t))), t=0..2*Pi,colour=c_colour[k],numpoints=200),k=0..8), axes=none,scaling=constrained ): # EX^*/ pics["SQE_LL_LM"] := display(wfs, seq(spacecurve(p_S2[ 2, 9](E_to_S2(c_E0[k](t))), t=0..2*Pi,colour=c_colour[k],numpoints=200),k=0..8), axes=none,scaling=constrained ): # EX^*/ pics["SQE_L_M"] := display(wfs, seq(spacecurve(p_S2[ 2,10](E_to_S2(c_E0[k](t))), t=0..2*Pi,colour=c_colour[k],numpoints=200),k=0..8), axes=none,scaling=constrained ): save_plot("SQE_LL"); save_plot("SQE_L"); save_plot("SQE_LL_M"); save_plot("SQE_LL_LM"); save_plot("SQE_L_M"); save_jpg("SQE_LL"); save_jpg("SQE_L"); save_jpg("SQE_LL_M"); save_jpg("SQE_LL_LM"); save_jpg("SQE_L_M"); end: