ClearAll[ \[Sigma]1, \[Sigma]2, \[Sigma]3, \[Omega], t0, t1, a, b, h, \
m]
\[Omega] = E^(I*Pi/3);
\[Sigma]1 = ( {
    {I, 0},
    {0, -I}
   } ); (*the standard basis for the lie algebra su(2) *)
\[Sigma]2 = \
( {
    {0, 1},
    {-1, 0}
   } );
\[Sigma]3 = ( {
    {0, I},
    {I, 0}
   } );

(*=======================================================================================================================================*)


(*group elements and operations in SU2*)

su2exp[{u1_, u2_, u3_}] := 
  MatrixExp[u1*\[Sigma]1 + u2*\[Sigma]2 + u3*\[Sigma]3];


a = su2exp[{Pi/3, 0, 
   0}]; (*the generators a, b of the binary dihedral group*)

b = su2exp[{0, 0, Pi/2}];

h = su2exp[{Pi/6, 0, 
   0}]; (* the element in SU(2) which corresponds to the max of the \
Morse function on Chiang*)

(*deviation and interception times for transition discs*)

t0 = ArcCos[
   Sqrt[2]/Sqrt[
     3]]; (*for example a transition disc intersects the descending \
manifold of x_1prime at exp(t_0 v1prime).\[CapitalDelta]*)

t1 = Pi/2 - t0;



(*stereographic projections*)

stereographicS3[{x_, y_, z_, w_}] := {w/(1 + x), -z/(1 + x), 
   y/(1 + x)}; (*rotated projection, so plot looks nice*)

stereographicSU2[A_] := 
  stereographicS3[{Re[A[[1, 1]]], Im[A[[1, 1]]], Re[A[[1, 2]]], 
    Im[A[[1, 2]]]}];


(*axes of rotation*)

v1prime = {0, 0, 1}; 
v2prime = {0, Sqrt[3]/2, -1/2};
v3prime = {0, -Sqrt[3]/2, -1/2};
v1 = {0, -Sqrt[3]/2, 1/2};
v2 = {0, Sqrt[3]/2, 1/2};
v3 = {0, 0, -1};


(*Finding all axes for transitional discs*)

front11 = {Sqrt[6]/3, Sqrt[3]/6, -1/2};
back11 = {-Sqrt[6]/3, Sqrt[3]/6, -1/2};
front12 = {Sqrt[6]/3, -Sqrt[3]/6, -1/2};
back12 = {-Sqrt[6]/3, -Sqrt[3]/6, -1/2};

front22 = RotationMatrix[-2 Pi/3, {1, 0, 0}].front11;
back22 = RotationMatrix[-2 Pi/3, {1, 0, 0}].back11;
front23 = RotationMatrix[-2 Pi/3, {1, 0, 0}].front12;
back23 = RotationMatrix[-2 Pi/3, {1, 0, 0}].back12;

front33 = RotationMatrix[2 Pi/3, {1, 0, 0}].front11;
back33 = RotationMatrix[2 Pi/3, {1, 0, 0}].back11;
front31 = RotationMatrix[2 Pi/3, {1, 0, 0}].front12;
back31 = RotationMatrix[2 Pi/3, {1, 0, 0}].back12;

(*calculating lifts of deviation points*)
(*Note: these lifts are \
chosen to either lie on an identification path or on a the extension \
of such a path*)
devPointFront11Back12 = su2exp[t1*v1prime];
devPointFront12Back11 = su2exp[t0*v1prime];
devPointFront22Back23 = su2exp[-t0*v2prime];
devPointFront23Back22 = su2exp[-t1*v2prime];
devPointFront33Back31 = su2exp[t1*v3prime];
devPointFront31Back33 = su2exp[t0*v3prime];



(*setting up the plot*)

(*descending manifolds of x1prime, x2prime and x3prime*)

descendingX1prime[t_] := su2exp[t*v1prime];
descendingX2prime[t_] := su2exp[t*v2prime];
descendingX3prime[t_] := su2exp[t*v3prime];


(*ascending manifolds of x1, x2 and x3*)

ascendingX1[t_] := su2exp[t*v1].h;
ascendingX2[t_] := su2exp[t*v2].h;
ascendingX3[t_] := su2exp[t*v3].h;



(*descendingX1primeACTEDonLEFT[s_, t_]:=
 su2exp[{s, 0,0}].su2exp[{0, 0, t}];
descendingX1primeUp[t_] := su2exp[t*v1prime].a;*)

