Dear Ed and Vitaliy,
these are beautiful and nicely symmetric curves. I have tried some other, less regular systems. Let's run a chaotic logistic map:
logistmap=NestList[4.*#*(1 - #) &, RandomReal[], 100];
We can plot this:
ListLinePlot[ NestList[4.*#*(1 - #) &, RandomReal[], 100], Mesh -> Full, MeshStyle -> Red]
Note that it is a time discrete map in a chaotic regime; the blue line is just to guide the eye. I chose to start at a random initial condition, which is generated by the RandomReal[]. The AnglePath looks like this:
Graphics[Line[AnglePath[NestList[4.#(1 - #) &, RandomReal[], 10000]]]]
Now, every time you run this, we use a different initial condition, i.e. the path is always different. We could try to figure out where we are on average over, say, 1000 runs and then plot that:
coords = Table[AnglePath[NestList[4.*#*(1 - #) &, RandomReal[], 1000]], {k, 1, 1000}];
SmoothHistogram3D[Flatten[coords, 1], ColorFunction -> "Rainbow"]
Ok. Let's compare that to Ed's example. All trajectories are the same; it makes no difference but to be consistent with the logistic map example I'll run it 1000 times:
coords2 = Table[AnglePath[N[(7 Sqrt[7] Khinchin Pi E EulerGamma) Range[-2000, 2000]]], {k, 1, 1000}];
SmoothHistogram3D[Flatten[coords2, 1], ColorFunction -> "Rainbow"]
We can now also look at a Levy-flight-like situation:
Graphics[Line[AnglePath[Accumulate@(RandomChoice[{-1, 1}, 1000]*RandomVariate[LevyDistribution[0, 0.0001], 1000])]]]
and
coords3 = Table[AnglePath[Accumulate@(RandomChoice[{-1, 1}, 1000]*RandomVariate[LevyDistribution[0, 0.0001], 1000])], {k, 1,1000}];
SmoothHistogram3D[Flatten[coords3, 1], ColorFunction -> "Rainbow"]
It is very nice that the geometry can represent the dynamics. Of course, it is easy to find something for those who like "patterns and numbers".
Let's look at the digit path of
$Pi$.
Graphics[Line[AnglePath[RealDigits[N[Pi, 1000]][[1]]]]]
Then
$\sqrt{2}$
Graphics[Line[AnglePath[RealDigits[N[Sqrt[2], 1000]][[1]]]]]
I guess that
$e$ is also important:
Graphics[Line[AnglePath[RealDigits[N[Exp[1], 1000]][[1]]]]]
These paths all look quite "random" which is typical for "normal numbers", i.e. numbers the digits of which could come from a random draw of digits. You get beautiful patterns for non-normal numbers like 1/3.
Graphics[Line[AnglePath[RealDigits[N[1/3, 1000]][[1]]]]]
Here's 1/7:
Graphics[Line[AnglePath[RealDigits[N[1/7, 1000]][[1]]]]]
Heres it comes for the inverses of the first 5 primes:
GraphicsRow[Graphics[Line[AnglePath[RealDigits[N[1/#, 1000]][[1]]]]] & /@ Prime[Range[5]]]
Finally, we can look at the patterns in different bases, here for 1/7:
Graphics[Line[AnglePath[RealDigits[N[1/7, 200], #, 200][[1]]]]] & /@ Range[2, 10]
It can also be useful to visualise sound. Here is what a viola looks like:
sndviola = ExampleData[{"Sound", "Viola"}];
Graphics[Line[AnglePath[sndviola[[1, 1, 1]]]]]
An organ is a completely different kettle of fish (I admit that this was not a very common sentence!):
sndorgan = ExampleData[{"Sound", "OrganChord"}];
Graphics[Line[AnglePath[sndorgan[[1, 1, 1]]]]]
This is "Houston we have a problem!":
sndapollo = ExampleData[{"Sound", "Apollo13Problem"}];
Graphics[Line[AnglePath[snd[[1, 1, 1]]]]]
Obviously, this works with images, too. Here is Lena:
Graphics[Line[AnglePath[Flatten[ImageData[ExampleData[{"TestImage", "Lena"}]]]]]]
As expected, more regular data
ExampleData[{"TestImage", "ResolutionChart"}]
look more regular:
Graphics[Line[AnglePath[Flatten[ImageData[ExampleData[{"TestImage", "ResolutionChart"}]]]]]]
I know that there are many people here who like CellularAutomata. AnglePath can also produce a nice visualisation of the resulting patterns:
Graphics[Line[AnglePath[Flatten[CellularAutomaton[30, {{1}, 0}, 50]]]]]
and
Graphics[Line[AnglePath[Flatten[CellularAutomaton[{1599, {3, 1}}, {Table[1, {1}], 0}, 80]]]]]
It appears to me that it can even be used for the analysis of graphs.
Graphics[Line[AnglePath[Flatten[Normal[AdjacencyMatrix[RandomGraph[BarabasiAlbertGraphDistribution[100, 2]]]]]]]]
The degree distribution, for example, changes the AnglePaths substantially.
Well, that's all I got for now...
Cheers,
Marco