External files to load.

<<PATH/defns.txt;
<<PATH/quintic_defns.txt;

Family of 31-maps.

f31Fam[{u_,v_}]:=a*Hh*phi+b*Fh*eta/.{x->u,y->v}

Undetermined point p and antipode--parametrized by u--that are candidates for:
  1) belonging to a 60-point icosahedral orbit at which the 31-map to be determined is critical
  2) image under 31-map = antipode.

specPt1={u,1};
specPt1Ant=antipH[specPt1]//ce//simp

Condition and solution for sending p to its antipode.

f31MapCond=norm[f31Fam[specPt1],1]-specPt1Ant//fe
f31MapSubs=Solve[eq0[f31MapCond],{a,b,c}][[1]]//simp

Sub-family of 31-maps.  When expressed in affine form, dependence on parameter a disappears.  Then re-homogenized to a map whose only parameter is u.

f31Base=f31Fam[{x,y}]/.f31MapSubs //fe//simp;
f31BaseAff=norm[f31Base,2]//ta//simp;
f31BaseAff//Variables
f31u=Denominator[f31BaseAff[[1]]]*f31BaseAff;

Forcing p to be critical.

f31CritCond=(jacobEval[f31u,{x,y},specPt1])//simp//Det//fe

The real values of u that are solutions to the critical condition.  Results in 16 points: four are icosahedral face-centers and vertices corresponding to critical points for degree-31 versions of the 11-map and 19-map respectively.  (A vertex is at infinity.)  The remaining eight correspond to two 60-point orbits.

f31CritReSubs=NSolve[f31CritCond==0,u,Reals,200]//Union;
f31CritRe=u/.f31CritReSubs;
f31CritRe//N
f31CritRe//Length

Location of the special points on (non-conformal) dodecahedral and complete (conformal) icosahedral nets.  The two special orbits appear in red one of which lies in dodecahedral faces while the members of the other belong to edges.

