add program to apply a rotation around an arbitrary axis