(*transition discs*)

transitionDiscFront11GammaZero[t_] := 
  su2exp[t*front11].devPointFront11Back12;
transitionDiscBack11GammaZero[t_] := 
  su2exp[t*back11].devPointFront12Back11;

transitionDiscFront12GammaZero[t_] := 
  su2exp[t*front12].devPointFront12Back11;
transitionDiscBack12GammaZero[t_] := 
  su2exp[t*back12].devPointFront11Back12;

transitionDiscFront22GammaZero[t_] := 
  su2exp[t*front22].devPointFront22Back23;
transitionDiscBack22GammaZero[t_] := 
  su2exp[t*back22].devPointFront23Back22;

transitionDiscFront23GammaZero[t_] := 
  su2exp[t*front23].devPointFront23Back22;
transitionDiscBack23GammaZero[t_] := 
  su2exp[t*back23].devPointFront22Back23;

transitionDiscFront33GammaZero[t_] := 
  su2exp[t*front33].devPointFront33Back31;
transitionDiscBack33GammaZero[t_] := 
  su2exp[t*back33].devPointFront31Back33;

transitionDiscFront31GammaZero[t_] := 
  su2exp[t*front31].devPointFront31Back33;
transitionDiscBack31GammaZero[t_] := 
  su2exp[t*back31].devPointFront33Back31;


(*interception points*)

intPointFront11 = transitionDiscFront11GammaZero[t0];
intPointBack11 = transitionDiscBack11GammaZero[t1];

intPointFront12 = transitionDiscFront12GammaZero[t1];
intPointBack12 = transitionDiscBack12GammaZero[t0];

intPointFront22 = transitionDiscFront22GammaZero[t0];
intPointBack22 = transitionDiscBack22GammaZero[t1];

intPointFront23 = transitionDiscFront23GammaZero[t1];
intPointBack23 = transitionDiscBack23GammaZero[t0];

intPointFront33 = transitionDiscFront33GammaZero[t0];
intPointBack33 = transitionDiscBack33GammaZero[t1];

intPointFront31 = transitionDiscFront31GammaZero[t1];
intPointBack31 = transitionDiscBack31GammaZero[t0];

listOfPoints = {intPointFront11, intPointBack11, intPointFront12 , 
   intPointBack12, intPointFront22, intPointBack22 , 
   intPointFront23 , intPointBack23 , intPointFront33,
   intPointBack33 ,
   intPointFront31 ,
   intPointBack31};


(*deviation points for return*)
(*Note - these are different lifts of \
the interception points*)
devPointFront11GammaOne = ascendingX1[t0];
devPointBack11GammaOne = ascendingX1[t1];

devPointFront12GammaOne = ascendingX2[-t0];
devPointBack12GammaOne = ascendingX2[-t1];

devPointFront22GammaOne = ascendingX2[-t1];
devPointBack22GammaOne = ascendingX2[-t0];

devPointFront23GammaOne = ascendingX3[t1];
devPointBack23GammaOne = ascendingX3[t0];

devPointFront33GammaOne = ascendingX3[t0];
devPointBack33GammaOne = ascendingX3[t1];

devPointFront31GammaOne = ascendingX1[t1];
devPointBack31GammaOne = ascendingX1[t0];

(*transtition discs for return*)

transitionDiscFront11GammaOne[t_] := 
  su2exp[t*front11].devPointFront11GammaOne;
transitionDiscBack11GammaOne[t_] := 
  su2exp[t*back11].devPointBack11GammaOne;

transitionDiscFront12GammaOne[t_] := 
  su2exp[t*front12].devPointFront12GammaOne;
transitionDiscBack12GammaOne[t_] := 
  su2exp[t*back12].devPointBack12GammaOne;

transitionDiscFront22GammaOne[t_] := 
  su2exp[t*front22].devPointFront22GammaOne;
transitionDiscBack22GammaOne[t_] := 
  su2exp[t*back22].devPointBack22GammaOne;

transitionDiscFront23GammaOne[t_] := 
  su2exp[t*front23].devPointFront23GammaOne;
transitionDiscBack23GammaOne[t_] := 
  su2exp[t*back23].devPointBack23GammaOne;

transitionDiscFront33GammaOne[t_] := 
  su2exp[t*front33].devPointFront33GammaOne;
transitionDiscBack33GammaOne[t_] := 
  su2exp[t*back33].devPointBack33GammaOne;

transitionDiscFront31GammaOne[t_] := 
  su2exp[t*front31].devPointFront31GammaOne;
