The Mathematica programs in this notebook are written by Byungik Kahng. Any academic and educational use of whole or any part of this notebook is allowed without limit, if proper citation is made.

Devaney Chaos and Singularities of Invertible
Piecewise Isometric Dynamics

Byungik Kahng

Abstract

It is known that piecewise isometric dynamical systems can exhibit Devaney-chaos in an appropriate invariant set. Clearly, the chaotic behavior comes from singularity, because the piecewise isometric dynamics is innocuous besides the singularity. However, the clear connection between the afore-mentioned Devaney-chaos and the properties of singularity has never been fully established. This talk aims to discuss and investigate such connection.  In general, the singularities of bounded invertible piecewise isometric dynamical systems in Euclidean plane can be classified as, removable, sliding and shufflinging singularities according to their geometrical aspects.  Furthermore, it is proved that the removable singularities and the shuffling singularities do not generate the Devaney-chaos.  Thus, the presence of the sliding singularities is necessary in order to have the chaotic dynamics.  Through this talk, the speaker will survey these results and discuss some new results on the unsolved half, the sufficiency. If time permits, the speaker will talk about a possible connection between the shuffling singularity and the ergodicity as well.

Key–Words:  chaos, Devaney-chaos, discontinuous dynamics, piecewise isometric dynamics, singularity.

Image Size

wideSize=700;
largeSize=500;
normalSize=400;
smallSize=300;

Natural Log

Clear[x]
Ln[x_]=Log[x];

ViewPoint

DefaultView={1.3,-2.4,2.0};
MathView={2.4,1.3,2.0};

Begin["Private`"];
SetOptions[Plot3D,ViewPoint->MathView];
SetOptions[ParametricPlot3D,ViewPoint->MathView];
SetOptions[ContourPlot3D,ViewPoint->MathView];
SetOptions[Graphics3D,ViewPoint->MathView];
SetOptions[ListPlot3D,ViewPoint->MathView];
SetOptions[ListSurfacePlot3D,ViewPoint->MathView];
SetOptions[RevolutionPlot3D,ViewPoint->DefaultView];
End[];

BoxRatios

Begin["Private`"];
SetOptions[Plot3D,BoxRatios->Automatic];
SetOptions[ParametricPlot3D,BoxRatios->Automatic];
SetOptions[ContourPlot3D,BoxRatios->Automatic];
SetOptions[Graphics3D,BoxRatios->Automatic];
SetOptions[ListPlot3D,BoxRatios->Automatic];
SetOptions[ListSurfacePlot3D,BoxRatios->Automatic];
End[];

3D Vectors

Options[Arrow3D]={ArrowHead->0.1,Sharpness->0.25,Roundness->12};
Arrow3D[{from_?VectorQ,to_?VectorQ},opts___]:=
Module[{vector,vectorlength,unitvector,tmpvector,tmplength,normal,binormal,arrowhead,arrowbase,arrowvertex,sharpness,roundness,ii},
{arrowhead,sharpness,roundness}={ArrowHead,Sharpness,Roundness}/.{opts}/.Options[Arrow3D];
vector=N[to-from];
vectorlength=(Sqrt[vector.vector]);
unitvector=Normalize[vector];
tmpvector={0,unitvector[[3]],-unitvector[[2]]};
If[tmpvector=={0,0,0},normal={0,1,0},normal=Normalize[tmpvector]];
binormal=N[Cross[unitvector,normal]];
arrowbase=from+(1-arrowhead)*vector;
arrowvertex=Table[arrowbase+(arrowhead*vectorlength*Tan[sharpness])(Cos[((2π)/(N[roundness]))ii]normal+Sin[((2π)/(N[roundness]))ii]binormal),{ii,0,roundness,1}];
Flatten[{
Table[
{EdgeForm[None],Polygon[{to,arrowvertex[[ii]],arrowvertex[[ii+1]]}]},
{ii,1,roundness,1}],
Line[{from,to}]
}]
]/;Length[from]==Length[to]==3;

.  Invertible Piecewise Isometric Dynamics

(.)  Why Do We Study Discontinuous Dynamics?

...  Digital signal processing.

Unlike analog signal processing, digital signal processing often causes discontinuous distuebance.

...  Kicked oscillators.

Oscillators, paired with discontinuous external pulse, provide interesting research topics in physics.

...  Roundoff errors and information overflow.

Even for loss-less systems, roundoff errors and information overflow can cause unexpected (serendipitous) outcomes.

...  Generates interesting pictures.

Many examples will be given in Subsection 1.4.

...  Why not?

(.)  Piecewise Isometry.

...  Definition.  (Piecewise Isometry)

Let {(Subscript[P, 1]),⋯ ,(Subscript[P, n])} be a collection of mutually disjoint connected open regions in (ℝ^2) with piecewise smooth boundary, and let X=(OverBar[(Subscript[P, 1])])⋃⋯⋃(OverBar[(Subscript[P, n])]).  A multiple valued map f:X->X is called a piecewise isoemtry in X subordinate to {(Subscript[P, 1]),⋯,(Subscript[P, n])} if there exist isometries (Subscript[f, i]):(OverBar[(Subscript[P, i])])->X, i∈{1,⋯,n} such that f(x)={(Subscript[f, i])(x):x∈(OverBar[(Subscript[P, i])])}.

Here, each (Subscript[P, i]) and each (Subscript[f, i]) are called an atom and an isometric component of f, respectively.  We say f is bounded if each (Subscript[P, i]) is bounded.  We say f is a polygon exchange if each (Subscript[P, i]) is a polygon.  We say f is a piecewise rotation if f is a rotation in each (Subscript[P, i]).  Finally, we say f is invertible if f((Subscript[P, i]))⋂f((Subscript[P, j]))=ϕ for i≠j.

It is not difficult to prove that the condition f((Subscript[P, i]))⋂f((Subscript[P, j]))=ϕ for i≠j yields the inverse piecewise isometry (f^(-1)):M->M subordinate to {f((Subscript[P, 1])),⋯,f((Subscript[P, n]))}.

...  Singularity.

A piecewise isometry can be multiple-valued only on the common boundary, ∂(Subscript[P, i])⋂∂(Subscript[P, j]).  I found it easier to work with the singularity than the discontinuity.

...  Why do we study the piecewise isometry?

The chaos or other complex behavior of piecewise isometries can come only from the singularity.

No other source obscure the effects of the discontinuity.

(.)  Singular Sets and Exceptional Sets.

Here is the definition of a piecewise isometry, revisited.

...  Definition.  (Piecewise Isometry)

Let {(Subscript[P, 1]),⋯ ,(Subscript[P, n])} be a collection of mutually disjoint connected open regions in (ℝ^2) with piecewise smooth boundary, and let X=(OverBar[(Subscript[P, 1])])⋃⋯⋃(OverBar[(Subscript[P, n])]).  A multiple valued map f:X->X is called a piecewise isoemtry in X subordinate to {(Subscript[P, 1]),⋯,(Subscript[P, n])} if there exist isometries (Subscript[f, i]):(OverBar[(Subscript[P, i])])->X, i∈{1,⋯,n} such that f(x)={(Subscript[f, i])(x):x∈(OverBar[(Subscript[P, i])])}.

Here, each (Subscript[P, i]) and each (Subscript[f, i]) are called an atom and an isometric component of f, respectively.  We say f is bounded if each (Subscript[P, i]) is bounded.  We say f is a polygon exchange if each (Subscript[P, i]) is a polygon.  We say f is a piecewise rotation if f is a rotation in each (Subscript[P, i]).  Finally, we say f is invertible if f((Subscript[P, i]))⋂f((Subscript[P, j]))=ϕ for i≠j.

It is not difficult to prove that the condition f((Subscript[P, i]))⋂f((Subscript[P, j]))=ϕ for i≠j yields the inverse piecewise isometry (f^(-1)):M->M subordinate to {f((Subscript[P, 1])),⋯,f((Subscript[P, n]))}.

Recall that a piecewise isometry can be multiple valued only on the common boundary, ∂(Subscript[P, i])⋂∂(Subscript[P, j]).

...  Definition.  (Singular Set, Regular Set and Exceptional Set)

The singular set ∑ is defined by

