Transformation Functions in Mathematica have been useful in geometry. In particular I have been working on a book that uses them as isometries in two and three space. However I have been coming to the conclusion that the transformation functions should be the points in our space while the geometric objects should be the functions.
Transformation functions as “points” have the advantage that not only do they have position but also orientation. Further they have a sort of velocity and acceleration. That is they are moving points.
Transformation functions as “points” have the advantage that not only do they have position but also orientation. Further they have a sort of velocity and acceleration. That is they are moving points.
For example consider the triangle in the plane defined as a graphic object
In[]:=
δ:={Blue,Thickness[.02],Line[{{{0,0},{1,0}},{{1,0},{0,2}},{{0,2},{0,0}}}]}
In[]:=
Graphics[δ,ImageSize->Tiny]
Out[]=
To make this dynamic
In[]:=
Δ[α_]:={Thickness[.02],Line[α@{{{0,0},{1,0}},{{1,0},{0,2}},{{0,2},{0,0}}}]}
Thus if
In[]:=
ι:=TranslationTransform[{0,0}]τ:=TranslationTransform[{4,3}]σ:=RotationTransform[Pi/4,{1,4}]ρ:=ReflectionTransform[{-3,-3},{1,2}]
In[]:=
Graphics[{{Black,Δ[ι]},{Blue,Δ[τ]},{Green,Δ[σ]},{Orange,Δ[ρ]},{Red,Δ[τ@*ρ]}},ImageSize->Small]
Out[]=
In[]:=
Clear[τ,σ,ρ]
We can make these more dynamic so we actually see the transformation as movement in the case of rotations and translations
In[]:=
τ[s_]:=TranslationTransform[{4s,3s}]σ[s_]:=RotationTransform[sPi/4,{s,4s}]
In[]:=
Manipulate[Graphics[{{Black,Δ[ι]},{Blue,Δ[τ[s]]},{Green,Δ[σ[s]]}},ImageSize->Small],{s,0,1},SaveDefinitions->True]
Out[]=
In three dimensions a simple example is a spindle, a sort of generic solid. We define a dynamic cell
In[]:=
dcell[ω_]:=ω@{{{1.,0,0},{0,1,0},{0,0,1}},{{1,0,0},{0,1,0},{0,0,-2}},{{0,0,1},{0,0,-2},{1,0,0}},{{0,1,0},{0,0,1},{0,0,-2}}}
The identity and quarter turn rotation are
In[]:=
ι3:=TranslationTransform[{0,0,0}]σ4:=RotationTransform[Pi/2,{0,0,1}]
In[]:=
Graphics3D[{Orange,Polyhedron[dcell[σ4]]},ImageSize->Small,Boxed->False]
Out[]=
We can then define a dynamic spindle
In[]:=
spindle[β_]:=Graphics3D[{{Red,Polyhedron[dcell[β]]},{Green,Polyhedron[dcell[β@*σ4]]},{Blue,Polyhedron[dcell[β@*σ4@*σ4]]},{Yellow,Polyhedron[dcell[β@*σ4@*σ4@*σ4]]}}]
In[]:=
Show[spindle[ι3],Boxed->False,ImageSize->Small]
Out[]=
This can be transformed easily in many different ways. For example any direct (orientation preserving) isometry is the composition of a translation with a rotation. A similarity is the composition of an isometry and size transformation. There is a 1-1 correspondence between spindles in space and isometries, or even similarities in space and positions of the spindle.
Size transformations are of the form, a positive number,
r
In[]:=
ξ[r_]:=TransformationFunction[{{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1/r}}]
for example
In[]:=
ξ[2]
Out[]=
TransformationFunction
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 2 |
To see a pseudo-random transformation as movement we need a 3D background.
In[]:=
Γ[s_]:=TranslationTransform[{0,3s,s}]@*RotationTransform[{{0,0,1},{.2s,-1s,1-s}}]@*RotationTransform[sPi/2,{0,0,1}]@*ξ[1/2+s]
In[]:=
Manipulate[Show[Graphics3D[{Orange,Polygon[{{-1,-1,-3},{-1,2,-2},{1,2,-1},{2,-1,-2}}]}],spindle[Γ[s]],Boxed->False,ImageSize->Small],{s,0,1},SaveDefinitions->True]
Out[]=
In[]:=
An interesting example comes from my plane curves book [A Numerical Approach to Real Algebraic Curves, Wolfram Media, 2018] showing a spindle travel around the Moebius band. First some code
In[]:=
moebiusB[t_,s_]:=Module[{a=Sqrt[2]-1,mb,MB,tt},mb[tt_]:={Cos[2tt+Pi]/(1+aCos[tt]),Sin[2tt+Pi]/(1+aCos[tt]),1/(1+aCos[tt+Pi/2])};s*mb[t]+(1-s)*mb[t+Pi]]
In[]:=
moebiusPLMB=ParametricPlot3D[moebiusB[t,s],{t,-Pi,Pi},{s,0,.5},Mesh->None,PlotStyle->Opacity[0.8],Boxed->False,Axes->False]
Out[]=
The example is
In[]:=
Λ[t_]:=TranslationTransform[moebiusB[t,.3]]@*RotationTransform[{{0,0,1},D[moebiusB[u,.3],u]/.u->t}]@*RotationTransform[2t,{0,0,1}]@*ξ[.2]
In[]:=
Manipulate[Show[moebiusPLMB,ParametricPlot3D[moebiusB[t,.5],{t,-Pi,Pi}],spindle[Λ[s]]],{s,0,2Pi},SaveDefinitions->True]
Out[]=
Notice one orbit is twice around the band but only crosses the blue circle once. The connection between this graphic and projective geometry is given in my plane curves book, section 8.7.
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Dynamic geometry via treating transformation functions as moving points with orientation and scale
by Barry H Dayton
Wolfram Community, STAFF PICKS, November 26, 2025
https://community.wolfram.com/groups/-/m/t/3582183
by Barry H Dayton
Wolfram Community, STAFF PICKS, November 26, 2025
https://community.wolfram.com/groups/-/m/t/3582183