transitionDiscBack31GammaOne[t_] := 
  su2exp[t*back31].devPointBack31GammaOne;


(*return points for transition discs*)

returnPointFront11 = transitionDiscFront11GammaOne[t1];
returnPointBack11 = transitionDiscBack11GammaOne[t0];

returnPointFront12 = transitionDiscFront12GammaOne[t0];
returnPointBack12 = transitionDiscBack12GammaOne[t1];

returnPointFront22 = transitionDiscFront22GammaOne[t1];
returnPointBack22 = transitionDiscBack22GammaOne[t0];

returnPointFront23 = transitionDiscFront23GammaOne[t0];
returnPointBack23 = transitionDiscBack23GammaOne[t1];

returnPointFront33 = transitionDiscFront33GammaOne[t1];
returnPointBack33 = transitionDiscBack33GammaOne[t0];

returnPointFront31 = transitionDiscFront31GammaOne[t0];
returnPointBack31 = transitionDiscBack31GammaOne[t1];



(*setting up the points for the plot - so applying stereographic \
projection everywhere *)

mprime = Point [stereographicSU2[su2exp[{0, 0, 0}]], 
   VertexColors -> Green];
mprimeLabel = 
  Text[Style[ "m'", Green, Bold], 
   stereographicSU2[su2exp[{0, 0, 0}]] - {0, 0, 0.05}]; 

x1prime = 
  Point[stereographicSU2[su2exp[(Pi/4)*v1prime]], 
   VertexColors -> Brown];
x1primeLabel = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(1\)]\)'", Brown, Bold], 
   1.2*stereographicSU2[su2exp[(Pi/4)*v1prime]]]; 

x2prime = 
  Point[stereographicSU2[su2exp[(-Pi/4)*v2prime]], 
   VertexColors -> Brown];
x2primeLabel = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(2\)]\)'", Brown, Bold], 
   1.2*stereographicSU2[su2exp[(-Pi/4)*v2prime]]];

x3prime = 
  Point[stereographicSU2[su2exp[(Pi/4)*v3prime]], 
   VertexColors -> Brown];
x3primeLabel = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(3\)]\)'", Brown, Bold], 
   1.2*stereographicSU2[su2exp[(Pi/4)*v3prime]]];

otherx1prime = 
  Point[stereographicSU2[su2exp[(-Pi/4)*v1prime]], 
   VertexColors -> Brown];
otherx1primeLabel = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(1\)]\)'", Brown, Bold], 
   1.2*stereographicSU2[su2exp[(-Pi/4)*v1prime]]]; 

otherx2prime = 
  Point[stereographicSU2[su2exp[(Pi/4)*v2prime]], 
   VertexColors -> Brown];
otherx2primeLabel = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(2\)]\)'", Brown, Bold], 
   1.2*stereographicSU2[su2exp[(Pi/4)*v2prime]]];

otherx3prime = 
  Point[stereographicSU2[su2exp[(-Pi/4)*v3prime]], 
   VertexColors -> Brown];
otherx3primeLabel = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(3\)]\)'", Brown, Bold], 
   1.2*stereographicSU2[su2exp[(-Pi/4)*v3prime]]];

x1 = Point[stereographicSU2[su2exp[(Pi/4)*v1].h], 
   VertexColors -> Black];
x1Label = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(1\)]\)", Black, Bold], 
   1.2*stereographicSU2[su2exp[(Pi/4)*v1].h]];

x2 = Point[stereographicSU2[su2exp[(Pi/4)*v2].h], 
   VertexColors -> Black];
x2Label = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(2\)]\)", Black, Bold], 
   1.2*stereographicSU2[su2exp[(Pi/4)*v2].h]];

x3 = Point[stereographicSU2[su2exp[(Pi/4)*v3].h], 
   VertexColors -> Black];
x3Label = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(3\)]\)", Black, Bold], 
   1.2*stereographicSU2[su2exp[(Pi/4)*v3].h]];

otherx1 = 
  Point[stereographicSU2[su2exp[(-Pi/4)*v1].h], VertexColors -> Black];
otherx1Label = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(1\)]\)", Black, Bold], 
   1.2*stereographicSU2[su2exp[(-Pi/4)*v1].h]];

otherx2 = 
  Point[stereographicSU2[su2exp[(-Pi/4)*v2].h], VertexColors -> Black];
otherx2Label = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(2\)]\)", Black, Bold], 
   1.2*stereographicSU2[su2exp[(-Pi/4)*v2].h]];