{({{ (SuperPlus[∑])={x∈X: f  is multiple valued at x},   }, {(SuperMinus[∑])={x∈X: (f^(-1)) is multiple valued at x}.}})
          
          ∑=(⋃_(k=0)^∞)((f^k)((SuperPlus[Σ]))⋃(f^(-k))((SuperMinus[Σ])))                                  
          
        ={x∈X: (f^k)(x) ∈(SuperMinus[∑]) or (f^(-k))(x)∈(SuperPlus[∑])}.

Let {(Subscript[P, 1]),⋯ ,(Subscript[P, n])} be a collection of mutually disjoint connected open regions in (ℝ^2) with piecewise smooth boundary, and let X=(OverBar[(Subscript[P, 1])])⋃⋯⋃(OverBar[(Subscript[P, n])]).  Suppose f:X->X is an invertible piecewise isometry subordinate to {(Subscript[P, 1]),⋯ ,(Subscript[P, n])}.  Let  (SuperPlus[Σ])={x∈X: f is multiple valued at x}  and  (SuperMinus[Σ])={x∈X: (f^(-1)) is multiple valued at x}.  We call the set Σ=(⋃_(k=0)^∞)((f^k)((SuperPlus[Σ]))⋃(f^(-k))((SuperMinus[Σ]))), the singular set of f.  We call its closure (OverBar[Σ]), the exceptional set of f.  Finally, we call the exterior of the singular set X∖(OverBar[Σ]), the regular set of f.

We call its closure (OverBar[Σ]), the exceptional set of f.  Finally, we call the exterior of the singular set X∖(OverBar[Σ]), the regular set of f.

Note that x∈Σ means that either it came from the singularity (in the past) or it will hit the singularity (in the future).

(.)  Examples of Singular Sets.

...  Example.  (A Dual Rotation Map on Isosceles Triangle I)

Choose any top angle (Subscript[θ, 5]), where

(Subscript[θ, 5])=π/a ,   3<a≤5.

Change the top angle and run the program again to get the dynamics of a non-invertible piecewise isometry.  The default angle is  π/5.

Top Angle

Clear[t5]
t5=(π/5);

Mapping

Clear[RR,x,y,θ]
tt5=N[t5];
ts5=((π-tt5)/2);
xp5={Cos[ts5],0};
xm5={-Cos[ts5],0};
x05={0,Sin[ts5]};

RR[θ_,x_,y_]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
xx5=xm5 + RR[tt5, xp5[[1]]-xm5[[1]], xp5[[2]]-xm5[[2]] ];
yy5=xp5 + RR[-tt5, xm5[[1]]-xp5[[1]], xm5[[2]]-xp5[[2]] ];
pp5=Flatten[{0,y/.NSolve[((y-xm5[[2]])/(0-xm5[[1]]))==Tan[ts5-(1/2)tt5],y]}];
qq5=Flatten[{0,y/.NSolve[((xx5[[1]])^2)+(((xx5[[2]]-y))^2)==((xp5[[1]])^2)+(((xp5[[2]]-y))^2),y]}];

Rp5[{x_,y_}]=pp5+RR[tt5-π,x-pp5[[1]],y-pp5[[2]]];
Rq5[{x_,y_}]=qq5+RR[π-tt5,x-qq5[[1]],y-qq5[[2]]];

beforeTri5=Graphics[{
{Pink,Opacity[0.5],Polygon[{x05,xm5,xx5}]},
{Cyan,Opacity[0.5],Polygon[{xp5,xm5,xx5}]},
Line[{xm5,xx5}],
{Thick,Line[{{x05,xp5},{xp5,xm5},{xm5,x05}}]},
{Darker[Red],PointSize[Large],Point[pp5]},
{Blue,PointSize[Large],Point[qq5]},
Text["Before",{0,-0.1}]
}];
afterTri5=Graphics[{
{Pink,Opacity[0.5],Polygon[{Rp5[x05],Rp5[xm5],Rp5[xx5]}]},
{Cyan,Opacity[0.5],Polygon[{Rq5[xp5],Rq5[xm5],Rq5[xx5]}]},
Line[{Rp5[xm5],Rp5[xx5]}],Line[{Rp5[x05],Rp5[xx5],Rp5[xm5]}],
{Thick,Line[{{x05,xp5},{xp5,xm5},{xm5,x05}}]},
{Darker[Red],PointSize[Large],Point[pp5]},
{Blue,PointSize[Large],Point[qq5]},
Text["After",{0,-0.1}]
}];
midTri5=Graphics[{
{Arrowheads[Medium],Arrow[{(1/2)x05-{0.5,0},(1/2)x05+{0.5,0}}]},
Text["f",(1/2)x05+{0,0.15}]
}];
Show[GraphicsGrid[{
{beforeTri5,SpanFromLeft,midTri5,afterTri5,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth}
}],ImageSize->wideSize]

R15[θ_,{x_,y_}]=pp5+RR[θ(tt5-π),x-pp5[[1]],y-pp5[[2]]];
R25[θ_,{x_,y_}]=qq5+RR[θ(π-tt5),x-qq5[[1]],y-qq5[[2]]];
Manipulate[
Graphics[{
{Thin,White,Line[{{pp5[[1]]-(x05[[2]]-pp5[[2]]),x05[[2]]+0.1},{pp5[[1]]+(x05[[2]]-pp5[[2]]),x05[[2]]+0.1},{pp5[[1]]+(x05[[2]]-pp5[[2]]),qq5[[2]]-(Sqrt[(((xm5[[1]]-qq5[[1]]))^2)+(((xm5[[2]]-qq5[[2]]))^2)])},{pp5[[1]]-(x05[[2]]-pp5[[2]]),qq5[[2]]-(Sqrt[(((xm5[[1]]-qq5[[1]]))^2)+(((xm5[[2]]-qq5[[2]]))^2)])},{pp5[[1]]-(x05[[2]]-pp5[[2]]),x05[[2]]+0.1}}]},
{Pink,Opacity[0.5],Polygon[{R15[θ,x05],R15[θ,xm5],R15[θ,xx5]}]},
{Cyan,Opacity[0.5],Polygon[{R25[θ,xp5],R25[θ,xm5],R25[θ,xx5]}]},
Line[{R25[θ,xp5],R25[θ,xm5],R25[θ,xx5],R25[θ,xp5]}],Line[{R15[θ,x05],R15[θ,xm5],R15[θ,xx5],R15[θ,x05]}],
{Thick,Line[{x05,xm5,xp5,x05}]},
{Red,PointSize[Large],Point[pp5]},
{Blue,PointSize[Large],Point[qq5]}
},ImageSize->smallSize],
{θ,0,1}]

X is being cut off along the singularity, generating a cutting singularity.

Singular Set

gridNumber5=200;
frwdNumber5=200;
bkwdNumber5=200;

frwdShape5=Graphics[{
{Line[{x05,xm5,xp5,x05}]},
{Darker[Red],PointSize[Medium],Point[pp5]},
{Blue,PointSize[Medium],Point[qq5]},
Text["Forward",{0,-0.05}]
}];

bkwdShape5=Graphics[{
{Line[{x05,xm5,xp5,x05}]},
{Darker[Red],PointSize[Medium],Point[pp5]},
{Blue,PointSize[Medium],Point[qq5]},
Text["Backward",{0,-0.05}]
}];

frwdStarter5=Table[((index/gridNumber5)xm5+(1-(index/gridNumber5))xx5),{index,0,gridNumber5}];
frwdStarterPlot5=ListPlot[frwdStarter5,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];
FF5[{x_,y_}]=
Piecewise[{
{Rp5[{x,y}],y≥((xx5[[2]]-xm5[[2]])/(xx5[[1]]-xm5[[1]]))(x-xm5[[1]])+xm5[[2]]},
{Rq5[{x,y}],y<((xx5[[2]]-xm5[[2]])/(xx5[[1]]-xm5[[1]]))(x-xm5[[1]])+xm5[[2]]}
}];
frwdFirst15=Table[Rp5[frwdStarter5[[index]]],{index,1,Length[frwdStarter5]}];
frwdFirst25=Table[Rq5[frwdStarter5[[index]]],{index,1,Length[frwdStarter5]}];
frwdBase5=Union[frwdFirst15,frwdFirst25];
frwdOrbits5=Table[NestList[FF5,frwdBase5[[index]],frwdNumber5],{index,1,Length[frwdBase5]}];
frwdPoints5=Flatten[frwdOrbits5,1];
frwdPlot5=ListPlot[frwdPoints5,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

bkwdStarter5=Table[((index/gridNumber5)xp5+(1-(index/gridNumber5))yy5),{index,0,gridNumber5}];
bkwdStarterPlot5=ListPlot[bkwdStarter5,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

iRp5[{x_,y_}]=pp5+RR[π-tt5,x-pp5[[1]],y-pp5[[2]]];
iRq5[{x_,y_}]=qq5+RR[tt5-π,x-qq5[[1]],y-qq5[[2]]];

GG5[{x_,y_}]=
Piecewise[{
{iRp5[{x,y}],y≥((yy5[[2]]-xp5[[2]])/(yy5[[1]]-xp5[[1]]))(x-xp5[[1]])+xp5[[2]]},
{iRq5[{x,y}],y<((yy5[[2]]-xp5[[2]])/(yy5[[1]]-xp5[[1]]))(x-xp5[[1]])+xp5[[2]]}
}];
bwkdFirst15=Table[iRp5[bkwdStarter5[[index]]],{index,1,Length[bkwdStarter5]}];
bwkdFirst25=Table[iRq5[bkwdStarter5[[index]]],{index,1,Length[bkwdStarter5]}];
bkwdBase5=Union[bwkdFirst15,bwkdFirst25];
bkwdOrbits5=Table[NestList[GG5,bkwdBase5[[index]],bkwdNumber5],{index,1,Length[bkwdBase5]}];
bkwdPoints5=Flatten[bkwdOrbits5,1];
bkwdPlot5=ListPlot[bkwdPoints5,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

Show[GraphicsGrid[{{Show[frwdShape5,frwdStarterPlot5,frwdPlot5],Show[bkwdShape5,bkwdStarterPlot5,frwdPlot5]}}],ImageSize->largeSize]

Step by Step

iterNumber5=25;
frwdStages5=Table[Table[frwdOrbits5[[pts]][[iteration]],{pts,1,Length[frwdOrbits5],1}],{iteration,1,iterNumber5}];
bkwdStages5=Table[Table[bkwdOrbits5[[pts]][[iteration]],{pts,1,Length[bkwdOrbits5],1}],{iteration,1,iterNumber5}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdShape5,
ListPlot[Flatten[Table[frwdStages5[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]],
Show[bkwdShape5,
ListPlot[Flatten[Table[bkwdStages5[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]]
}}],ImageSize->normalSize],
{iteration,1,iterNumber5,1}]

...  Example.  (A Dual Rotation Map on Isosceles Triangle II)

Choose any top angle (Subscript[θ, 7]), where

(Subscript[θ, 7])=π/a ,   3<a≤7.

Change the top angle and run the program again to get the dynamics of a non-invertible piecewise isometry.  The default angle is  π/7.

Top Angle

Clear[t7]
t7=(π/7);

Mapping

Clear[RR,x,y,θ]
tt7=N[t7];
ts7=((π-tt7)/2);
xp7={Cos[ts7],0};
xm7={-Cos[ts7],0};
x07={0,Sin[ts7]};

RR[θ_,x_,y_]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
xx7=Flatten[{x,y}/.NSolve[{y==Tan[ts7-tt7](x-xm7[[1]])+xm7[[2]],y==-Tan[ts7](x-xp7[[1]])+xp7[[2]]},{x,y}]];
yy7=Flatten[{x,y}/.NSolve[{y==Tan[tt7-ts7](x-xp7[[1]])+xp7[[2]],y==Tan[ts7](x-xm7[[1]])+xm7[[2]]},{x,y}]];
pp7=Flatten[{0,y/.NSolve[((y-xm7[[2]])/(0-xm7[[1]]))==Tan[ts7-(1/2)tt7],y]}];
Rp7[{x_,y_}]=pp7+RR[tt7-π,x-pp7[[1]],y-pp7[[2]]];
qq7=Flatten[{0,y/.NSolve[((y-xm7[[2]])/(0-xm7[[1]]))==Tan[(1/2)ts7],y]}];
Rq7[{x_,y_}]=qq7+RR[-((π+tt7)/2),x-qq7[[1]],y-qq7[[2]]];

beforeTri7=Graphics[{
{Pink,Opacity[0.5],Polygon[{x07,xm7,xx7}]},
{Cyan,Opacity[0.5],Polygon[{xp7,xm7,xx7}]},
Line[{xm7,xx7}],
{Thick,Line[{{x07,xp7},{xp7,xm7},{xm7,x07}}]},
{Darker[Red],PointSize[Large],Point[pp7]},
{Blue,PointSize[Large],Point[qq7]},
Text["Before",{0,-0.1}]
}];
afterTri7=Graphics[{
{Pink,Opacity[0.5],Polygon[{Rp7[x07],Rp7[xm7],Rp7[xx7]}]},
{Cyan,Opacity[0.5],Polygon[{Rq7[xp7],Rq7[xm7],Rq7[xx7]}]},
Line[{Rq7[xm7],Rq7[xx7]}],Line[{Rp7[xx7],Rp7[x07]}],
{Thick,Line[{{x07,xp7},{xp7,xm7},{xm7,x07}}]},
{Darker[Red],PointSize[Large],Point[pp7]},
{Blue,PointSize[Large],Point[qq7]},
Text["After",{0,-0.1}]
}];
midTri7=Graphics[{
{Arrowheads[Medium],Arrow[{(1/2)x07-{0.5,0},(1/2)x07+{0.5,0}}]},
Text["f",(1/2)x07+{0,0.15}]
}];
Show[GraphicsGrid[{
{beforeTri7,SpanFromLeft,midTri7,afterTri7,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth}
}],ImageSize->wideSize]
(*  Show[GraphicsGrid[{{Show[before,OuterShape],Show[mid],Show[after,OuterShape]}}]]  *)

R17[θ_,{x_,y_}]=pp7+RR[θ(tt7-π),x-pp7[[1]],y-pp7[[2]]];
R27[θ_,{x_,y_}]=qq7+RR[-θ(((π+tt7)/2)),x-qq7[[1]],y-qq7[[2]]];
Manipulate[
Graphics[{{White,Line[{{pp7[[1]]-(x07[[2]]-pp7[[2]]),x07[[2]]+0.1},
{pp7[[1]]-(x07[[2]]-pp7[[2]]),qq7[[2]]-(Sqrt[(((xm7[[1]]-qq7[[1]]))^2)+(((xm7[[2]]-qq7[[2]]))^2)])},{pp7[[1]]+(x07[[2]]-pp7[[2]]),qq7[[2]]-(Sqrt[(((xm7[[1]]-qq7[[1]]))^2)+(((xm7[[2]]-qq7[[2]]))^2)])},{pp7[[1]]+(x07[[2]]-pp7[[2]]),x07[[2]]+0.1},{pp7[[1]]-(x07[[2]]-pp7[[2]]),x07[[2]]+0.1}}]},
{Pink,Opacity[0.5],Polygon[{R17[θ,x07],R17[θ,xm7],R17[θ,xx7]}]},
{Cyan,Opacity[0.5],Polygon[{R27[θ,xp7],R27[θ,xm7],R27[θ,xx7]}]},
Line[{R27[θ,xp7],R27[θ,xm7],R27[θ,xx7],R27[θ,xp7]}],Line[{R17[θ,x07],R17[θ,xm7],R17[θ,xx7],R17[θ,x07]}],
{Thick,Line[{x07,xm7,xp7,x07}]},
{Red,PointSize[Large],Point[pp7]},
{Blue,PointSize[Large],Point[qq7]}
},ImageSize->smallSize],
{θ,0,1}]

Again, we have a cutting singularity.

Singular Set

gridNumber7=200;
frwdNumber7=200;
bkwdNumber7=200;

frwdShape7=Graphics[{
{Line[{x07,xm7,xp7,x07}]},
{Darker[Red],PointSize[Medium],Point[pp7]},
{Blue,PointSize[Medium],Point[qq7]},
Text["Forward",{0,-0.05}]
}];

bkwdShape7=Graphics[{
{Line[{x07,xm7,xp7,x07}]},
{Darker[Red],PointSize[Medium],Point[pp7]},
{Blue,PointSize[Medium],Point[qq7]},
Text["Backward",{0,-0.05}]
}];

frwdStarter7=Table[((index/gridNumber7)xm7+(1-(index/gridNumber7))xx7),{index,0,gridNumber7}];
frwdStarterPlot7=ListPlot[frwdStarter7,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];
FF7[{x_,y_}]=
Piecewise[{
{Rp7[{x,y}],y≥((xx7[[2]]-xm7[[2]])/(xx7[[1]]-xm7[[1]]))(x-xm7[[1]])+xm7[[2]]},
{Rq7[{x,y}],y<((xx7[[2]]-xm7[[2]])/(xx7[[1]]-xm7[[1]]))(x-xm7[[1]])+xm7[[2]]}
}];
frwdFirst17=Table[Rp7[frwdStarter7[[index]]],{index,1,Length[frwdStarter7]}];
frwdFirst27=Table[Rq7[frwdStarter7[[index]]],{index,1,Length[frwdStarter7]}];
frwdBase7=Union[frwdFirst17,frwdFirst27];
frwdOrbits7=Table[NestList[FF7,frwdBase7[[index]],frwdNumber7],{index,1,Length[frwdBase7]}];
frwdPoints7=Flatten[frwdOrbits7,1];
frwdPlot7=ListPlot[frwdPoints7,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

bkwdStarter7=Table[((index/gridNumber7)xp7+(1-(index/gridNumber7))yy7),{index,0,gridNumber7}];
bkwdStarterPlot7=ListPlot[bkwdStarter7,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

iRp7[{x_,y_}]=pp7+RR[π-tt7,x-pp7[[1]],y-pp7[[2]]];
iRq7[{x_,y_}]=qq7+RR[((π+tt7)/2),x-qq7[[1]],y-qq7[[2]]];

GG7[{x_,y_}]=
Piecewise[{
{iRp7[{x,y}],y≥((yy7[[2]]-xp7[[2]])/(yy7[[1]]-xp7[[1]]))(x-xp7[[1]])+xp7[[2]]},
{iRq7[{x,y}],y<((yy7[[2]]-xp7[[2]])/(yy7[[1]]-xp7[[1]]))(x-xp7[[1]])+xp7[[2]]}
}];
bwkdFirst17=Table[iRp7[bkwdStarter7[[index]]],{index,1,Length[bkwdStarter7]}];
bwkdFirst27=Table[iRq7[bkwdStarter7[[index]]],{index,1,Length[bkwdStarter7]}];
bkwdBase7=Union[bwkdFirst17,bwkdFirst27];
bkwdOrbits7=Table[NestList[GG7,bkwdBase7[[index]],bkwdNumber7],{index,1,Length[bkwdBase7]}];
bkwdPoints7=Flatten[bkwdOrbits7,1];
bkwdPlot7=ListPlot[bkwdPoints7,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

Show[GraphicsGrid[{{Show[frwdShape7,frwdStarterPlot7,frwdPlot7],Show[bkwdShape7,bkwdStarterPlot7,frwdPlot7]}}],ImageSize->smallSize]

Step by Step

iterNumber7=50;
frwdStages7=Table[Table[frwdOrbits7[[pts]][[iteration]],{pts,1,Length[frwdOrbits7],1}],{iteration,1,iterNumber7}];
bkwdStages7=Table[Table[bkwdOrbits7[[pts]][[iteration]],{pts,1,Length[bkwdOrbits7],1}],{iteration,1,iterNumber7}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdShape7,
ListPlot[Flatten[Table[frwdStages7[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]],
Show[bkwdShape7,
ListPlot[Flatten[Table[bkwdStages7[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]]
}}],ImageSize->smallSize],
{iteration,1,iterNumber7,1}]

...  Example.  (A Dual Rotation Maps on (ℝ^2))

Choose any rotation angles (Subscript[θ, 1]) and (Subscript[θ, 2]), and the points (Subscript[p, 1]) and (Subscript[p, 2]) such that

(Subscript[p, 1])=((Subscript[x, 1]),(Subscript[y, 1])),  (Subscript[p, 2])=((Subscript[x, 2]),(Subscript[y, 2])),  (Subscript[y, 1])<0<(Subscript[y, 2]),  -2≤(Subscript[x, 1]),(Subscript[x, 2])<2.

Rotation Angles

Clear[t1,t2,p1,p2]
t1=1Pi/8;  t2=1Pi/8;
p1={-Sin[(t1/2)],Cos[(t1/2)]};
p2={Sin[(t2/2)],-Cos[(t2/2)]};

Mapping

Clear[RR,θ,x,y]
tt1=N[t1];  tt2=N[t2];
pp1=N[p1];
pp2=N[p2];
qq1={-5,0};
qq2={5,0};
RR[θ_,x_,y_]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
RG1[{x_,y_}]=pp1+RR[tt1,x-pp1[[1]],y-pp1[[2]]];
RG2[{x_,y_}]=pp2+RR[tt2,x-pp2[[1]],y-pp2[[2]]];

beforeG=Graphics[{
{Cyan,Opacity[0.5],Polygon[{qq1,qq2,qq2+{0,3pp1[[2]]},qq1+{0,3pp1[[2]]}}]},
{Pink,Opacity[0.5],Polygon[{qq1,qq2,qq2+{0,3pp2[[2]]},qq1+{0,3pp2[[2]]}}]},
{Thick,Line[{qq1,qq2}]},
{Blue,PointSize[Large],Point[pp1]},
{Darker[Red],PointSize[Large],Point[pp2]}
}];
afterG=Graphics[{
{Cyan,Opacity[0.5],Polygon[{RG1[qq1],RG1[qq2],RG1[qq2+{0,3pp1[[2]]}],RG1[qq1+{0,3pp1[[2]]}]}]},
{Pink,Opacity[0.5],Polygon[{RG2[qq1],RG2[qq2],RG2[qq2+{0,3pp2[[2]]}],RG2[qq1+{0,3pp2[[2]]}]}]},
{Blue,Line[{RG1[qq1],RG1[qq2]}]},
{Red,Line[{RG2[qq1],RG2[qq2]}]},
{Blue,PointSize[Large],Point[pp1]},
{Darker[Red],PointSize[Large],Point[pp2]}
}];
midG=Graphics[{
{Arrowheads[Medium],Arrow[{{-0.5,0},{0.5,0}}]},
Text["f",{0,0.15}]
}];

Show[GraphicsGrid[{
{beforeG,SpanFromLeft,midG,afterG,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth}
}],ImageSize->wideSize]

Clear[RR,θ,x,y]
tt1=N[t1];  tt2=N[t2];
pp1=N[p1];
pp2=N[p2];
qq1={-5,0};
qq2={5,0};
RR[θ_,x_,y_]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
RG1a[θ_,{x_,y_}]=pp1+RR[θ tt1,x-pp1[[1]],y-pp1[[2]]];
RG2a[θ_,{x_,y_}]=pp2+RR[θ tt2,x-pp2[[1]],y-pp2[[2]]];

Manipulate[
Show[
ParametricPlot[{RG1[aθ,qq1],RG1a[θ,qq2],RG1a[θ,qq1+{0,3pp1[[2]]}],RG1a[θ,qq2+{0,3pp1[[2]]}],RG2a[θ,qq1],RG2a[θ,qq2],RG2a[θ,qq1-{0,3pp1[[2]]}],RG2a[θ,qq2-{0,3pp1[[2]]}]},{θ,0,1},Axes->False,AspectRatio->Automatic,PlotStyle->White],
Graphics[{
{White,Point[RG1a[θ,qq1]]},{White,Point[RG1a[θ,qq2]]},
{White,Point[RG1a[θ,qq1+{0,3pp1[[2]]}]]},{White,Point[RG1a[θ,qq2+{0,3pp1[[2]]}]]},

{White,Point[RG2a[θ,qq1]]},{White,Point[RG2a[θ,qq2]]},
{White,Point[RG2a[θ,qq1+{0,-3pp1[[2]]}]]},{White,Point[RG2a[θ,qq2+{0,-3pp1[[2]]}]]},

{Cyan,Opacity[0.5],Polygon[{RG1a[θ,qq1],RG1a[θ,qq2],RG1a[θ,qq2+{0,3pp1[[2]]}],RG1a[θ,qq1+{0,3pp1[[2]]}]}]},
{Pink,Opacity[0.5],Polygon[{RG2a[θ,qq1],RG2a[θ,qq2],RG2a[θ,qq2+{0,3pp2[[2]]}],RG2a[θ,qq1+{0,3pp2[[2]]}]}]},
{Blue,Line[{RG1a[θ,qq1],RG1a[θ,qq2]}]},
{Red,Line[{RG2a[θ,qq1],RG2a[θ,qq2]}]},
{Blue,PointSize[Large],Point[pp1]},
{Darker[Red],PointSize[Large],Point[pp2]}
},ImageSize->normalSize]
],
{θ,0,1}]

This time, X is not being cut off entirely.  This is an example of a sliding singularity.

Singular Set

gridNumberG=200;
frwdNumberG=200;
bkwdNumberG=200;

Clear[RR,θ,x,y,FF8, GG8]
tt1=N[t1];  tt2=N[t2];
pp1=N[p1];
pp2=N[p2];
qq1={-5,0};
qq2={5,0};
RR[θ_,x_,y_]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
RG1[{x_,y_}]=pp1+RR[tt1,x-pp1[[1]],y-pp1[[2]]];
RG2[{x_,y_}]=pp2+RR[tt2,x-pp2[[1]],y-pp2[[2]]];
FF8[{x_,y_}]:=Piecewise[{{RG1[{x,y}],y≥0},{RG2[{x,y}],y<0}}];

frwdShapeG=Graphics[{
{Thick,Line[{qq1+{1,0},qq2-{1,0}}]},
{Blue,PointSize[Medium],Point[pp1]},
{Darker[Red],PointSize[Medium],Point[pp2]},
Text["Forward",{-0.2,-6.5}]
}];
frwdBaseG=Table[((index/gridNumberG)(qq1+{1.0,0.0})+(1-(index/gridNumberG))(qq2-{1.0,0.0})),{index,0,gridNumberG}];
frwdOrbitsG=Table[NestList[FF8,frwdBaseG[[index]],frwdNumberG],{index,1,Length[frwdBaseG]}];
frwdPointsG=Flatten[frwdOrbitsG,1];
frwdPlotG=ListPlot[frwdPointsG,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

(*  Show[frwdShapeG,frwdPlotG,ImageSize->500]  *)

iRG1[{x_,y_}]=pp1+RR[-tt1,x-pp1[[1]],y-pp1[[2]]];
iRG2[{x_,y_}]=pp2+RR[-tt2,x-pp2[[1]],y-pp2[[2]]];

GG8[{x_,y_}]:=Piecewise[{
{iRG1[{x,y}],iRG1[{x,y}][[2]]≥0},
{iRG2[{x,y}],iRG1[{x,y}][[2]]<0}
}];

bkwdShapeG=Graphics[{
{Thick,Line[{qq1+{1,0},qq2-{1,0}}]},
{Blue,PointSize[Medium],Point[pp1]},
{Darker[Red],PointSize[Medium],Point[pp2]},
Text["Backward",{-0.2,-6.5}]
}];

bkwdBaseG=Table[((index/gridNumberG)(qq1+{1.0,0.0})+(1-(index/gridNumberG))(qq2-{1.0,0.0})),{index,0,gridNumberG}];
bkwdOrbitsG=Table[NestList[GG8,bkwdBaseG[[index]],bkwdNumberG],{index,1,Length[bkwdBaseG]}];
bkwdPointsG=Flatten[bkwdOrbitsG,1];
bkwdPlotG=ListPlot[bkwdPointsG,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];
Show[GraphicsGrid[{{Show[frwdShapeG,frwdPlotG],Show[bkwdShapeG,bkwdPlotG]}}],ImageSize->wideSize]

Step by Step

iterNumberG=100;
frwdStagesG=Table[Table[frwdOrbitsG[[pts]][[iteration]],{pts,1,Length[frwdOrbitsG],1}],{iteration,1,iterNumberG}];
bkwdStagesG=Table[Table[bkwdOrbitsG[[pts]][[iteration]],{pts,1,Length[bkwdOrbitsG],1}],{iteration,1,iterNumberG}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdShapeG,
ListPlot[Flatten[Table[frwdStagesG[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}],PlotRange->{{-5.5,5.5},{-5.75,5.75}}],
Show[bkwdShapeG,
ListPlot[Flatten[Table[bkwdStagesG[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}],PlotRange->{{-5.5,5.5},{-5.75,5.75}}]
}}],ImageSize->largeSize],
{iteration,1,iterNumberG,1}]

...  Example.  (A Symmetric Uniform Piecewise Elliptic Rotation Map on (𝕋^2))

Choose any rotation angle θ, where

0<θ<π.

Rotation Angle.

Clear[t0]
t0=2Pi/5;

In The Unit Square

f(({{x}, {y}}))=(({{0, -1}, {1, 2a}}))(({{x}, {y}}))+(({{1}, {-a}}))     (((Mod 1))^2),     a=Cos[θ].

Clear[TT,aa,AA,BB,xx,yy,x,y,θ]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};

originalSq=Graphics[{
{White,Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{{0,0},{1,0},{1,1},{0,1}}]},
{Lighter[Pink],Polygon[{{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))},{0,(1/2)},{0,((Abs[aa]-aa)/(2Abs[aa]))}}]},
{Lighter[Pink],Polygon[{{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))},{1,(1/2)},{1,((Abs[aa]+aa)/(2Abs[aa]))}}]},
Line[{{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))},{0,(1/2)}}],
Line[{{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))},{1,(1/2)}}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
tempSq=Graphics[{
{Cyan,Opacity[0.5],Polygon[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}]}]},
{Lighter[Pink],Polygon[{{(1/2),0},{((Abs[aa]+aa)/(2Abs[aa])),0},{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),1},{((Abs[aa]-aa)/(2Abs[aa])),1},{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}}]},
Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
finalSq=Graphics[{
{White,Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}]}]},
{White,Polygon[{{(1/2),0},{((Abs[aa]+aa)/(2Abs[aa])),0},{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}}]},
{White,Polygon[{{(1/2),1},{((Abs[aa]-aa)/(2Abs[aa])),1},{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),1},{((Abs[aa]+aa)/(2Abs[aa])),1},{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),0},{((Abs[aa]-aa)/(2Abs[aa])),0},{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}}]},
Line[{{(1/2),1},{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}}],
Line[{{(1/2),0},{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
midSq=Graphics[{
{Arrowheads[Medium],Arrow[{{-0.5,0.5},{0.5,0.5}}]},
Text["f",{0,0.8}]
}];

Show[GraphicsGrid[{
{originalSq,SpanFromLeft,SpanFromLeft,midSq,tempSq,SpanFromLeft,SpanFromLeft,midSq,finalSq,SpanFromLeft,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth}
}],ImageSize->wideSize]

gridNumberSq=200;
frwdNumberSq=200;
bkwdNumberSq=200;

Clear[xx,yy]
TT=N[t0];  aa=Cos[TT];
FFsq[{xx_,yy_}]:={1-yy, Mod[xx + 2aa*yy - aa,1]};
GGsq[{xx_,yy_}]:={Mod[2aa*xx + yy - aa,1], -xx + 1};
frwdSq=Graphics[{
Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}],
Text["Forward",{0.5,-0.1}]
}];
bkwdSq=Graphics[{
Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}],
Text["Backward",{0.5,-0.1}]
}];
frwdBaseSq=Table[{(index/(N[gridNumberSq])),0.0},{index,0,gridNumberSq}];
frwdOrbitsSq=Table[NestList[FFsq,frwdBaseSq[[index]],frwdNumberSq],{index,1,Length[frwdBaseSq]}];
frwdPointsSq=Flatten[frwdOrbitsSq,1];
frwdPlotSq=ListPlot[frwdPointsSq,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

bkwdBaseSq=Table[{0.0,(index/(N[gridNumberSq]))},{index,0,gridNumberSq}];
bkwdOrbitsSq=Table[NestList[GGsq,bkwdBaseSq[[index]],bkwdNumberSq],{index,1,Length[bkwdBaseSq]}];
bkwdPointsSq=Flatten[bkwdOrbitsSq,1];
bkwdPlotSq=ListPlot[bkwdPointsSq,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

Show[GraphicsGrid[{{Show[frwdSq,frwdPlotSq],Show[bkwdSq,bkwdPlotSq]}}],ImageSize->largeSize]

iterNumberSq=50;
frwdStagesSq=Table[Table[frwdOrbitsSq[[pts]][[iteration]],{pts,1,Length[frwdOrbitsSq],1}],{iteration,1,iterNumberSq}];
bkwdStagesSq=Table[Table[bkwdOrbitsSq[[pts]][[iteration]],{pts,1,Length[bkwdOrbitsSq],1}],{iteration,1,iterNumberSq}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdSq,
ListPlot[Flatten[Table[frwdStagesSq[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]],
Show[bkwdSq,
ListPlot[Flatten[Table[bkwdStagesSq[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]]
}}],ImageSize->largeSize],
{iteration,1,iterNumberSq,1}]

In The Fundamental Rhombus

f(z)=(e^(θ i))z+σ ζ,   σ=0,±1.

Clear[TT,aa,AA,BB,xx,yy,XX]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};
kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

Ak[{xx_, yy_}]=kk[AA[{xx,yy}]];
Bk[{xx_, yy_}]=kk[BB[{xx,yy}]];

originalRh=Graphics[{
{White,Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{kk[{0,0}],kk[{1,0}],kk[{1,1}],kk[{0,1}]}]},
{Lighter[Pink],Polygon[{kk[{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],kk[{0,0.5}],kk[{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{kk[{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],kk[{1,0.5}],kk[{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
Line[{kk[{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],kk[{0,0.5}]}],
Line[{kk[{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],kk[{1,0.5}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
tempRh=Graphics[{
{Cyan,Opacity[0.5],Polygon[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}]}]},
Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
finalRh=Graphics[{
{White,Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}]}]},
{White,Polygon[{kk[{0.5,0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}]}]},
{White,Polygon[{kk[{0.5,1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}]}]},
Line[{kk[{0.5,1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}]}],
Line[{kk[{0.5,0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
midRh=Graphics[{
{Arrowheads[Medium],Arrow[{{-0.5,0.5},{0.5,0.5}}]},
Text["f",{0,0.8}]
}];

Show[GraphicsGrid[{
{originalRh,SpanFromLeft,SpanFromLeft,midRh,tempRh,SpanFromLeft,SpanFromLeft,midRh,finalRh,SpanFromLeft,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth}
}],ImageSize->wideSize]

Clear[TT,AA,xx,yy,kk,XX,aa,θ,dist,RR,Rk,Rpk,Rmk]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};
kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

Ak[{xx_, yy_}]=kk[AA[{xx,yy}]];
Bk[{xx_, yy_}]=kk[BB[{xx,yy}]];

RR[θ_,{x_,y_}]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
Rk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])],θ>TT}}];

Rpk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])]+kk[{0,(((Abs[aa]+aa)/(2Abs[aa] TT))+((Abs[aa]-aa)/(2Abs[aa] TT)))(θ-TT)}],θ>TT}}];
Rmk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])]+kk[{0,-(((Abs[aa]+aa)/(2Abs[aa] TT))+((Abs[aa]-aa)/(2Abs[aa] TT)))(θ-TT)}],θ>TT}}];
Whk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}],0≤θ≤TT},
{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])],θ>TT}}];

