Observer path (red) plunging into the central pearl in Indra's Net

Having seen a POVRay description of Indra's Net of Pearls,
let's now see if we can simulate reincarnation inside the net. We have available videos
by Brian Vanderkolk, who simulated what a perfectly reflecting
sphere looks like on the inside, on this page^{[1]}. We use Maple 9 to help us out.

When the author simulated Indra's Net, he used R=π/20 for the spheres' radius, therefore we need to make this assumption first. We also need to simulate in 3d, so we use the "geom3d" package:

> restart;

> with(geom3d):

> _EnvXName := x: _EnvYName := y: _EnvZName := z:

> with(plots):

> R:=Pi/20; #Radius of Indra's Sphere

Now, we need to decide how the observer plunges into the spheres. There are two kinds of paths in Brian's videos:

- on-axis path (videos 4,6)
- off-axis path (video 5)

We start at (0,1/2,-5) and move on a straight line riding the vector (0,1/2,z). Once we determine HOW we should enter the spheres, it's just a matter of choosing the right function to make a plunge into the sphere's entrance point. We want "smooth" camera movement, so the directional derivative of the path function which we choose, has to be equal to the directional derivative of a straight line, i,e, 0, at the initial and final path points. For this, we choose the function, sin(x).

Let's then first form the equation which characterizes the actual plunge into the sphere's entry point:

> eq:=(y-Pi/2)/(z+1)=(Pi/2+Pi/2)/(-1+R); #equation for plunging in left of
sphere

> y:=unapply(solve(eq,y),z);#solve for y

> f:=z->1/4*(sin(y(z))+1); #function of path, left of plunge

> p1:=plot(f(z),z=-1..-R):

> p2:=plot({sqrt(R^2-z^2),-sqrt(R^2-z^2)},z=-R..0,color=red):

> display({p1,p2});

On-axis plunge into the central sphere

We check the values at the end points, and differentiability:

> f(-1),f(-R); #check values there

1/2, 0

> simplify(subs(z=-1,diff(f(z),z))),simplify(subs(z=-R,diff(f(z),z))); #check
differentiability

0, 0

Now let's check what will be the maximum visual tilt in our path:

> msx:=solve(diff(f(z),z&dolar;2)=0);#find out max tilt angle

> ms:=simplify(subs(z=msx,diff(f(z),z)));

> eq:=(y-f(msx))/(z-msx)=ms;

>y:=unapply(solve(eq,y),z);

> evalf(-Pi/5),evalf(arctan(ms)),evalf(-Pi/4);

-0.6283185308, -0.7500867099, -0.7853981635

The tilt angle is between π/5 and π/4. Let's see the tilt:

> p3:=plot(y(z),z=-1..-R,color=blue):

> p4:=plot(sqrt(R^2-z^2)-1,z=-R..R,color=red):

> display({p1,p2,p3,p4});

Maximum visual tilt when plunging on-axis

This means that at maximum tilt, we are going to be looking roughly at -0.3 on the y-axis. Now, based on the data that Brian published for his off-axis entry, let's calculate the second plunge:

> eq:=(y-Pi/2)/(z+1)=(Pi/2+Pi/2)/(-1+cos(arcsin(R/10))*R); #equation for plunging
left of sphere

> y:=unapply(solve(eq,y),z);

> g:=z->(1/2-R/10)*1/2*(sin(y(z))+1)+R/10; #function of path, left of plunge

> p1:=plot(g(z),z=-1..-R*cos(arcsin(R/10))):

> p2:=plot({sqrt(R^2-z^2),-sqrt(R^2-z^2)},z=-R..0,color=red):

> display({p1,p2});

Off-axis plunge into the central sphere

Let's check some values and differentiability for the off-axis plunge:

> simplify(g(-1)),simplify(g(-R*cos(arcsin(R/10)))); #check values there

1/2, 1/200*Pi

>
simplify(subs(z=-1,diff(g(z),z))),simplify(subs(z=-R*cos(arcsin(R/10)),diff(g(z),z)));
#check differentiability

0, 0

The exit path is going to be symmetric:

> plot(f(-z),z=R..1);#exit path

Exit path (past central sphere radius)

Now we create the complete on-axis path:

> cpath:=z->piecewise(z<=-1, 1/2, z>-1 and z<=-R, f(z),z>-R and z<R,0,z>=R and z<1,f(-z),z>=1,1/2);#path through center

Check it:

> p1:=plot(cpath(z),z=-2..2):

> p2:=implicitplot(z^2+y^2=R^2,z=-R..R,y=-R..R):

> display({p1,p2});

Complete on-axis plunge observer path

And the off-axis path:

> spath:=z->piecewise(z<=-1, 1/2, z>-1 and z<=-R*cos(sin(R/10)), g(z),z>-R*cos(sin(R/10)) and z<R*cos(sin(R/10)),R/10,z>=R*cos(sin(R/10)) and z<1,g(-z),z>=1,1/2);#path through offset

> p1:=plot(spath(z),z=-2..2):

> display({p1,p2});

Complete off-axis plunge observer path

Note the difference between the two paths. Now let's put everything together with geom3d:

> steps:=20;#steps to complete path

> dz:=4/steps; #for cpath

> trajectory:=spath; #can use cpath as well, here

> path:={};

> for i from 0 to steps-1 do

> z1:=-2+i*dz;

> y1:=evalf(trajectory(z1));

> x1:=0;

> z2:=z1+dz;

> y2:=evalf(trajectory(z2));

> x2:=0;

> point(p,x1,y1,z1);

> point(q,x2,y2,z2);

> segment(L,[p,q]);

> path:=path union {draw(L,color=red,labels=[x,y,z])};

> od:

> net:={};

> n:=1;#construct Indra's net

> for k from -n to n do

> for l from -n to n do

> for m from -n to n do

> point(c,[k,l,m]);

> sphere(s,[c,R]);

> net:=net union {draw(s,labels=[x,y,z])};

> od;

> od;

> od;

> reincarnation:=net union path:

> display(reincarnation);

The result is shown on the top figure^{[1]}.

POVRay Illustrations of Reincarnation In Indra's Net

A low quality^{[2]} version of the completed video: Trip Through Primordial Chaos This is the complete path of a
soul during a virtual reincarnation in Indra's Net, with the entire net and the
First Cause visible. The "soul" is incorporeal, so there are no reflections outside
Indra's Net, which only reflect themselves and the light of The First Cause. Then
the soul takes a plunge into the central Indra sphere, where it incarnates as an
iridescent sphere, smaller than the Indra sphere it plunges into. This is necessary,
because absent objects inside a perfectly reflecting sphere, there are no
reflections. The iridescent-soul-sphere proceeds towards the center of the Indra
sphere, makes a stop at r/2, to take a look around for a full 360 degree turn and
finally proceeds until it reaches the actual center, where it meets the author,
who's creating this very video in POVRay, so the video is self-referential. The soul
then leaves the central sphere, travels towards the edge and exits it, returning to
Indra's Net. Turning back, a second plunge, this time off-axis, meets the author
playing his favorite game against Rex Tremendus. The soul returns to the exact same
position where it started, so the entire video is recyclable. The parities of the
sub-paths are:

Reincarnation | Direction | On-Axis Entry | Encounters Singularity | Floor Reference |

1 | + | + | +(point) | + |

2 | - | - | +(line) | + |

- A mathematical analysis of infinite reflections inside a perfectly reflecting sphere has been performed here.
- High quality version of the this video (340 MB .avi): here.