otherx3 = 
  Point[stereographicSU2[su2exp[(-Pi/4)*v3].h], VertexColors -> Black];
otherx3Label = 
  Text[Style["\!\(\*SubscriptBox[\(x\), \(3\)]\)", Black, Bold], 
   1.2*stereographicSU2[su2exp[(-Pi/4)*v3].h]];

mPoint = Point[stereographicSU2[h], VertexColors -> Darker[Green, .5]];
mLabel = Text[Style["m", Darker[Green, .5], Bold], 
   1.2*stereographicSU2[h]];



(*deviation points for plot - GammaZero*)

pointDevPointFront11Back12 = 
  Point[stereographicSU2[devPointFront11Back12], 
   VertexColors -> Orange];
pointDevPointFront12Back11 = 
  Point[stereographicSU2[devPointFront12Back11], 
   VertexColors -> Orange];
pointDevPointFront22Back23 = 
  Point[stereographicSU2[devPointFront22Back23], 
   VertexColors -> Orange];
pointDevPointFront23Back22 = 
  Point[stereographicSU2[devPointFront23Back22], 
   VertexColors -> Orange];
pointDevPointFront33Back31 = 
  Point[stereographicSU2[devPointFront33Back31], 
   VertexColors -> Orange];
pointDevPointFront31Back33 = 
  Point[stereographicSU2[devPointFront31Back33], 
   VertexColors -> Orange];


(*interception points for plot*)

pointIntPointFront11 = 
  Point[stereographicSU2[intPointFront11], VertexColors -> Orange];
pointIntPointBack11 = 
  Point[stereographicSU2[intPointBack11], VertexColors -> Orange];

pointIntPointFront12 = 
  Point[stereographicSU2[intPointFront12], VertexColors -> Orange];
pointIntPointBack12 = 
  Point[stereographicSU2[intPointBack12], VertexColors -> Orange];

pointIntPointFront22 = 
  Point[stereographicSU2[intPointFront22], VertexColors -> Orange];
pointIntPointBack22 = 
  Point[stereographicSU2[intPointBack22], VertexColors -> Orange];

pointIntPointFront23 = 
  Point[stereographicSU2[intPointFront23], VertexColors -> Orange];
pointIntPointBack23 = 
  Point[stereographicSU2[intPointBack23], VertexColors -> Orange];

pointIntPointFront33 = 
  Point[stereographicSU2[intPointFront33], VertexColors -> Orange];
pointIntPointBack33 = 
  Point[stereographicSU2[intPointBack33], VertexColors -> Orange];

pointIntPointFront31 = 
  Point[stereographicSU2[intPointFront31], VertexColors -> Orange];
pointIntPointBack31 = 
  Point[stereographicSU2[intPointBack31], VertexColors -> Orange];

(* devitation points for GammaOne for plot *)

pointDevPointFront11GammaOne = 
  Point[stereographicSU2[devPointFront11GammaOne], 
   VertexColors -> Orange];
pointDevPointBack11GammaOne = 
  Point[stereographicSU2[devPointBack11GammaOne], 
   VertexColors -> Orange];

pointDevPointFront12GammaOne = 
  Point[stereographicSU2[devPointFront12GammaOne], 
   VertexColors -> Orange];
pointDevPointBack12GammaOne = 
  Point[stereographicSU2[devPointBack12GammaOne], 
   VertexColors -> Orange];

pointDevPointFront22GammaOne = 
  Point[stereographicSU2[devPointFront22GammaOne], 
   VertexColors -> Orange];
pointDevPointBack22GammaOne = 
  Point[stereographicSU2[devPointBack22GammaOne], 
   VertexColors -> Orange];

pointDevPointFront23GammaOne = 
  Point[stereographicSU2[devPointFront23GammaOne], 
   VertexColors -> Orange];
pointDevPointBack23GammaOne = 
  Point[stereographicSU2[devPointBack23GammaOne], 
   VertexColors -> Orange];

pointDevPointFront33GammaOne = 
  Point[stereographicSU2[devPointFront33GammaOne], 
   VertexColors -> Orange];
pointDevPointBack33GammaOne = 
  Point[stereographicSU2[devPointBack33GammaOne], 
   VertexColors -> Orange];

pointDevPointFront31GammaOne = 
  Point[stereographicSU2[devPointFront31GammaOne], 
   VertexColors -> Orange];
pointDevPointBack31GammaOne = 
  Point[stereographicSU2[devPointBack31GammaOne], 
   VertexColors -> Orange];