distRh=Max[(Sqrt[((kk[{0.5,0.5}][[1]])^2)+((kk[{0.5,0.5}][[2]])^2)]),(Sqrt[(((kk[{0.5,0.5}][[1]]-1))^2)+((kk[{0.5,0.5}][[2]])^2)])];

Manipulate[
Graphics[{
{White,Circle[kk[{0.5,0.5}],distRh]},

{Cyan,Opacity[0.5],Polygon[{Rk[θ,{0,0}],Rk[θ,{1,0}],Rk[θ,{1,1}],Rk[θ,{0,1}]}]},
{Lighter[White],Polygon[{Whk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Whk[θ,{0,0.5}],Whk[θ,{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[White],Polygon[{Whk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Whk[θ,{1,0.5}],Whk[θ,{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{Rpk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Rpk[θ,{0,0.5}],Rpk[θ,{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{Rmk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Rmk[θ,{1,0.5}],Rmk[θ,{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
Line[{Rpk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Rpk[θ,{0,0.5}]}],
Line[{Rmk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Rmk[θ,{1,0.5}]}],
Line[{Rk[θ,{0,0}],Rk[θ,{1,0}],Rk[θ,{1,1}],Rk[θ,{0,1}],Rk[θ,{0,0}]}],

{Thick,Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
},ImageSize->normalSize],{θ,0,2TT}]

gridNumberRh=200;
frwdNumberRh=200;
bkwdNumberRh=200;

Clear[TT,aa,xx,yy,XX]
TT=N[t0];
aa=Cos[TT];

kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

FFsq[{xx_,yy_}]:={1-yy, Mod[xx + 2aa*yy - aa,1]};
GGsq[{xx_,yy_}]:={Mod[2aa*xx + yy - aa,1], -xx + 1};

frwdRh=Graphics[{
Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}],
Text["Forward",{0.5,-0.1}]
}];
bkwdRh=Graphics[{
Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}],
Text["Backward",{0.5,-0.1}]
}];
frwdBaseRh=Table[{(index/(N[gridNumberRh])),0.0},{index,0,gridNumberRh}];
frwdOrbitsRh=Table[NestList[FFsq,frwdBaseRh[[index]],frwdNumberRh],{index,1,Length[frwdBaseRh]}];
frwdPointsRh=Flatten[frwdOrbitsRh,1];
frwdRhpointsRh=Table[kk[frwdPointsRh[[index]]],{index,1,Length[frwdPointsRh]}];
frwdPlotRh=ListPlot[frwdRhpointsRh,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

bkwdBaseRh=Table[{0.0,(index/(N[gridNumberRh]))},{index,0,gridNumberRh}];
bkwdOrbitsRh=Table[NestList[GGsq,bkwdBaseRh[[index]],bkwdNumberRh],{index,1,Length[bkwdBaseRh]}];
bkwdPointsRh=Flatten[bkwdOrbitsRh,1];
bkwdRhpointsRh=Table[kk[bkwdPointsRh[[index]]],{index,1,Length[bkwdPointsRh]}];
bkwdPlotRh=ListPlot[bkwdRhpointsRh,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

Show[GraphicsGrid[{{Show[frwdRh,frwdPlotRh],Show[bkwdRh,bkwdPlotRh]}}],ImageSize->largeSize]

iterNumberRh=50;
frwdStagesRh=Table[Table[kk[frwdOrbitsRh[[pts]][[iteration]]],{pts,1,Length[frwdOrbitsRh],1}],{iteration,1,iterNumberRh}];
bkwdStagesRh=Table[Table[kk[bkwdOrbitsRh[[pts]][[iteration]]],{pts,1,Length[bkwdOrbitsRh],1}],{iteration,1,iterNumberRh}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdRh,
ListPlot[Flatten[Table[frwdStagesRh[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]],
Show[bkwdRh,
ListPlot[Flatten[Table[bkwdStagesRh[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]]
}}],ImageSize->largeSize],
{iteration,1,iterNumberRh,1}]

(.)  Properties of Singular Sets.

...  Elementary properties.

The iterative dynamics is well-defined outside the singular set Σ.

If f is bounded, each connected component of the regular set M∖(OverBar[Σ]) is a periodic cell.

If f is bounded, no point in the set (OverBar[Σ])∖Σ is periodic.  We call it, therefore, the aperiodic set of f.

...  Geometrical properties.

Are there infinitely many periodic cells?

Are the periodic cells densely distributed?  (Is the exceptional set nowher dense?)

Can an exceptional set have positive Lebesgue measure?

Do the exceptional sets have non-integer Hausdorff dimension?

...  Dynamical properties.

Chaotic dynamics anywhere?

Ergodic dynamics anywhere?

.  Singularities of Invertible Piecewise Isometric Dynamics

(.)  Cutting Singularity.

...  Definition.  (Cutting Singularity)

Let {(Subscript[P, 1]),⋯ ,(Subscript[P, n])} be a collection of mutually disjoint connected open regions in (ℝ^2) with piecewise smooth boundary, and let X=(OverBar[(Subscript[P, 1])])⋃⋯⋃(OverBar[(Subscript[P, n])]).  Supposef:M->M is an invertible piecewise isometry subordinate to {(Subscript[P, 1]),⋯ ,(Subscript[P, n])}.  We say f has the cutting singularity on a curve segment (Subscript[S, ij])=∂(Subscript[P, i])⋂∂(Subscript[P, j]), if f(Subscript[|, (Subscript[(OverBar[P]), i])])((Subscript[S, ij])) and f(Subscript[|, (Subscript[(OverBar[P]), j])])((Subscript[S, ij])) intersect non-trivially (the intersection has length 0).

...  Examples of the cutting singularity.

We saw many of them in Section 1.

(.)  Isometric Continuation.

...  Definition.  (Isometric Continuation)

Let {(Subscript[P, 1]),⋯,(Subscript[P, n])}, {(Subscript[f, 1]),⋯,(Subscript[f, n])} and f:X->X be as before.  Suppose that f has the cutting-singularity on (Subscript[S, ij])=∂(Subscript[P, i])⋂∂(Subscript[P, j]).  We define the patch-up identification ≡ by,

p≡q  ⟺  (({{either, p=q,                                                  }, {or       , p=(Subscript[f, i])(x), q=(Subscript[f, j])(x), ∃x∈(Subscript[S, ij]),}, {or       ,  p=(Subscript[f, j])(x), q=(Subscript[f, i])(x), ∃x∈(Subscript[S, ij]).}})

The quotient map (OverTilde[f]):(OverTilde[X ])->(OverTilde[X ]) in the quotient space (OverTilde[X ])is called the isometric continuation of f.

...  Example.  (Isometric Continuation I)

Let f be a piecewise translation in a horizontal strip X=(Subscript[P, 1])⋃(Subscript[P, 2]), as illustrated in the lower left hand side picture.  Then, the cutting singularity disappears under the isometric continuation, as depicted in the lower right hand side picture.  Consequently, the original singularity is removable.

beforeStrip2=Graphics[{
{Brown,Polygon[{{2π,0},{2π-2,0},{2π-2,1},{2π,1}}]},
{Lighter[Pink],Polygon[{{0,0},{2π-2,0},{2π-2,1},{0,1}}]},
Line[{{0,0},{2π,0},{2π,1},{0,1},{0,0}}],
Line[{{2π-2,0},{2π-2,1}}],
Text["(Subscript[P, 1])",{π-1,0.5}],Text["(Subscript[P, 2])",{2π-1,0.5}],

{Brown,Polygon[{{0,-3},{2,-3},{2,-2},{0,-2}}]},
{Lighter[Pink],Polygon[{{2π,-3},{2,-3},{2,-2},{2π,-2}}]},
Line[{{0,-3},{2π,-3},{2π,-2},{0,-2},{0,-3}}],
Line[{{2,-3},{2,-2}}],
Text["f((Subscript[P, 1]))",{π+1,-2.5}],
Text["f((Subscript[P, 2]))",{1,-2.5}],

{Arrowheads[Large],Arrow[{{π,-0.25},{π,-1.75}}]},
Text["f",{π+0.25,-0.9}]
}];
Clear[x,y,t,s]
Strip2plot1=ParametricPlot3D[{s,Cos[t],Sin[t]},{t,0,2π-2},{s,0,1},BoxRatios->Automatic,Mesh->False,Axes->False,Boxed->False,PlotStyle->Pink];
Strip2plot2=ParametricPlot3D[{s,Cos[t],Sin[t]},{t,2π-2,2π},{s,0,1},BoxRatios->Automatic,Mesh->False,Axes->False,Boxed->False,PlotStyle->Darker[Brown]];
afterStrip2=Show[Strip2plot1,Strip2plot2,PlotRange->All];
Show[GraphicsGrid[{{beforeStrip2,afterStrip2}}],ImageSize->wideSize]

...  Example.  (Isometric Continuation II)

Sometimes, a cutting singularity evolves to a sliding singularity.

Rotation Angle

Clear[t0]
t0=2Pi/5;

In The Unit Square

f(({{x}, {y}}))=(({{0, -1}, {1, 2a}}))(({{x}, {y}}))+(({{1}, {-a}}))     (((Mod 1))^2),     a=Cos[θ].

Clear[TT,aa,AA,BB,xx,yy,x,y,θ]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};

originalSq=Graphics[{
{White,Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{{0,0},{1,0},{1,1},{0,1}}]},
{Lighter[Pink],Polygon[{{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))},{0,(1/2)},{0,((Abs[aa]-aa)/(2Abs[aa]))}}]},
{Lighter[Pink],Polygon[{{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))},{1,(1/2)},{1,((Abs[aa]+aa)/(2Abs[aa]))}}]},
Line[{{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))},{0,(1/2)}}],
Line[{{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))},{1,(1/2)}}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
tempSq=Graphics[{
{Cyan,Opacity[0.5],Polygon[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}]}]},
{Lighter[Pink],Polygon[{{(1/2),0},{((Abs[aa]+aa)/(2Abs[aa])),0},{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),1},{((Abs[aa]-aa)/(2Abs[aa])),1},{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}}]},
Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
finalSq=Graphics[{
{White,Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}]}]},
{White,Polygon[{{(1/2),0},{((Abs[aa]+aa)/(2Abs[aa])),0},{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}}]},
{White,Polygon[{{(1/2),1},{((Abs[aa]-aa)/(2Abs[aa])),1},{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),1},{((Abs[aa]+aa)/(2Abs[aa])),1},{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),0},{((Abs[aa]-aa)/(2Abs[aa])),0},{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}}]},
Line[{{(1/2),1},{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}}],
Line[{{(1/2),0},{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
midSq=Graphics[{
{Arrowheads[Medium],Arrow[{{-0.5,0.5},{0.5,0.5}}]},
Text["\!\(\*
StyleBox[\"f\",\nFontSize->24,\nFontSlant->\"Italic\"]\)",{0,0.8}]
}];

Show[GraphicsGrid[{
{originalSq,SpanFromLeft,SpanFromLeft,midSq,tempSq,SpanFromLeft,SpanFromLeft,midSq,finalSq,SpanFromLeft,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth}
}],ImageSize->wideSize]

gridNumberSq=200;
frwdNumberSq=200;
bkwdNumberSq=200;

Clear[xx,yy]
TT=N[t0];  aa=Cos[TT];
FFsq[{xx_,yy_}]:={1-yy, Mod[xx + 2aa*yy - aa,1]};
GGsq[{xx_,yy_}]:={Mod[2aa*xx + yy - aa,1], -xx + 1};
frwdSq=Graphics[{
Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}],
Text["Forward",{0.5,-0.1}]
}];
bkwdSq=Graphics[{
Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}],
Text["Backward",{0.5,-0.1}]
}];
frwdBaseSq=Table[{(index/(N[gridNumberSq])),0.0},{index,0,gridNumberSq}];
frwdOrbitsSq=Table[NestList[FFsq,frwdBaseSq[[index]],frwdNumberSq],{index,1,Length[frwdBaseSq]}];
frwdPointsSq=Flatten[frwdOrbitsSq,1];
frwdPlotSq=ListPlot[frwdPointsSq,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

bkwdBaseSq=Table[{0.0,(index/(N[gridNumberSq]))},{index,0,gridNumberSq}];
bkwdOrbitsSq=Table[NestList[GGsq,bkwdBaseSq[[index]],bkwdNumberSq],{index,1,Length[bkwdBaseSq]}];
bkwdPointsSq=Flatten[bkwdOrbitsSq,1];
bkwdPlotSq=ListPlot[bkwdPointsSq,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

Show[GraphicsGrid[{{Show[frwdSq,frwdPlotSq],Show[bkwdSq,bkwdPlotSq]}}],ImageSize->largeSize]

iterNumberSq=50;
frwdStagesSq=Table[Table[frwdOrbitsSq[[pts]][[iteration]],{pts,1,Length[frwdOrbitsSq],1}],{iteration,1,iterNumberSq}];
bkwdStagesSq=Table[Table[bkwdOrbitsSq[[pts]][[iteration]],{pts,1,Length[bkwdOrbitsSq],1}],{iteration,1,iterNumberSq}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdSq,
ListPlot[Flatten[Table[frwdStagesSq[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]],
Show[bkwdSq,
ListPlot[Flatten[Table[bkwdStagesSq[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]]
}}],ImageSize->largeSize],
{iteration,1,iterNumberSq,1}]

In The Fundamental Rhombus

f(z)=(e^(θ i))z+σ ζ,   σ=0,±1.

Clear[TT,aa,AA,BB,xx,yy,XX]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};
kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

Ak[{xx_, yy_}]=kk[AA[{xx,yy}]];
Bk[{xx_, yy_}]=kk[BB[{xx,yy}]];

originalRh=Graphics[{
{White,Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{kk[{0,0}],kk[{1,0}],kk[{1,1}],kk[{0,1}]}]},
{Lighter[Pink],Polygon[{kk[{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],kk[{0,0.5}],kk[{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{kk[{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],kk[{1,0.5}],kk[{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
Line[{kk[{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],kk[{0,0.5}]}],
Line[{kk[{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],kk[{1,0.5}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
tempRh=Graphics[{
{Cyan,Opacity[0.5],Polygon[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}]}]},
Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
finalRh=Graphics[{
{White,Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}]}]},
{White,Polygon[{kk[{0.5,0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}]}]},
{White,Polygon[{kk[{0.5,1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}]}]},
Line[{kk[{0.5,1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}]}],
Line[{kk[{0.5,0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
midRh=Graphics[{
{Arrowheads[Medium],Arrow[{{-0.5,0.5},{0.5,0.5}}]},
Text["f",{0,0.8}]
}];

Show[GraphicsGrid[{
{originalRh,SpanFromLeft,SpanFromLeft,midRh,tempRh,SpanFromLeft,SpanFromLeft,midRh,finalRh,SpanFromLeft,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth}
}],ImageSize->wideSize]

Clear[TT,AA,xx,yy,kk,XX,aa,θ,dist,RR,Rk,Rpk,Rmk]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};
kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

Ak[{xx_, yy_}]=kk[AA[{xx,yy}]];
Bk[{xx_, yy_}]=kk[BB[{xx,yy}]];

RR[θ_,{x_,y_}]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
Rk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])],θ>TT}}];

Rpk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])]+kk[{0,(((Abs[aa]+aa)/(2Abs[aa] TT))+((Abs[aa]-aa)/(2Abs[aa] TT)))(θ-TT)}],θ>TT}}];
Rmk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])]+kk[{0,-(((Abs[aa]+aa)/(2Abs[aa] TT))+((Abs[aa]-aa)/(2Abs[aa] TT)))(θ-TT)}],θ>TT}}];
Whk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}],0≤θ≤TT},
{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])],θ>TT}}];

