"A function f on a set S is said to be invariant under a transformation T of S into iteself if f(T(x)) = f(x) for all x in S". [1]
I define an affine invariant function to be a function where there exists an affine transformation Ax + b where A ≠ 0 invertible, b ≠ 0 such that f(Ax + b) = f(x) for all x in the domain of the function when Ax + b is also in the domain of the function.
This is like an extension of periodic functions f(x + P) = f(x) [2], which is the special 1d case with A = 1, b = P.
This repository contains a sandbox of python3 (and some matlab) scripts and tools I have used to explore and generate images and animations of affine invariant 2d surface functions. That is functions f: RxR → R. This includes affine invariant functions were the affine transformation is scale, and/or rotation, and/or translation. Like a log spiral snail shell where f(eθ[cos(θ) -sin(θ); sin(θ) cos(θ)]x + 0) = f(x)
To run this code you will require python3, opencv-python, and numpy. Matlab or Octave can be used for the .m scripts.