(*return points for plot*)

pointReturnPointFront11 = 
  Point[stereographicSU2[returnPointFront11], 
   VertexColors -> {Orange}];
pointReturnPointBack11 = 
  Point[stereographicSU2[returnPointBack11], VertexColors -> {Orange}];

pointReturnPointFront12 = 
  Point[stereographicSU2[returnPointFront12], 
   VertexColors -> {Orange}];
pointReturnPointBack12 = 
  Point[stereographicSU2[returnPointBack12], VertexColors -> {Orange}];

pointReturnPointFront22 = 
  Point[stereographicSU2[returnPointFront22], 
   VertexColors -> {Orange}];
pointReturnPointBack22 = 
  Point[stereographicSU2[returnPointBack22], VertexColors -> {Orange}];

pointReturnPointFront23 = 
  Point[stereographicSU2[returnPointFront23], 
   VertexColors -> {Orange}];
pointReturnPointBack23 = 
  Point[stereographicSU2[returnPointBack23], VertexColors -> {Orange}];

pointReturnPointFront33 = 
  Point[stereographicSU2[returnPointFront33], 
   VertexColors -> {Orange}];
pointReturnPointBack33 = 
  Point[stereographicSU2[returnPointBack33], VertexColors -> {Orange}];

pointReturnPointFront31 = 
  Point[stereographicSU2[returnPointFront31], 
   VertexColors -> {Orange}];
pointReturnPointBack31 = 
  Point[stereographicSU2[returnPointBack31], VertexColors -> {Orange}];



(*===================================================PLOT==============================================================*)