distRh=Max[(Sqrt[((kk[{0.5,0.5}][[1]])^2)+((kk[{0.5,0.5}][[2]])^2)]),(Sqrt[(((kk[{0.5,0.5}][[1]]-1))^2)+((kk[{0.5,0.5}][[2]])^2)])];

Manipulate[
Graphics[{
{White,Circle[kk[{0.5,0.5}],distRh]},

{Cyan,Opacity[0.5],Polygon[{Rk[θ,{0,0}],Rk[θ,{1,0}],Rk[θ,{1,1}],Rk[θ,{0,1}]}]},
{Lighter[White],Polygon[{Whk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Whk[θ,{0,0.5}],Whk[θ,{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[White],Polygon[{Whk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Whk[θ,{1,0.5}],Whk[θ,{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{Rpk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Rpk[θ,{0,0.5}],Rpk[θ,{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{Rmk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Rmk[θ,{1,0.5}],Rmk[θ,{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
Line[{Rpk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Rpk[θ,{0,0.5}]}],
Line[{Rmk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Rmk[θ,{1,0.5}]}],
Line[{Rk[θ,{0,0}],Rk[θ,{1,0}],Rk[θ,{1,1}],Rk[θ,{0,1}],Rk[θ,{0,0}]}],

{Thick,Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
},ImageSize->normalSize],{θ,0,2TT}]

gridNumberRh=200;
frwdNumberRh=200;
bkwdNumberRh=200;

Clear[TT,aa,xx,yy,XX]
TT=N[t0];
aa=Cos[TT];

kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

FFsq[{xx_,yy_}]:={1-yy, Mod[xx + 2aa*yy - aa,1]};
GGsq[{xx_,yy_}]:={Mod[2aa*xx + yy - aa,1], -xx + 1};

frwdRh=Graphics[{
Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}],
Text["Forward",{0.5,-0.1}]
}];
bkwdRh=Graphics[{
Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}],
Text["Backward",{0.5,-0.1}]
}];
frwdBaseRh=Table[{(index/(N[gridNumberRh])),0.0},{index,0,gridNumberRh}];
frwdOrbitsRh=Table[NestList[FFsq,frwdBaseRh[[index]],frwdNumberRh],{index,1,Length[frwdBaseRh]}];
frwdPointsRh=Flatten[frwdOrbitsRh,1];
frwdRhpointsRh=Table[kk[frwdPointsRh[[index]]],{index,1,Length[frwdPointsRh]}];
frwdPlotRh=ListPlot[frwdRhpointsRh,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

bkwdBaseRh=Table[{0.0,(index/(N[gridNumberRh]))},{index,0,gridNumberRh}];
bkwdOrbitsRh=Table[NestList[GGsq,bkwdBaseRh[[index]],bkwdNumberRh],{index,1,Length[bkwdBaseRh]}];
bkwdPointsRh=Flatten[bkwdOrbitsRh,1];
bkwdRhpointsRh=Table[kk[bkwdPointsRh[[index]]],{index,1,Length[bkwdPointsRh]}];
bkwdPlotRh=ListPlot[bkwdRhpointsRh,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

Show[GraphicsGrid[{{Show[frwdRh,frwdPlotRh],Show[bkwdRh,bkwdPlotRh]}}],ImageSize->largeSize]

iterNumberRh=50;
frwdStagesRh=Table[Table[kk[frwdOrbitsRh[[pts]][[iteration]]],{pts,1,Length[frwdOrbitsRh],1}],{iteration,1,iterNumberRh}];
bkwdStagesRh=Table[Table[kk[bkwdOrbitsRh[[pts]][[iteration]]],{pts,1,Length[bkwdOrbitsRh],1}],{iteration,1,iterNumberRh}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdRh,
ListPlot[Flatten[Table[frwdStagesRh[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]],
Show[bkwdRh,
ListPlot[Flatten[Table[bkwdStagesRh[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]]
}}],ImageSize->largeSize],
{iteration,1,iterNumberRh,1}]

First, we take the forward isometric continuation to identify the horizontal boundaries, and then we take the backward isometric continuation to identify the vertical (or slanted) boundaries.

(.)  Sliding Singularity.

...  Definition.  (Sliding Singularity)

Let {(Subscript[P, 1]),⋯,(Subscript[P, n])}, {(Subscript[f, 1]),⋯,(Subscript[f, n])} and f:X->X be as before.  We say f has the sliding singularity on (Subscript[S, ij])=∂(Subscript[P, i])⋂∂(Subscript[P, j]), if ((OverTilde[f])^( k))∘(Subscript[f, i]) ((Subscript[S, ij])) partly aligns with ((OverTilde[f])^( l))∘(Subscript[f, j]) ((Subscript[S, ij])), for some isometric continuations ((OverTilde[f])^( k)) and ((OverTilde[f])^( l)), where k,l∈{0,1,2,⋯}.  That is, ((OverTilde[f])^( k))∘(Subscript[f, i]) ((Subscript[S, ij]))⋂((OverTilde[f])^( l))∘(Subscript[f, j]) ((Subscript[S, ij])) is a curve segment with a positive arc-length, but ((OverTilde[f])^( k))∘(Subscript[f, i])≠((OverTilde[f])^( l))∘(Subscript[f, j]) on (Subscript[S, ij])⊂(OverTilde[X.])

...  Proposition.  (Cutting Singularity Sliding Singularity)

If (Subscript[S, ij])=∂(Subscript[P, i])⋂∂(Subscript[P, j]) is a non-cutting singularity, then it must be a sliding singularity.

The converse is not true.  The SUPER map's cutting singularity evolves to the sliding singularity, as we take the isometric continuations.

...  Example.  (A Dual Rotation Maps on (ℝ^2))

Choose any rotation angles (Subscript[θ, 1]) and (Subscript[θ, 2]), and the points (Subscript[p, 1]) and (Subscript[p, 2]) such that

(Subscript[p, 1])=((Subscript[x, 1]),(Subscript[y, 1])),  (Subscript[p, 2])=((Subscript[x, 2]),(Subscript[y, 2])),  (Subscript[y, 1])<0<(Subscript[y, 2]),  -2≤(Subscript[x, 1]),(Subscript[x, 2])<2.

Rotation Angles

Clear[t1,t2,p1,p2]
t1=1Pi/8;  t2=1Pi/8;
p1={-Sin[(t1/2)],Cos[(t1/2)]};
p2={Sin[(t2/2)],-Cos[(t2/2)]};

Mapping

Clear[RR,θ,x,y]
tt1=N[t1];  tt2=N[t2];
pp1=N[p1];
pp2=N[p2];
qq1={-5,0};
qq2={5,0};
RR[θ_,x_,y_]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
RG1[{x_,y_}]=pp1+RR[tt1,x-pp1[[1]],y-pp1[[2]]];
RG2[{x_,y_}]=pp2+RR[tt2,x-pp2[[1]],y-pp2[[2]]];

beforeG=Graphics[{
{Cyan,Opacity[0.5],Polygon[{qq1,qq2,qq2+{0,3pp1[[2]]},qq1+{0,3pp1[[2]]}}]},
{Pink,Opacity[0.5],Polygon[{qq1,qq2,qq2+{0,3pp2[[2]]},qq1+{0,3pp2[[2]]}}]},
{Thick,Line[{qq1,qq2}]},
{Blue,PointSize[Large],Point[pp1]},
{Darker[Red],PointSize[Large],Point[pp2]}
}];
afterG=Graphics[{
{Cyan,Opacity[0.5],Polygon[{RG1[qq1],RG1[qq2],RG1[qq2+{0,3pp1[[2]]}],RG1[qq1+{0,3pp1[[2]]}]}]},
{Pink,Opacity[0.5],Polygon[{RG2[qq1],RG2[qq2],RG2[qq2+{0,3pp2[[2]]}],RG2[qq1+{0,3pp2[[2]]}]}]},
{Blue,Line[{RG1[qq1],RG1[qq2]}]},
{Red,Line[{RG2[qq1],RG2[qq2]}]},
{Blue,PointSize[Large],Point[pp1]},
{Darker[Red],PointSize[Large],Point[pp2]}
}];
midG=Graphics[{
{Arrowheads[Medium],Arrow[{{-0.5,0},{0.5,0}}]},
Text["f",{0,0.15}]
}];

Show[GraphicsGrid[{
{beforeG,SpanFromLeft,midG,afterG,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth}
}],ImageSize->wideSize]

Clear[RR,θ,x,y]
tt1=N[t1];  tt2=N[t2];
pp1=N[p1];
pp2=N[p2];
qq1={-5,0};
qq2={5,0};
RR[θ_,x_,y_]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
RG1a[θ_,{x_,y_}]=pp1+RR[θ tt1,x-pp1[[1]],y-pp1[[2]]];
RG2a[θ_,{x_,y_}]=pp2+RR[θ tt2,x-pp2[[1]],y-pp2[[2]]];

Manipulate[
Show[
ParametricPlot[{RG1[aθ,qq1],RG1a[θ,qq2],RG1a[θ,qq1+{0,3pp1[[2]]}],RG1a[θ,qq2+{0,3pp1[[2]]}],RG2a[θ,qq1],RG2a[θ,qq2],RG2a[θ,qq1-{0,3pp1[[2]]}],RG2a[θ,qq2-{0,3pp1[[2]]}]},{θ,0,1},Axes->False,AspectRatio->Automatic,PlotStyle->White],
Graphics[{
{White,Point[RG1a[θ,qq1]]},{White,Point[RG1a[θ,qq2]]},
{White,Point[RG1a[θ,qq1+{0,3pp1[[2]]}]]},{White,Point[RG1a[θ,qq2+{0,3pp1[[2]]}]]},

{White,Point[RG2a[θ,qq1]]},{White,Point[RG2a[θ,qq2]]},
{White,Point[RG2a[θ,qq1+{0,-3pp1[[2]]}]]},{White,Point[RG2a[θ,qq2+{0,-3pp1[[2]]}]]},

{Cyan,Opacity[0.5],Polygon[{RG1a[θ,qq1],RG1a[θ,qq2],RG1a[θ,qq2+{0,3pp1[[2]]}],RG1a[θ,qq1+{0,3pp1[[2]]}]}]},
{Pink,Opacity[0.5],Polygon[{RG2a[θ,qq1],RG2a[θ,qq2],RG2a[θ,qq2+{0,3pp2[[2]]}],RG2a[θ,qq1+{0,3pp2[[2]]}]}]},
{Blue,Line[{RG1a[θ,qq1],RG1a[θ,qq2]}]},
{Red,Line[{RG2a[θ,qq1],RG2a[θ,qq2]}]},
{Blue,PointSize[Large],Point[pp1]},
{Darker[Red],PointSize[Large],Point[pp2]}
},ImageSize->normalSize]
],
{θ,0,1}]

This time, X is not being cut off entirely.  This is an example of a sliding singularity.

Singular Set

gridNumberG=200;
frwdNumberG=200;
bkwdNumberG=200;

Clear[RR,θ,x,y,FF8, GG8]
tt1=N[t1];  tt2=N[t2];
pp1=N[p1];
pp2=N[p2];
qq1={-5,0};
qq2={5,0};
RR[θ_,x_,y_]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
RG1[{x_,y_}]=pp1+RR[tt1,x-pp1[[1]],y-pp1[[2]]];
RG2[{x_,y_}]=pp2+RR[tt2,x-pp2[[1]],y-pp2[[2]]];
FF8[{x_,y_}]:=Piecewise[{{RG1[{x,y}],y≥0},{RG2[{x,y}],y<0}}];

frwdShapeG=Graphics[{
{Thick,Line[{qq1+{1,0},qq2-{1,0}}]},
{Blue,PointSize[Medium],Point[pp1]},
{Darker[Red],PointSize[Medium],Point[pp2]},
Text["Forward",{-0.2,-6.5}]
}];
frwdBaseG=Table[((index/gridNumberG)(qq1+{1.0,0.0})+(1-(index/gridNumberG))(qq2-{1.0,0.0})),{index,0,gridNumberG}];
frwdOrbitsG=Table[NestList[FF8,frwdBaseG[[index]],frwdNumberG],{index,1,Length[frwdBaseG]}];
frwdPointsG=Flatten[frwdOrbitsG,1];
frwdPlotG=ListPlot[frwdPointsG,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

(*  Show[frwdShapeG,frwdPlotG,ImageSize->500]  *)

iRG1[{x_,y_}]=pp1+RR[-tt1,x-pp1[[1]],y-pp1[[2]]];
iRG2[{x_,y_}]=pp2+RR[-tt2,x-pp2[[1]],y-pp2[[2]]];

GG8[{x_,y_}]:=Piecewise[{
{iRG1[{x,y}],iRG1[{x,y}][[2]]≥0},
{iRG2[{x,y}],iRG1[{x,y}][[2]]<0}
}];

bkwdShapeG=Graphics[{
{Thick,Line[{qq1+{1,0},qq2-{1,0}}]},
{Blue,PointSize[Medium],Point[pp1]},
{Darker[Red],PointSize[Medium],Point[pp2]},
Text["Backward",{-0.2,-6.5}]
}];

bkwdBaseG=Table[((index/gridNumberG)(qq1+{1.0,0.0})+(1-(index/gridNumberG))(qq2-{1.0,0.0})),{index,0,gridNumberG}];
bkwdOrbitsG=Table[NestList[GG8,bkwdBaseG[[index]],bkwdNumberG],{index,1,Length[bkwdBaseG]}];
bkwdPointsG=Flatten[bkwdOrbitsG,1];
bkwdPlotG=ListPlot[bkwdPointsG,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];
Show[GraphicsGrid[{{Show[frwdShapeG,frwdPlotG],Show[bkwdShapeG,bkwdPlotG]}}],ImageSize->wideSize]

Step by Step

iterNumberG=100;
frwdStagesG=Table[Table[frwdOrbitsG[[pts]][[iteration]],{pts,1,Length[frwdOrbitsG],1}],{iteration,1,iterNumberG}];
bkwdStagesG=Table[Table[bkwdOrbitsG[[pts]][[iteration]],{pts,1,Length[bkwdOrbitsG],1}],{iteration,1,iterNumberG}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdShapeG,
ListPlot[Flatten[Table[frwdStagesG[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}],PlotRange->{{-5.5,5.5},{-5.75,5.75}}],
Show[bkwdShapeG,
ListPlot[Flatten[Table[bkwdStagesG[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}],PlotRange->{{-5.5,5.5},{-5.75,5.75}}]
}}],ImageSize->largeSize],
{iteration,1,iterNumberG,1}]

...  Example.  (A Symmetric Uniform Piecewise Elliptic Rotation Map on (𝕋^2))

Choose any rotation angle θ, where

0<θ<π.

Rotation Angle.

Clear[t0]
t0=2Pi/5;

In The Unit Square

f(({{x}, {y}}))=(({{0, -1}, {1, 2a}}))(({{x}, {y}}))+(({{1}, {-a}}))     (((Mod 1))^2),     a=Cos[θ].

Clear[TT,aa,AA,BB,xx,yy,x,y,θ]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};

originalSq=Graphics[{
{White,Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{{0,0},{1,0},{1,1},{0,1}}]},
{Lighter[Pink],Polygon[{{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))},{0,(1/2)},{0,((Abs[aa]-aa)/(2Abs[aa]))}}]},
{Lighter[Pink],Polygon[{{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))},{1,(1/2)},{1,((Abs[aa]+aa)/(2Abs[aa]))}}]},
Line[{{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))},{0,(1/2)}}],
Line[{{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))},{1,(1/2)}}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
tempSq=Graphics[{
{Cyan,Opacity[0.5],Polygon[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}]}]},
{Lighter[Pink],Polygon[{{(1/2),0},{((Abs[aa]+aa)/(2Abs[aa])),0},{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),1},{((Abs[aa]-aa)/(2Abs[aa])),1},{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}}]},
Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
finalSq=Graphics[{
{White,Line[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}],AA[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{AA[{0,0}],AA[{1,0}],AA[{1,1}],AA[{0,1}]}]},
{White,Polygon[{{(1/2),0},{((Abs[aa]+aa)/(2Abs[aa])),0},{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}}]},
{White,Polygon[{{(1/2),1},{((Abs[aa]-aa)/(2Abs[aa])),1},{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),1},{((Abs[aa]+aa)/(2Abs[aa])),1},{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}}]},
{Lighter[Pink],Polygon[{{(1/2),0},{((Abs[aa]-aa)/(2Abs[aa])),0},{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}}]},
Line[{{(1/2),1},{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}}],
Line[{{(1/2),0},{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}}],
{Thick,Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}]},
{Blue,PointSize[Large],Point[{(1/2),(1/2)}]}
}];
midSq=Graphics[{
{Arrowheads[Medium],Arrow[{{-0.5,0.5},{0.5,0.5}}]},
Text["f",{0,0.8}]
}];

Show[GraphicsGrid[{
{originalSq,SpanFromLeft,SpanFromLeft,midSq,tempSq,SpanFromLeft,SpanFromLeft,midSq,finalSq,SpanFromLeft,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth}
}],ImageSize->wideSize]

gridNumberSq=200;
frwdNumberSq=200;
bkwdNumberSq=200;

Clear[xx,yy]
TT=N[t0];  aa=Cos[TT];
FFsq[{xx_,yy_}]:={1-yy, Mod[xx + 2aa*yy - aa,1]};
GGsq[{xx_,yy_}]:={Mod[2aa*xx + yy - aa,1], -xx + 1};
frwdSq=Graphics[{
Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}],
Text["Forward",{0.5,-0.1}]
}];
bkwdSq=Graphics[{
Line[{{0,0},{0,1},{1,1},{1,0},{0,0}}],
Text["Backward",{0.5,-0.1}]
}];
frwdBaseSq=Table[{(index/(N[gridNumberSq])),0.0},{index,0,gridNumberSq}];
frwdOrbitsSq=Table[NestList[FFsq,frwdBaseSq[[index]],frwdNumberSq],{index,1,Length[frwdBaseSq]}];
frwdPointsSq=Flatten[frwdOrbitsSq,1];
frwdPlotSq=ListPlot[frwdPointsSq,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

bkwdBaseSq=Table[{0.0,(index/(N[gridNumberSq]))},{index,0,gridNumberSq}];
bkwdOrbitsSq=Table[NestList[GGsq,bkwdBaseSq[[index]],bkwdNumberSq],{index,1,Length[bkwdBaseSq]}];
bkwdPointsSq=Flatten[bkwdOrbitsSq,1];
bkwdPlotSq=ListPlot[bkwdPointsSq,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

Show[GraphicsGrid[{{Show[frwdSq,frwdPlotSq],Show[bkwdSq,bkwdPlotSq]}}],ImageSize->largeSize]

iterNumberSq=50;
frwdStagesSq=Table[Table[frwdOrbitsSq[[pts]][[iteration]],{pts,1,Length[frwdOrbitsSq],1}],{iteration,1,iterNumberSq}];
bkwdStagesSq=Table[Table[bkwdOrbitsSq[[pts]][[iteration]],{pts,1,Length[bkwdOrbitsSq],1}],{iteration,1,iterNumberSq}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdSq,
ListPlot[Flatten[Table[frwdStagesSq[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]],
Show[bkwdSq,
ListPlot[Flatten[Table[bkwdStagesSq[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]]
}}],ImageSize->largeSize],
{iteration,1,iterNumberSq,1}]

In The Fundamental Rhombus

f(z)=(e^(θ i))z+σ ζ,   σ=0,±1.

Clear[TT,aa,AA,BB,xx,yy,XX]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};
kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

Ak[{xx_, yy_}]=kk[AA[{xx,yy}]];
Bk[{xx_, yy_}]=kk[BB[{xx,yy}]];

originalRh=Graphics[{
{White,Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{kk[{0,0}],kk[{1,0}],kk[{1,1}],kk[{0,1}]}]},
{Lighter[Pink],Polygon[{kk[{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],kk[{0,0.5}],kk[{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{kk[{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],kk[{1,0.5}],kk[{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
Line[{kk[{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],kk[{0,0.5}]}],
Line[{kk[{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],kk[{1,0.5}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
tempRh=Graphics[{
{Cyan,Opacity[0.5],Polygon[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}]}]},
Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
finalRh=Graphics[{
{White,Line[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}],Ak[{0,0}]}]},
{Cyan,Opacity[0.5],Polygon[{Ak[{0,0}],Ak[{1,0}],Ak[{1,1}],Ak[{0,1}]}]},
{White,Polygon[{kk[{0.5,0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),0}],kk[{((Abs[aa]+aa)/(2Abs[aa])),-Abs[aa]}]}]},
{White,Polygon[{kk[{0.5,1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1}],kk[{((Abs[aa]-aa)/(2Abs[aa])),1+Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}]}]},
{Lighter[Pink],Polygon[{kk[{0.5,0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}]}]},
Line[{kk[{0.5,1}],kk[{((Abs[aa]+aa)/(2Abs[aa])),1-Abs[aa]}]}],
Line[{kk[{0.5,0}],kk[{((Abs[aa]-aa)/(2Abs[aa])),Abs[aa]}]}],
{Thick,Line[{kk[{0,0}],kk[{0,1}],kk[{1,1}],kk[{1,0}],kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
}];
midRh=Graphics[{
{Arrowheads[Medium],Arrow[{{-0.5,0.5},{0.5,0.5}}]},
Text["f",{0,0.8}]
}];

Show[GraphicsGrid[{
{originalRh,SpanFromLeft,SpanFromLeft,midRh,tempRh,SpanFromLeft,SpanFromLeft,midRh,finalRh,SpanFromLeft,SpanFromLeft},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth},
{SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth,SpanFromAbove,SpanFromAbove,SpanFromBoth,SpanFromBoth}
}],ImageSize->wideSize]

Clear[TT,AA,xx,yy,kk,XX,aa,θ,dist,RR,Rk,Rpk,Rmk]
TT=N[t0];
aa=Cos[TT];
AA[{xx_, yy_}] =  {1-yy, xx +2 aa*yy - aa};
BB[{xx_, yy_}] =  {2aa*xx + yy - aa, -xx + 1};
kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

Ak[{xx_, yy_}]=kk[AA[{xx,yy}]];
Bk[{xx_, yy_}]=kk[BB[{xx,yy}]];

RR[θ_,{x_,y_}]={Cos[θ]x-Sin[θ]y,Sin[θ]x+Cos[θ]y};
Rk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])],θ>TT}}];

Rpk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])]+kk[{0,(((Abs[aa]+aa)/(2Abs[aa] TT))+((Abs[aa]-aa)/(2Abs[aa] TT)))(θ-TT)}],θ>TT}}];
Rmk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}]+RR[θ,(kk[{x,y}]-kk[{0.5,0.5}])],0≤θ≤TT},{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])]+kk[{0,-(((Abs[aa]+aa)/(2Abs[aa] TT))+((Abs[aa]-aa)/(2Abs[aa] TT)))(θ-TT)}],θ>TT}}];
Whk[θ_,{x_,y_}]=Piecewise[{{kk[{0.5,0.5}],0≤θ≤TT},
{kk[{0.5,0.5}]+RR[TT,(kk[{x,y}]-kk[{0.5,0.5}])],θ>TT}}];