fPlane=Table[fC[[i]]//C2rect//ce//simp,{i,20}];

dodecNet=Show[Graphics[
{
Line[{
		fPlane[[1]],fPlane[[2]],fPlane[[3]],
		fPlane[[4]],fPlane[[5]],fPlane[[1]]
}],
Line[{
		fPlane[[6]],fPlane[[7]],fPlane[[8]],
		fPlane[[9]],fPlane[[10]],fPlane[[6]]
}],
Line[{
		fPlane[[1]],fPlane[[11]],fPlane[[12]],
		fPlane[[13]],fPlane[[5]],fPlane[[1]]
}],
Line[{
		fPlane[[6]],fPlane[[10]],fPlane[[14]],
		fPlane[[15]],fPlane[[16]],fPlane[[6]]
}],
Line[{
		fPlane[[1]],fPlane[[2]],fPlane[[18]],
		fPlane[[17]],fPlane[[11]],fPlane[[1]]
}],
Line[{
		fPlane[[6]],fPlane[[7]],fPlane[[19]],
		fPlane[[20]],fPlane[[16]],fPlane[[6]]
}],
Line[{
		fPlane[[2]],fPlane[[3]],fPlane[[15]],
		fPlane[[14]],fPlane[[18]],fPlane[[2]]
}],
Line[{
		fPlane[[7]],fPlane[[8]],fPlane[[12]],
		fPlane[[13]],fPlane[[19]],fPlane[[7]]
}],
Line[{
			fPlane[[3]],fPlane[[4]],fPlane[[20]],
			fPlane[[16]],fPlane[[15]],fPlane[[3]]
}],
Line[{
			fPlane[[8]],fPlane[[9]],fPlane[[17]],
			fPlane[[11]],fPlane[[12]],fPlane[[8]]
}],
Line[{
		fPlane[[4]],fPlane[[5]],fPlane[[13]],
		fPlane[[19]],fPlane[[20]],fPlane[[4]]
}],
Line[{
		fPlane[[9]],fPlane[[10]],fPlane[[14]],
		fPlane[[18]],fPlane[[17]],fPlane[[9]]
}],
Table[
{Red,PointSize[Medium],Point[{f31CritRe[[i]],0}]}
,{i,Length[f31CritRe]}]},
Axes->False,
AspectRatio->Automatic
]]

circMirrorQuad={
{1,5,6,10},
{5,4,10,9},
{4,3,9,8},
{3,2,8,7},
{2,1,7,6},
{15,16,12,11},
{16,20,11,17},
{20,19,17,18},
{19,13,18,14},
{13,12,14,15}
};
lineMirrorQuad={
{15,3,12,8},
{11,1,16,6},
{20,4,17,9},
{18,2,19,7},
{13,5,14,10},
};

lineMirrorPlot=Graphics[Table[
{Blue,Line[1.3*{
C2rect[fC[[lineMirrorQuad[[i,4]] ]]//N ],
-C2rect[fC[[lineMirrorQuad[[i,4]] ]]//N]
}]},{i,5}]];

circMirrorPlot=
Table[
circ3ptPlot[
fC[[circMirrorQuad[[i,1]] ]]//N,
fC[[circMirrorQuad[[i,2]] ]]//N,
fC[[circMirrorQuad[[i,3]] ]]//N
][2*Pi]
,{i,10}];

dodecCircNet=Show[{circMirrorPlot,lineMirrorPlot,Graphics[{

Table[
{Red,PointSize[Medium],Point[{f31CritRe[[i]],0}]}
,{i,Length[f31CritRe]}]},
AspectRatio->Automatic
]},
Axes->False,
PlotRange->{{-3,3},{-3,3}}]

Use one of the special points in a dodecahedral face for the value of the parameter u.  Compute the corresponding 31-map (Subscript[f, 31F]).

pF={f31CritRe[[6]],1};
pF//N

f31Fbase=f31u/.u->pF[[1]]//simp;
f31F=N[
f31Fbase/Coefficient[f31Fbase[[1]],x^31]//Expand
,100]//rat;

Obtain value for the parameter b after selecting a=1.

bF=b/.f31MapSubs/.a->1/.u->pF[[1]]//N

Critical points of (Subscript[f, 31F]).

$MinPrecision=100;
f31FCritSubs=NSolve[
jacobEval[f31F,{x,y},{z,1}]//Det//Expand
,100];
f31FCrit=z/.f31FCritSubs;

Location of critical set: vertices of a soccer ball.

Show[{circMirrorPlot,lineMirrorPlot,Graphics[
Table[
{Red,PointSize[Medium],
Point[{Re[f31FCrit[[i]]]//ce,Im[f31FCrit[[i]]]//ce}]}
,{i,Length[f31FCrit]}]

]},
Axes->False,
AspectRatio->Automatic,
PlotRange->{{-3,3},{-3,3}}
]

The soccer ball map in homogeneous form.

f31F=f31Fam[{x,y}]/.{a->1,b->bF}//ta

Use one of the special points in a dodecahedral edge for the value of the parameter u.  Compute the corresponding 31-map (Subscript[f, 31E]).

pE={f31CritRe[[10]],1};
pE//N

f31Ebase=f31u/.u->pE[[1]]//simp;
f31E=N[
f31Ebase/Coefficient[f31Ebase[[1]],x^31]//Expand
,100]//rat;

Obtain value for the parameter b after selecting a=1.

bE=b/.f31MapSubs/.a->1/.u->pE[[1]]//N

Critical points of (Subscript[f, 31E]).

f31ECritSubs=NSolve[
jacobEval[f31E,{x,y},{z,1}]//Det//Expand
,100];
f31ECrit=z/.f31ECritSubs;

Location of critical set: vertices of a dual soccer ball.

Show[{circMirrorPlot,lineMirrorPlot,Graphics[
Table[
{Red,PointSize[Medium],
Point[{Re[f31ECrit[[i]]]//ce,Im[f31ECrit[[i]]]//ce}]}
,{i,Length[f31ECrit]}]

]},
Axes->False,
AspectRatio->Automatic,
PlotRange->{{-3,3},{-3,3}}
]

The dual soccer ball map in homogeneous form.

f31E=f31Fam[{x,y}]/.{a->1,b->bE}//ta