(*====================================================================================================================================\
\[Equal]*)
Manipulate[
 Show[
  (*critical points*)
  
  Graphics3D[{PointSize[Large], #}] & /@ {mprime, x1prime, x2prime, 
    x3prime, otherx1prime, otherx2prime, otherx3prime, x1, x2, x3, 
    otherx1, otherx2, otherx3, mPoint},
  Graphics3D[#] & /@ {mprimeLabel, x1primeLabel,  x2primeLabel, 
    x3primeLabel, otherx1primeLabel, otherx2primeLabel, 
    otherx3primeLabel, x1Label, x2Label, x3Label, otherx1Label, 
    otherx2Label, otherx3Label, mLabel},
  
  
   (* coordinate rays*)
  (*ParametricPlot3D[Evaluate[
  stereographicSU2[su2exp[{0, 0, t}]]], {t,0, Pi/4}, 
  PlotStyle\[Rule]{Green, Dashed}],
  ParametricPlot3D[Evaluate[stereographicSU2[su2exp[{0, t, 0}]]], {t,
  0, Pi/4}, PlotStyle\[Rule]{Black, Dashed}],
  ParametricPlot3D[Evaluate[stereographicSU2[su2exp[{t, 0, 0}]]], {t,
  0, Pi/6}, PlotStyle\[Rule]{Black, Dashed}],*)
  
  (*the path sigma in all the domains*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}]]], {t, 0, Pi/6}, 
   PlotStyle -> {Green, Dashed}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}].a]], {t, 0, Pi/6}, 
   PlotStyle -> {Green, Dashed, Opacity[prismA]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}].a.a.a.a.a]], {t, 0, 
    Pi/6}, PlotStyle -> {Green, Dashed, Opacity[prismAAAAA]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}].b]], {t, 0, Pi/6}, 
   PlotStyle -> {Green, Dashed, Opacity[prismB]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}].a.b]], {t, 0, Pi/6}, 
   PlotStyle -> {Green, Dashed, Opacity[prismAB]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}].a.a.b]], {t, 0, Pi/6}, 
   PlotStyle -> {Green, Dashed, Opacity[prismAAB]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}].a.a.a.b]], {t, 0, 
    Pi/6}, PlotStyle -> {Green, Dashed, Opacity[prismAAAB]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}].a.a.a.a.b]], {t, 0, 
    Pi/6}, PlotStyle -> {Green, Dashed, Opacity[prismAAAAB]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[su2exp[{t, 0, 0}].a.a.a.a.a.b]], {t, 0, 
    Pi/6}, PlotStyle -> {Green, Dashed, Opacity[prismAAAAAB]}],
  
  (*----------------------------------------------------descending \
manifolds----------------------------------------------------------------*)

    ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX1prime[t]], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX1prime[t]], {t, 0, Pi/4}, 
    PlotStyle -> {Green}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX2prime[t]], {t, -Pi/4, 0}, 
    PlotStyle -> {Green}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX2prime[t]], {t, 0, Pi/4}, 
    PlotStyle -> {Blue}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX3prime[t]], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX3prime[t]], {t, 0, Pi/4}, 
    PlotStyle -> {Green}]],
  
  (*descending manifolds A*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX1prime[t].a], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX1prime[t].a], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismA]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX2prime[t].a], {t, -Pi/4, 0}, 
    PlotStyle -> {Green, Opacity[prismA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX2prime[t].a], {t, 0, Pi/4}, 
    PlotStyle -> {Blue, Opacity[prismA]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX3prime[t].a], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX3prime[t].a], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismA]}]],
  
  (*descending manifolds AAAAA*)
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.a.a.a], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAAAAA]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.a.a.a], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAAAA]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.a.a.a], {t, -Pi/4, 0}, 
    PlotStyle -> {Green, Opacity[prismAAAAA]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.a.a.a], {t, 0, Pi/4}, 
    PlotStyle -> {Blue, Opacity[prismAAAAA]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.a.a.a], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAAAAA]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.a.a.a], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAAAA]}]],
  
  (*descending manifolds B*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX1prime[t].b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX1prime[t].b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX2prime[t].b], {t, -Pi/4, 0}, 
    PlotStyle -> {Green, Opacity[prismB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX2prime[t].b], {t, 0, Pi/4}, 
    PlotStyle -> {Blue, Opacity[prismB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX3prime[t].b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX3prime[t].b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismB]}]],
  
  (*descending manifolds AB*)
   
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX1prime[t].a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Green, Opacity[prismAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX2prime[t].a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Blue, Opacity[prismAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[descendingX3prime[t].a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAB]}]],
  
  (*descending manifolds AAB*)
   
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Green, Opacity[prismAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Blue, Opacity[prismAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAB]}]],
  
  (*descending manifolds AAAB*)
   
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Green, Opacity[prismAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Blue, Opacity[prismAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAAB]}]],
  
  (*descending manifolds AAAAB*)
   
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Green, Opacity[prismAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Blue, Opacity[prismAAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Blue, Opacity[prismAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAAAB]}]],
  
  (*descending manifolds AAAAAB*)
   
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.a.a.a.b], {t, -Pi/4, 
     0}, PlotStyle -> {Blue, Opacity[prismAAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX1prime[t].a.a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.a.a.a.b], {t, -Pi/4, 
     0}, PlotStyle -> {Green, Opacity[prismAAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX2prime[t].a.a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Blue, Opacity[prismAAAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.a.a.a.b], {t, -Pi/4, 
     0}, PlotStyle -> {Blue, Opacity[prismAAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[descendingX3prime[t].a.a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Green, Opacity[prismAAAAAB]}]],
  
  (*---------------------------------------------------------\
ascending \
manifolds-------------------------------------------------------------\
*)
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t]], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t]], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t]], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t]], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t]], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t]], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green]}]],
  
  (*ascending manifolds A*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismA]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green], Opacity[prismA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue], Opacity[prismA]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismA]}]],
  
  (*ascending manifolds AAAAA*)
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX1[t].a.a.a.a.a], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a.a.a.a.a], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAA]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX2[t].a.a.a.a.a], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a.a.a.a.a], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAA]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX3[t].a.a.a.a.a], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAA]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a.a.a.a.a], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAA]}]],
  
  (*ascending manifolds B*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green], Opacity[prismB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue], Opacity[prismB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismB]}]],
  
  (*ascending manifolds AB*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green], Opacity[prismAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAB]}]],
  
  (*ascending manifolds AAB*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAB]}]],
  
  (*ascending manifolds AAAB*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAB]}]],
  
  (*ascending manifolds AAAAB*)
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX1[t].a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX1[t].a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX2[t].a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX2[t].a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX3[t].a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAB]}]],
  ParametricPlot3D[
   Evaluate[stereographicSU2[ascendingX3[t].a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAB]}]],
  
  (*ascending manifolds AAAAAB*)
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX1[t].a.a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX1[t].a.a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX2[t].a.a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX2[t].a.a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAAB]}]],
  
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX3[t].a.a.a.a.a.b], {t, -Pi/4, 0}, 
    PlotStyle -> {Darker[Blue], Opacity[prismAAAAAB]}]],
  ParametricPlot3D[
   Evaluate[
    stereographicSU2[ascendingX3[t].a.a.a.a.a.b], {t, 0, Pi/4}, 
    PlotStyle -> {Darker[Green], Opacity[prismAAAAAB]}]],
  
  (*-----------------------------------------MORE POINTS--------------------------------------------------------------------------------------*)