distRh=Max[(Sqrt[((kk[{0.5,0.5}][[1]])^2)+((kk[{0.5,0.5}][[2]])^2)]),(Sqrt[(((kk[{0.5,0.5}][[1]]-1))^2)+((kk[{0.5,0.5}][[2]])^2)])];

Manipulate[
Graphics[{
{White,Circle[kk[{0.5,0.5}],distRh]},

{Cyan,Opacity[0.5],Polygon[{Rk[θ,{0,0}],Rk[θ,{1,0}],Rk[θ,{1,1}],Rk[θ,{0,1}]}]},
{Lighter[White],Polygon[{Whk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Whk[θ,{0,0.5}],Whk[θ,{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[White],Polygon[{Whk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Whk[θ,{1,0.5}],Whk[θ,{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{Rpk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Rpk[θ,{0,0.5}],Rpk[θ,{0,((Abs[aa]-aa)/(2Abs[aa]))}]}]},
{Lighter[Pink],Polygon[{Rmk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Rmk[θ,{1,0.5}],Rmk[θ,{1,((Abs[aa]+aa)/(2Abs[aa]))}]}]},
Line[{Rpk[θ,{Abs[aa],((Abs[aa]-aa)/(2Abs[aa]))}],Rpk[θ,{0,0.5}]}],
Line[{Rmk[θ,{1-Abs[aa],((Abs[aa]+aa)/(2Abs[aa]))}],Rmk[θ,{1,0.5}]}],
Line[{Rk[θ,{0,0}],Rk[θ,{1,0}],Rk[θ,{1,1}],Rk[θ,{0,1}],Rk[θ,{0,0}]}],

{Thick,Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}]},
{Blue,PointSize[Large],Point[kk[{0.5,0.5}]]}
},ImageSize->normalSize],{θ,0,2TT}]

gridNumberRh=200;
frwdNumberRh=200;
bkwdNumberRh=200;

Clear[TT,aa,xx,yy,XX]
TT=N[t0];
aa=Cos[TT];

kk[XX_] := { XX[[1]] + XX[[2]]*Cos[TT], XX[[2]]*Sin[TT]};

FFsq[{xx_,yy_}]:={1-yy, Mod[xx + 2aa*yy - aa,1]};
GGsq[{xx_,yy_}]:={Mod[2aa*xx + yy - aa,1], -xx + 1};

frwdRh=Graphics[{
Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}],
Text["Forward",{0.5,-0.1}]
}];
bkwdRh=Graphics[{
Line[{kk[{0,0}], kk[{0,1}],
			 kk[{1,1}], kk[{1,0}], kk[{0,0}]}],
Text["Backward",{0.5,-0.1}]
}];
frwdBaseRh=Table[{(index/(N[gridNumberRh])),0.0},{index,0,gridNumberRh}];
frwdOrbitsRh=Table[NestList[FFsq,frwdBaseRh[[index]],frwdNumberRh],{index,1,Length[frwdBaseRh]}];
frwdPointsRh=Flatten[frwdOrbitsRh,1];
frwdRhpointsRh=Table[kk[frwdPointsRh[[index]]],{index,1,Length[frwdPointsRh]}];
frwdPlotRh=ListPlot[frwdRhpointsRh,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

bkwdBaseRh=Table[{0.0,(index/(N[gridNumberRh]))},{index,0,gridNumberRh}];
bkwdOrbitsRh=Table[NestList[GGsq,bkwdBaseRh[[index]],bkwdNumberRh],{index,1,Length[bkwdBaseRh]}];
bkwdPointsRh=Flatten[bkwdOrbitsRh,1];
bkwdRhpointsRh=Table[kk[bkwdPointsRh[[index]]],{index,1,Length[bkwdPointsRh]}];
bkwdPlotRh=ListPlot[bkwdRhpointsRh,PlotStyle->{Black,PointSize[0]},AspectRatio->Automatic];

Show[GraphicsGrid[{{Show[frwdRh,frwdPlotRh],Show[bkwdRh,bkwdPlotRh]}}],ImageSize->largeSize]

iterNumberRh=50;
frwdStagesRh=Table[Table[kk[frwdOrbitsRh[[pts]][[iteration]]],{pts,1,Length[frwdOrbitsRh],1}],{iteration,1,iterNumberRh}];
bkwdStagesRh=Table[Table[kk[bkwdOrbitsRh[[pts]][[iteration]]],{pts,1,Length[bkwdOrbitsRh],1}],{iteration,1,iterNumberRh}];
Manipulate[
Show[GraphicsGrid[{{
Show[frwdRh,
ListPlot[Flatten[Table[frwdStagesRh[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]],
Show[bkwdRh,
ListPlot[Flatten[Table[bkwdStagesRh[[index]],{index,1,iteration}],1],
AspectRatio->Automatic,Axes->False,PlotStyle->{Black,PointSize[0]}]]
}}],ImageSize->largeSize],
{iteration,1,iterNumberRh,1}]

(.)  Shuffling Singularity.

...  Definition.  (Shuffling Singularity)

Let {(Subscript[P, 1]),⋯,(Subscript[P, n])}, {(Subscript[f, 1]),⋯,(Subscript[f, n])} and f:X->X be as before.  We say f has the shuffling singularity on (Subscript[S, 1])⊂∂(Subscript[P, (Subscript[i, 1])])⋂∂(Subscript[P, (Subscript[j, 1])]), if there are finitely many number of segments (Subscript[S, k])⊂∂(Subscript[P, (Subscript[i, k])])⋂∂(Subscript[P, (Subscript[j, k])]), k∈{1,2,⋯,r} and m∈ℕ that satisfy the following conditions.

(1)  For every (Subscript[S, k]), k∈{1,2,⋯,r}, there exists a certain (Subscript[S, l]), l∈{1,2,⋯,r} such that ((OverTilde[f])^( m))∘(Subscript[f, (Subscript[i, k])]) ((Subscript[S, k]))=((OverTilde[f])^( m))∘(Subscript[f, (Subscript[i, l])]) ((Subscript[S, l])), upon taking appropriate branches of the isometric continuation ((OverTilde[f])^( m)).
     
(2)  (Subscript[μ, 1])((Subscript[S, k])⋂(Subscript[S, l]))=0, if k≠l.
     
(3)  Each (Subscript[S, k]) is the maximal segment with respect to the inclusion that satisfies (1) and (2).

...  Example.  (Shuffling Singularity)

Here is the third class of singularity, which we call shuffling.

Mapping

Clear[i,j,k]
ppB={{{0,0},{(Sqrt[3]),0},{(Sqrt[3]),1},{0,1}},
{{0,0},{π,0},{π,1},{0,1}},
{{0,0},{E,0},{E,1},{0,1}},
{{0,0},{(2^(1/3)),0},{(2^(1/3)),1},{0,1}}};
qqB=Table[ppB[[i]][[j]]+(∑_(k=1)^(i-1))ppB[[k]][[2]],{i,1,4},{j,1,4}];
qcB=Table[(1/4)(∑_(j=1)^4)qqB[[i]][[j]],{i,1,4}];

Mplot=Graphics[{
{Brown,Polygon[qqB[[1]]]},
{Lighter[Pink],Polygon[qqB[[2]]]},
{Lighter[Cyan],Polygon[qqB[[3]]]},
{LightPurple,Polygon[qqB[[4]]]},
Line[{qqB[[1]][[1]],qqB[[4]][[2]],qqB[[4]][[3]],qqB[[1]][[4]],qqB[[1]][[1]]}],Line[{qqB[[1]][[2]],qqB[[1]][[3]]}],
Line[{qqB[[2]][[2]],qqB[[2]][[3]]}],Line[{qqB[[3]][[2]],qqB[[3]][[3]]}],
Text["(Subscript[P, 1])",qcB[[1]]],Text["(Subscript[P, 2])",qcB[[2]]],Text["(Subscript[P, 3])",qcB[[3]]],Text["(Subscript[P, 4])",qcB[[4]]]
},ImageSize->wideSize]

ppA={
{{0,0},{E,0},{E,1},{0,1}},
{{0,0},{(Sqrt[3]),0},{(Sqrt[3]),1},{0,1}},
{{0,0},{(2^(1/3)),0},{(2^(1/3)),1},{0,1}},
{{0,0},{π,0},{π,1},{0,1}}
};
qqA=Table[ppA[[i]][[j]]+(∑_(k=1)^(i-1))ppA[[k]][[2]],{i,1,4},{j,1,4}];
qcA=Table[(1/4)(∑_(j=1)^4)qqA[[i]][[j]],{i,1,4}];
fMplot=Graphics[{
{Lighter[Cyan],Polygon[qqA[[1]]]},
{Brown,Polygon[qqA[[2]]]},
{LightPurple,Polygon[qqA[[3]]]},
{Lighter[Pink],Polygon[qqA[[4]]]},
Line[{qqA[[1]][[1]],qqA[[4]][[2]],qqA[[4]][[3]],qqA[[1]][[4]],qqA[[1]][[1]]}],Line[{qqA[[1]][[2]],qqA[[1]][[3]]}],
Line[{qqA[[2]][[2]],qqA[[2]][[3]]}],Line[{qqA[[3]][[2]],qqA[[3]][[3]]}],
Text["f((Subscript[P, 3]))",qcA[[1]]],Text["f((Subscript[P, 1]))",qcA[[2]]],Text["f((Subscript[P, 4]))",qcA[[3]]],Text["f((Subscript[P, 2]))",qcA[[4]]]
},ImageSize->wideSize]

Singular Set

iterNumberS4=150;
fS4[x_]=Piecewise[{{x+E,0≤x<(Sqrt[3])},{x+E+(2^(1/3)) ,(Sqrt[3])<x<(Sqrt[3])+π},{x-((Sqrt[3])+π) ,(Sqrt[3])+π<x<(Sqrt[3])+π+E},{x-π,(Sqrt[3])+π+E<x≤(Sqrt[3])+π+E+(2^(1/3))}}];
frwdSeedsS4=N[{0,E,(Sqrt[3])+E,(2^(1/3))+(Sqrt[3])+E,(2^(1/3))+(Sqrt[3])+E+π}];

frwdOrbitsS4=Table[NestList[fS4,frwdSeedsS4[[i]],iterNumberS4],{i,1,Length[frwdSeedsS4]}];
frwdPointsS4=Flatten[frwdOrbitsS4];
Graphics[{
Table[Line[{{frwdPointsS4[[i]],0},{frwdPointsS4[[i]],1}}],{i,1,Length[frwdPointsS4]}],
Line[{qqB[[1]][[1]],qqB[[4]][[2]],qqB[[4]][[3]],qqB[[1]][[4]],qqB[[1]][[1]]}],Line[{qqB[[1]][[2]],qqB[[1]][[3]]}],
Line[{qqB[[2]][[2]],qqB[[2]][[3]]}],Line[{qqB[[3]][[2]],qqB[[3]][[3]]}]
},ImageSize->wideSize]

Step by Step

iterNumberS4=150;
frwdStagesS4=Flatten[Table[Table[frwdOrbitsS4[[pts]][[iteration]],{pts,1,Length[frwdOrbitsS4],1}],{iteration,1,iterNumberS4}]];

Manipulate[
Graphics[{
Table[
Line[{{frwdStagesS4[[index]],0},{frwdStagesS4[[index]],1}}],{index,1,iteration}],
Line[{qqB[[1]][[1]],qqB[[4]][[2]],qqB[[4]][[3]],qqB[[1]][[4]],qqB[[1]][[1]]}],Line[{qqB[[1]][[2]],qqB[[1]][[3]]}],
Line[{qqB[[2]][[2]],qqB[[2]][[3]]}],Line[{qqB[[3]][[2]],qqB[[3]][[3]]}]
},ImageSize->wideSize],
{iteration,1,Length[frwdStagesS4],1}]

...  Self-shuffling.

The shuffling singularity and the sliding singularity are not mutually exclusive concepts.  A sliding singularity may end up shuffling finitely many subsegments.

(.)  The Classisification Theorem.

...  We covered everyting!  (The Classification Theorem)

Let {(Subscript[P, 1]),⋯,(Subscript[P, n])}, {(Subscript[f, 1]),⋯,(Subscript[f, n])} and f:X->X be as before.  Suppose that f is multiple valued on a curve segment S⊂∂(Subscript[P, i])⋂∂(Subscript[P, j]).  Then, we must have one of the following.

(1)  There exists a certain m∈ℕ such that ((OverTilde[f])^( m))∘(Subscript[f, i])=((OverTilde[f])^( m))∘(Subscript[f, j]) .  That is, the singularity disappears after applying the isometric continuation finitely many times (removable singularity).

(2)  f has the shuffling singularity on S (non-essential singularity).

(3)  f has the non-shuffling sliding singularity on S (essential singularity).

.  Devaney Chaos for Invertible Piecewise Isometric Dynamics

(.)  Chaos in Discrete-time Deterministic Dynamics (DDD).

...  Devaney-Chaos.

(({{(1), Sensitive dependence upon the initial condition,}, {(2), Topological transitivity,                                                }, {(3), Dense distribution of periodic orbits.                      }})

(1)     ∃r>0; ∀x∈X,∀ε>0, ∃y∈(Subscript[N, ε])(x),∃k∈ℕ; d((f^k)(x),(f^k)(y))≥r.

(2)     ∃x∈X,{(f^k)(x):k∈ℕ} is dense in X.

(3)     {(f^k)(x):k=0,⋯,n,(f^n)(x)=x} is dense in X.

...  Lyapunov-Chaos.

Lyapunov exponent in 1-dimensional dynamics.

λ((Subscript[x, 0]))=lim (sup_(n->∞))(1/n)Log|((f^n))'((Subscript[x, 0]))|          
     
 λ((Subscript[x, 0]))=lim (sup_(n->∞))(1/n)(∑_(k=0)^(n-1))Log|f'((f^k)((Subscript[x, 0])))|

λ((Subscript[x, 0]))=lim (sup_(n->∞))(1/n)Log|((f^n))'((Subscript[x, 0]))|

λ((Subscript[x, 0]))=lim (sup_(n->∞))(1/n)(∑_(k=0)^(n-1))Log|f'((f^k)((Subscript[x, 0])))|

In higher dimension, we use Oseledec's Multiplicative Ergodic Theorem (1965).

-∞≤(Subscript[λ, 1])(x)<(Subscript[λ, 2])(x)<⋯<(Subscript[λ, s(x)])(x)
     
 (Subscript[λ, m])(x)=(lim_(n->∞))(1/n)Log|D (Subscript[f, x]^n)(OverVector[(Subscript[u, x])])|

-∞≤(Subscript[λ, 1])(x)<(Subscript[λ, 2])(x)<⋯<(Subscript[λ, s(x)])(x)

(Subscript[λ, m])(x)=(lim_(n->∞))(1/n)Log|D (Subscript[f, x]^n)(OverVector[(Subscript[v, x])])|

Lyapunov-chaotic if (Subscript[λ, s])>0.

...  Topological Chaos.

Topological entropy in 1-dimentional continuous dynamics (Adler, Konheim, McAndrew, 1965).

r(n,ε,f)=max{|S|:∀x,y∈S,(sup_(0≤k<n))d((f^k)(x),(f^k)(y))>ε}.

We call this quantity, the number of ε-separated orbits of length n.

h(f)=(lim_(ε↘0))h(ε,f),     h(ε,f)=lim (sup_(n->∞))(((Log[ r (n, ε, f) ])/n)).

Depends heavility upon the continuity of h.  Turns out h(ε,f)<∞ if X is compact.

In general,

h(f)=sup{(Subscript[h, μ])(f): μ((f^(-1))(A))=μ(A),A∈ℬ}.

h(f)=∑Max[0,(Subscript[λ, k])],  ((Subscript[λ, k]): Lyapunov exponent).

...  Smale-Chaos.

Is it possible to inscribe a shift of finite type?

((Subscript[x, 0]),(Subscript[x, 1]),(Subscript[x, 2]),(Subscript[x, 3]),⋯)↦((Subscript[x, 1]),(Subscript[x, 2]),(Subscript[x, 3]),(Subscript[x, 4,])⋯)

(⋯,(Subscript[x, -1]),(Subscript[x, 0]),(Subscript[x, 1]),⋯)↦(⋯,(Subscript[x, 0]),(Subscript[x, 1]),(Subscript[x, 2]),⋯)

The latter looks like non-chaotic, but in reality the information loss does take place, due to the finite memory space.

...  Li-Yorke-Chaos.

A pare of points x and y are called,

{({{Distal:     ,  lim (inf_(k->∞))d((f^k)(x),(f^k)(y))>0,}, {Proximal:, lim (inf_(k->∞))d((f^k)(x),(f^k)(y))=0.}})

A pair of proximal points are called

{({{Asymptotic:, lim (sup_(k->∞))d((f^k)(x),(f^k)(y))=0,}, {Scrambled: , lim (sup_(k->∞))d((f^k)(x),(f^k)(y))>0.}})

We define the scrambled set as follows.

S  is called a scrambled set, if  ∀x,y∈S,x≠y,(x,y) is a scrambled pair.

If S is uncountable, we call it the chaotic set.

(.)  Chaotic and Non-chaotic Singularities.

...  Shuffling singularity is non-chaotic!  (Shuffling Singularity Theorem)

Suffling singularity merely shuffles the conjugate orbits.

Clear[i,j,k]
ppB={{{0,0},{(Sqrt[3]),0},{(Sqrt[3]),1},{0,1}},
{{0,0},{π,0},{π,1},{0,1}},
{{0,0},{E,0},{E,1},{0,1}},
{{0,0},{(2^(1/3)),0},{(2^(1/3)),1},{0,1}}};
qqB=Table[ppB[[i]][[j]]+(∑_(k=1)^(i-1))ppB[[k]][[2]],{i,1,4},{j,1,4}];
qcB=Table[(1/4)(∑_(j=1)^4)qqB[[i]][[j]],{i,1,4}];

Mplot=Graphics[{
{Brown,Polygon[qqB[[1]]]},
{Lighter[Pink],Polygon[qqB[[2]]]},
{Lighter[Cyan],Polygon[qqB[[3]]]},
{LightPurple,Polygon[qqB[[4]]]},
Line[{qqB[[1]][[1]],qqB[[4]][[2]],qqB[[4]][[3]],qqB[[1]][[4]],qqB[[1]][[1]]}],Line[{qqB[[1]][[2]],qqB[[1]][[3]]}],
Line[{qqB[[2]][[2]],qqB[[2]][[3]]}],Line[{qqB[[3]][[2]],qqB[[3]][[3]]}],
Text["(Subscript[P, 1])",qcB[[1]]],Text["(Subscript[P, 2])",qcB[[2]]],Text["(Subscript[P, 3])",qcB[[3]]],Text["(Subscript[P, 4])",qcB[[4]]],
Table[{Blue,PointSize[Large],Point[qqB[[ii]][[1]]+{0.1,0.4}]},{ii,1,4}],
Table[{Red,PointSize[Large],Point[qqB[[ii]][[2]]+{-0.15,0.65}]},{ii,1,4}],
{Blue,Opacity[0.25],PointSize[Large],Point[qqB[[4]][[2]]+{0.1,0.4}]},
{Red,Opacity[0.25],PointSize[Large],Point[qqB[[1]][[1]]+{-0.15,0.65}]}
},ImageSize->wideSize]

ppA={
{{0,0},{E,0},{E,1},{0,1}},
{{0,0},{(Sqrt[3]),0},{(Sqrt[3]),1},{0,1}},
{{0,0},{(2^(1/3)),0},{(2^(1/3)),1},{0,1}},
{{0,0},{π,0},{π,1},{0,1}}
};
qqA=Table[ppA[[i]][[j]]+(∑_(k=1)^(i-1))ppA[[k]][[2]],{i,1,4},{j,1,4}];
qcA=Table[(1/4)(∑_(j=1)^4)qqA[[i]][[j]],{i,1,4}];
fMplot=Graphics[{
{Lighter[Cyan],Polygon[qqA[[1]]]},
{Brown,Polygon[qqA[[2]]]},
{LightPurple,Polygon[qqA[[3]]]},
{Lighter[Pink],Polygon[qqA[[4]]]},
Line[{qqA[[1]][[1]],qqA[[4]][[2]],qqA[[4]][[3]],qqA[[1]][[4]],qqA[[1]][[1]]}],Line[{qqA[[1]][[2]],qqA[[1]][[3]]}],
Line[{qqA[[2]][[2]],qqA[[2]][[3]]}],Line[{qqA[[3]][[2]],qqA[[3]][[3]]}],
Text["f((Subscript[P, 3]))",qcA[[1]]],Text["f((Subscript[P, 1]))",qcA[[2]]],Text["f((Subscript[P, 4]))",qcA[[3]]],Text["f((Subscript[P, 2]))",qcA[[4]]],
Table[{Blue,PointSize[Large],Point[qqA[[ii]][[1]]+{0.1,0.4}]},{ii,1,4}],
Table[{Red,PointSize[Large],Point[qqA[[ii]][[2]]+{-0.15,0.65}]},{ii,1,4}],
{Blue,Opacity[0.25],PointSize[Large],Point[qqA[[4]][[2]]+{0.1,0.4}]},
{Red,Opacity[0.25],PointSize[Large],Point[qqA[[1]][[1]]+{-0.15,0.65}]}
},ImageSize->wideSize]

...  Only non-shuffling sliding singularity counts!  (Essential Singularity Theorem)

Define the essential singular set as,

(∑_E)={x∈∑:(f^k)(x) belong to a non–shuffling sliding singularity,∃k∈ℤ}.

Then the dynamics is non-chaotic outside (∑_E).

...  Essential singularity = shaotic singularity?  (Chaotic Dynamics Conjecture)

The inclusion ⊃ is established.  The other one isn’t.

(OverBar[ (∑_E)])=The union of all chaotic sets of f.

Here, the chaotic set refers to the invariant set in which Devaney-chaos occurs.

(.)  Devaney's Definition of Chaos for Piecewise Isometric Dyanmical Systems.

...  Devaney-Chaos for Discontinuous Dynamics.

(({{(1), Sensitive dependence upon the initial condition,}, {(2), Topological transitivity,                                                }, {(3), Dense distribution of periodic orbits.                      }})

(1)  ∃r>0; ∀(Subscript[x, 0])∈X, ∀ε>0, ∃(Subscript[y, 0])∈(Subscript[N, ε])(x); such that ∀{(Subscript[x, 0]),⋯,(Subscript[x, n])},{(Subscript[y, 0]),⋯,(Subscript[y, n])}⊂X, ∃k∈ℕ, min{d((f^k)((Subscript[x, i])),(f^k)((Subscript[y, j]))):0≤i,j≤n}≥r.

(1)  There exists a certain r>0, where for ∀(Subscript[x, 0])∈X and for ∀ε>0, we can find a certain (Subscript[y, 0])∈(Subscript[N, ε])(x) such that, for all finite sets {(Subscript[x, 0]),⋯,(Subscript[x, n])} and {(Subscript[y, 0]),⋯,(Subscript[y, n])}, min{d((f^k)((Subscript[x, i])),(f^k)((Subscript[y, j]))):0≤i,j≤n}≥r, for some k∈ℕ.

(2)     ∃x∈X,{(f^k)(x):k∈ℕ} is dense in X.

(3)     {(f^k)(x):k=0,⋯,n,(f^n)(x)=x} is dense in X.