Implementing Central Symmetry

I’m interested in implementing symmetry groups. So it would be useful to have central symmetry (isometry transformation). There are built-in functions: RotationTransform, TranslationTransform and ReflectionTransform, but I was not able to find something like central symmetry. The goal is to translate one object of any kind (image or built-in graphical primitives) into the symmetric analog to it.

If anyone has any thoughts, please write!

=================

=================

1 Answer
1

=================

Point reflection in dimension 2 coincides with a half-turn, so RotationTransform suffices in that case.

In[1]:= TransformationMatrix@ScalingTransform[{-1,-1},{p1,p2}]
Out[1]= {{-1,0,2 p1},{0,-1,2 p2},{0,0,1}}
In[2]:= TransformationMatrix@RotationTransform[Pi,{p1,p2}]
Out[2]= {{-1,0,2 p1},{0,-1,2 p2},{0,0,1}}

In dimension 3, point reflection is an orientation-reversing isometry, so it no longer coincides with RotationTransform. However, it is still an isometry generated by reflections. So strictly speaking, we can obtain point reflection by composing ReflectionTransform along three mutually-orthogonal vectors. Nevertheless, it is more convenient to use ScalingTransform instead.

The following example is adapted from the documentation for ReflectionTransform:

In[3]:= cow=ExampleData[{“Geometry3D”,”Cow”},”GraphicsComplex”];
In[4]:= Graphics3D[{
EdgeForm[None],Opacity[0.5],Lighter[ColorData[1,1],0.5],
cow
},Boxed->False]

Now we apply our point reflection to the cow about the origin:

In[5]:= Graphics3D[{
EdgeForm[None],Opacity[0.5],Lighter[ColorData[1,1],0.5],
GeometricTransformation[cow,ScalingTransform[{-1,-1,-1},{0,0,0}]]
},Boxed->False]

If you are interested in isometries in dimensions higher than 3, then things get more complicated. The isometry group of Rn\mathbb{R}^{n} is the semi-direct product of translations and isometries fixing the origin, so we need only understand the latter (the orthogonal group O(n)O(n)). The good news is that by the Cartan-Dieudonné theorem, every element of O(n)O(n) is a composition of at most nn reflections, so there is no need to implement a new geometric transformation. However, see the MathOverflow post for more information about challenges in enumerating even finite subgroups of isometries in dimensions n≥5n\geq5.

  

 

Szabolcs’ image uploader came in handy.
– Michael Wijaya
Jun 9 ’12 at 20:47