\
  (*plot deviation points*)
  
  Graphics3D[{PointSize[Large], 
    Opacity[Max[showFront11GammaZero, showBack12GammaZero]], 
    pointDevPointFront11Back12}],
  Graphics3D[{PointSize[Large], 
    Opacity[Max[showFront12GammaZero, showBack11GammaZero]], 
    pointDevPointFront12Back11}],
  Graphics3D[{PointSize[Large], 
    Opacity[Max[showFront22GammaZero, showBack23GammaZero]], 
    pointDevPointFront22Back23}],
  Graphics3D[{PointSize[Large], 
    Opacity[Max[showFront23GammaZero, showBack22GammaZero]], 
    pointDevPointFront23Back22}],
  Graphics3D[{PointSize[Large], 
    Opacity[Max[showFront33GammaZero, showBack31GammaZero]], 
    pointDevPointFront33Back31}],
  Graphics3D[{PointSize[Large], 
    Opacity[Max[showFront31GammaZero, showBack33GammaZero]], 
    pointDevPointFront31Back33}],
  
  
  (*plot interception points*)
  
  Graphics3D[{PointSize[Large], Opacity[showFront11GammaZero], 
    pointIntPointFront11}],
  Graphics3D[{PointSize[Large], Opacity[showBack11GammaZero], 
    pointIntPointBack11}],
  
  Graphics3D[{PointSize[Large], Opacity[showFront12GammaZero], 
    pointIntPointFront12}],
  Graphics3D[{PointSize[Large], Opacity[showBack12GammaZero], 
    pointIntPointBack12}],
  
  Graphics3D[{PointSize[Large], Opacity[showFront22GammaZero], 
    pointIntPointFront22}],
  Graphics3D[{PointSize[Large], Opacity[showBack22GammaZero], 
    pointIntPointBack22}],
  
  Graphics3D[{PointSize[Large], Opacity[showFront23GammaZero], 
    pointIntPointFront23}],
  Graphics3D[{PointSize[Large], Opacity[showBack23GammaZero], 
    pointIntPointBack23}],
  
  Graphics3D[{PointSize[Large], Opacity[showFront33GammaZero], 
    pointIntPointFront33}],
  Graphics3D[{PointSize[Large], Opacity[showBack33GammaZero], 
    pointIntPointBack33}],
  
  Graphics3D[{PointSize[Large], Opacity[showFront31GammaZero], 
    pointIntPointFront31}],
  Graphics3D[{PointSize[Large], Opacity[showBack31GammaZero], 
    pointIntPointBack31}],
  
  (*plot deviation points for return and return points*)
  
  Graphics3D[{PointSize[Large], 
      Opacity[showFront11GammaOne], #}] & /@ \
{pointDevPointFront11GammaOne, pointReturnPointFront11},
  Graphics3D[{PointSize[Large], 
      Opacity[showBack11GammaOne], #}] & /@ \
{pointDevPointBack11GammaOne, pointReturnPointBack11},
  
  Graphics3D[{PointSize[Large], 
      Opacity[
       showFront12GammaOne], #}] & /@ {pointDevPointFront12GammaOne, 
    pointReturnPointFront12},
  Graphics3D[{PointSize[Large], 
      Opacity[showBack12GammaOne], #}] & /@ \
{pointDevPointBack12GammaOne, pointReturnPointBack12},
  
  Graphics3D[{PointSize[Large], 
      Opacity[showFront22GammaOne], #}] & /@ \
{pointDevPointFront22GammaOne, pointReturnPointFront22},
  Graphics3D[{PointSize[Large], 
      Opacity[showBack22GammaOne], #}] & /@ \
{pointDevPointBack22GammaOne, pointReturnPointBack22},
  
  Graphics3D[{PointSize[Large], 
      Opacity[showFront23GammaOne], #}] & /@ \
{pointDevPointFront23GammaOne, pointReturnPointFront23},
  Graphics3D[{PointSize[Large], 
      Opacity[showBack23GammaOne], #}] & /@ \
{pointDevPointBack23GammaOne, pointReturnPointBack23},
  
  Graphics3D[{PointSize[Large], 
      Opacity[showFront33GammaOne], #}] & /@ \
{pointDevPointFront33GammaOne, pointReturnPointFront33},
  Graphics3D[{PointSize[Large], 
      Opacity[
       showBack33GammaOne], #}] & /@ {pointDevPointBack33GammaOne, 
    pointReturnPointBack33},
  
  Graphics3D[{PointSize[Large], 
      Opacity[showFront31GammaOne], #}] & /@ \
{pointDevPointFront31GammaOne, pointReturnPointFront31},
  Graphics3D[{PointSize[Large], 
      Opacity[showBack31GammaOne], #}] & /@ \
{pointDevPointBack31GammaOne, pointReturnPointBack31},
  
  (*---------------------------------------------- 
  plot SPLIT transition \
discs-----------------------------------------------*)
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront11GammaZero[t]]], {t, 
    0, t0}, PlotStyle -> {Yellow, Opacity[showFront11GammaZero]}, 
   PlotRange -> All],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront11GammaOne[t]]], {t, 
    0, t1}, PlotStyle -> {Red, Opacity[showFront11GammaOne]}, 
   PlotRange -> All],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack11GammaZero[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showBack11GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack11GammaOne[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showBack11GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront12GammaZero[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showFront12GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront12GammaOne[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showFront12GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack12GammaZero[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showBack12GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack12GammaOne[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showBack12GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront22GammaZero[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showFront22GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront22GammaOne[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showFront22GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack22GammaZero[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showBack22GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack22GammaOne[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showBack22GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront23GammaZero[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showFront23GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront23GammaOne[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showFront23GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack23GammaZero[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showBack23GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack23GammaOne[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showBack23GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront33GammaZero[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showFront33GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront33GammaOne[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showFront33GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack33GammaZero[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showBack33GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack33GammaOne[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showBack33GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront31GammaZero[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showFront31GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscFront31GammaOne[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showFront31GammaOne]}],
  
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack31GammaZero[t]]], {t, 
    0, t0}, PlotRange -> All, 
   PlotStyle -> {Yellow, Opacity[showBack31GammaZero]}],
  ParametricPlot3D[
   Evaluate[stereographicSU2[transitionDiscBack31GammaOne[t]]], {t, 
    0, t1}, PlotRange -> All, 
   PlotStyle -> {Red, Opacity[showBack31GammaOne]}],
  
  ImageSize -> 1200],
 
 {showFront11GammaZero, {0, 1}, Checkbox},
 {showFront11GammaOne, {0, 1}, Checkbox},
 
 {showBack11GammaZero, {0, 1}, Checkbox},
 {showBack11GammaOne, {0, 1}, Checkbox},
 
 {showFront12GammaZero, {0, 1}, Checkbox},
 {showFront12GammaOne, {0, 1}, Checkbox},
 
 {showBack12GammaZero, {0, 1}, Checkbox},
 {showBack12GammaOne, {0, 1}, Checkbox},
 
 {showFront22GammaZero, {0, 1}, Checkbox},
 {showFront22GammaOne, {0, 1}, Checkbox},
 
 {showBack22GammaZero, {0, 1}, Checkbox},
 {showBack22GammaOne, {0, 1}, Checkbox},
 
 {showFront23GammaZero, {0, 1}, Checkbox},
 {showFront23GammaOne, {0, 1}, Checkbox},
 
 {showBack23GammaZero, {0, 1}, Checkbox},
 {showBack23GammaOne, {0, 1}, Checkbox},
 
 {showFront33GammaZero, {0, 1}, Checkbox},
 {showFront33GammaOne, {0, 1}, Checkbox},
 
 {showBack33GammaZero, {0, 1}, Checkbox},
 {showBack33GammaOne, {0, 1}, Checkbox},
 
 {showFront31GammaZero, {0, 1}, Checkbox},
 {showFront31GammaOne, {0, 1}, Checkbox},
 
 {showBack31GammaZero, {0, 1}, Checkbox},
 {showBack31GammaOne, {0, 1}, Checkbox},
 
 {prismA, {0, 1}, Checkbox},
 {prismAAAAA, {0, 1}, Checkbox},
 {prismB, {0, 1}, Checkbox},
 {prismAB, {0, 1}, Checkbox},
 {prismAAB, {0, 1}, Checkbox},
 {prismAAAB, {0, 1}, Checkbox},
 {prismAAAAB, {0, 1}, Checkbox},
 {prismAAAAAB, {0, 1}, Checkbox},
 ControlPlacement -> Above
 ]