This page can be found at:
http://www.ncsa.uiuc.edu/imath2001/mflider/schprel.html
Last update: 2001-09-20 by
mflider.
SchpRel: Schpecial Relativity
by Mark Flider
Abstract |
Brief Relativity Background |
Project History |
The Application
Non-linear Velocity |
Theorems and Optimizations |
Future Work |
About the Name
Abstract
The purpose of this project is to show the apparent distortion of objects
to a moving observer when the speed of light is slow enough to become
non-negligible in relativistic physics. It was developed as an RTICA (Real-Time Interactive Computer Application) for Prof. George Francis' class and
is now being developed in the NCSA's CAVE and the Beckman Institute's CUBE.
Brief Relativity Background
In the late 19th century, Maxwell discovered the odd phenomenon around which Special Relativity is based: that light not only travels at a fixed and finite speed, it travels at the same speed in any frame of reference. What this means is, if person A were traveling towards a light source, and person B were traveling away from a light source, both people would observe (or measure) light traveling towards them at the exact same speed. In addition, this speed of light, c (about 187,000 miles/second or 3x10^8 meters/second) is the theoretical maximum speed any object can achieve.
This speed limit of c is due to the energy required to accelerate an object to some velocity. The higher the velocity, the greater the energy required to accelerate the object farther. For an object to accelerate to c, an infinite amount of energy must be applied to the object. Simply applying a constant force would require an infinite amount of time, as well. To account for this established, universal speed limit, we have to change formerly simple physics formulas.
What this means is a new way to add velocities in physics. Ordinarily, if two cars were traveling away from each other at some speed v = 60 mph, one would say that relative to car A, car B is traveling at 120 mph. Relative to car B, car A is traveling at 120 mph. This illustrates a frame of reference: a person in a car doesn't observe herself flying past a man on a sidewalk; she observes the man on the sidewalk flying past her. Similarly, the man on the sidewalk sees the woman in the car whizzing past him, not the other way around. Both viewpoints are correct, however; there is no universal system of coordinates in the universe, as Newton and Galileo thought. Even if we said the man on the street was obviously the stationary observer because the car is moving across the earth, is not the earth rotating constantly? And traveling around the sun, which in turn moves about the galaxy, and so forth? So, obviously, there can be no idea of stationary, except when one considers an object stationary with respect to another object.
Let us turn our attention back to the two cars. We already stated that given two velocities, we simply add them to get the total velocity of the two cars. When both cars are moving very, very fast, though, at say 75% the speed of light (.75c), our non-relativistic vector addition would say that the cars are traveling away from each other at .75c + .75c = 1.5c, or 1.5 times the speed of light. But we said that no object could move faster than the speed of light! The result [2] is the inclusion of a normalization factor to account for this called the Lorentz factor, g, where g = 1/sqrt(1+v^2/c^2). This factor is multiplied by velocities and times to get their actual values. It is what causes time dilation and the Lorentz Contraction.
Modern Relativity
Although the Lorentz factor was a significant contribution to Relativity,
it is not alone an accurate way to explain how the world looks at relativistic
speeds. What one must consider is not only this time and length dilation, but
also the fact that photons take a finite amount of time to reach one's eye.
Much the same way we see stars in the sky that are billions of years old, and
long gone by now, moving at relativistic speeds forces us to see where objects
were at the time their photons left them.
To explain a bit more clearly, let us consider the Minkowski space-time diagram.
This diagram is essentially a 2-dimensional graph, where the world is represented
as a horizontal, 1-dimensional line, x. The vertical line represents
the time axis, t. For example, given an object at the origin (0,0), the
point (x=0,t=1) shows us the non-moving object at x=0 one
second later. If the object were moving, it would be shifted horizontally at
time t=1.
We designate the t units as one second, and the x units as
one light second, or 3x10^8 meters. An important rule here is that no object
may move faster than the speed of light, which can now be represented as a 45-degree
line. In other words, no object may have a path (or world line) whose slope
is less than 1/2.
Now let us consider an example where we place ourselves at the origin and
observe a space ship traveling towards us. We can draw this example on the space-time:
since light travels on a 45-degree line, we can draw a line from the origin
and connect it with the space ship's world line. What this connection shows
us is what we, at position x=0, are seeing at time t=0. We can
draw an image of what we see at time t=0 by simply displacing the connecting
point vertically. Of course that image is old; much like the stars that have
since died, the space ship we see is no longer at that point, since it is moving.
Now, let us throw in the fact that the space ship has a certain length, and
let us keep track of a point on the tip of the nose and one at the end of the
rocket. This gives us two diagonal lines to show the path of the rocket. We
follow the same process as we do before, only now we have one line from the
origin connecting with the two world lines of the space ship. If we project
the two points at time t=0, we see that, because the space ship is traveling
towards us, it appears elongated. If we reverse the process, we observe the
space ship to shrink in length. This effect is known as optical aberration,
and causes objects to appear bent, distorted, or even twisted.
Project History
Instead of increasing the velocity of the user, SchpRel allows the user to decrease the speed of light. This gives the same basic effect with better results. In the real world, one would have to go close to 100,000 mph to even achieve half the speed of light. In SchpRel, you can travel a comfortable walking speed of only a few mph, and then simply turn the speed of light down to say, twice your walking speed. Now you're traveling at half the speed of light!
One thing to keep in mind is that SchpRel makes certain assumptions for its calculations. First of all, it assumes you've always been traveling at that speed, in that direction, forever. Secondly, it does not take into account any accelerations. This includes turning; the weird effects you see as you turn in SchpRel are simply limitations of the program; these effects are NOT based on Special Relativity, and hence you should forget about them. In mathematical terms, turning in SchpRel is equivalent to rotating your velocity vector. The last limitation is that changes in the values of the velocity or the speed of light are also purely mathematical adjustments.
The program used to hold true only when you are traveling with a constant velocity and constant speed of light. (This is not to say that changing any of these values would not affect the program, only that DURING these changes the strange effects were dismissable.)
Why does everything look bent and distorted?
The most noticeable result of relativistic travel is an effect known as "optical aberration." This is a result of seeing photons from various points in time simultaneously. For example, let's say there's a pillar in front of you. As you walk towards this pillar, it looks very straight, since the photons from the top of the pillar and those in the middle are reaching you at, as far as you can tell, the exact same time. This is because these phtons are traveling very fast (at the speed of light; 3x10^8 meters/second or 186,000 miles/second). As such, you walking towards something, or even driving really fast towards something, isn't going to influence to any discernable degree the time it takes two photons to reach you. Again, this is because light travels way faster than you ever could on Earth.
But what happens wen we slow light down? All of a sudden we CAN travel at a measurable percentage of the speed of light. Now, walk towards that pillar again. The photons from the pillar suddenly take a measurable amount of time to reach you. Naturally, those farther away are going to take longer to reach you than those closer to you.
This pillar is constantly emitting photons, but these photons are now very slow; by the time a photon has finally reached you, the object has moved a certain distance relative to you. In other words, you are seeing an "old" photon; one that came from the object when you were in a different position. This old photon is showing you the object when it was farther away from you. Naturally, the closer the object, the less time it takes for the photon to travel, and hence the smaller the discrepancy between what you see and where the object really is. The top of the pillar is farther from you than the middle of the pillar, so you see an "older" top of the pillar than middle. What you are seeing is pieces of the pillar from different points in time. The farther away the point on the object, the farther back in time you are seeing it.
So, everything looks bent and distorted because you are seeing different parts of objects from different times along your journey, and hence in different places.
The Application
The program is set up such that the user is traveling through a 3D world at some velocity. For simplicity, the program assumes this velocity is constant throughout all of time. In other words, the user has been traveling at the same velocity for all of time and there is no foreseeable change in this. In reality, the program allows turning and the changing of speed, but for the sake of the equations involved, this does not happen. As such, this simulation is only valid for picking a path and not altering in any way from it.
The algorithm used works on a point-by-point basis. In implementation, each
object is represented as a multi-dimensional array of (x,y,z)
vertices. Each of these is pumped through the algorithm and put into another
array to be drawn. For each point, we take into account how far away the point
is from the observer and call this the "actual" distance. We then
assume that the point has been traveling with velocity v away from the
observer (i.e., instead of the observer moving towards the point with velocity
v, the point is moving away and the observer is stationary; special relativity
allows this). Now, what the observer sees is some photons from the object at
a previous point in time, meaning from a point backward along its path of movement
(always the z-axis, in this case). The observed distance is therefore back a
distance vt , where v is the velocity. We need to find t from
the distance to the observed point divided by the speed of light (since the
photons are moving at c).
This gives us a series of messy equations. By putting these into a geometric
form, however, the entire process gives us a nice, right triangle and we can
use the quadratic formula to solve for the observed position of the point. The
equation itself is still long and messy, but that's fine, because we know all
the variables involved (x,y,z,t, and c) and
can just let the computer do the math for us.
So what happens when we change the speed of light? After all, at its current
value we can't see any weirdness in ordinary daily life. So we turn down the
speed of light to a small, small fraction of what it is currently. What changes?
Nothing, until you start to move. The apparent spacing between two points becomes
greatly exaggerated as you move. Looking at the triangle, notice that the observed
object's position depends on it's distance divided by the speed of light. If
we were to decrease the speed of light, this distance would become much, much
greater. The effects are similar to looking through a lens; the world seems
to become rounder, with objects curving and straight lines bending. However,
another oddity also occurs; one can actually see the backsides of objects! This
oddity must be viewed to be truly appreciated.
Non-linear Velocity
When describing the program to others, I found myself saying "now this
isn't technically correct," or "ignore what's happening here,"
often. This is due to the key assumptions that SchpRel makes regarding the
viewer's motion, mainly that the viewer has been travelling at the current
velocity (direction and speed) forever. Therefore, when making turns, or simply
starting and stopping, the view would be mathematically inaccurate. To turn
in the old version of SchpRel, for example, one had to neglect the actual
motion of turning, and then change assumptions about teh past once the turn
was complete. In effect, the program was allowing history to change. I was
not satisfied with this.
In order to fix hese problems, I had to destroy the perevious assumptions
about the past. Since the program is based around past locations, however,
I now needed to keep rack of the position of the viewer in teh past. I accomplished
this by simply recording the viewer's location as a three-dimensional point
in a circular array of fixed length. Since I didn't want to keep track of
the positions of every point in the scene separately, I simply used the past
positions of the viewer as a mirrored version of the past positions of each
of the points. Doing this, the program could look back and see where each
object had been a certain amount of time in the past.
The new calculation for each point on an object is actually straight-forward.
What we need to find is the point in space where a photon reaches the viewer,
giving that the object has been moving around. We know the viewer's location,
and the objects' past positions. We need the distance to the object, d,
to be as close to the speed of light, c, multiplied by the amount of
time, t, that the light takes to get to the viewer. Starting at the
object's current location, we see that t=0, so light would have to
move infinitely fast if the viewer were to see the object at that position.
Iterating along the object's past position array, we add a change in time,
delta t, each time we move on to the next array element. We then calculate
the new d based on the past position of the object, and compare it
to the new c*t. We draw the object at the location that best
fits the equation d = c*t.
Theorems and Optimizations
By simply iterating through the past position array for each point int he
scene, it was taking roughly one minute to draw one frame. Realizing this wasn't
acceptable performance, I decided to try to optimize the algorithm I used. First,
I realized that there was a unique position along the past position curve such
that the equation d = c*t is satisfied. This is due to teh fact that the viewer's
velocity is always less than c. In order for there to be more than one point
along the curve that satisfies the equation, an object would have to effectively
be in two places at once. As a thought experiment, let us assume that we want
to fire two arrows at a target, and for both of the arrows to hit the target
at the same time. If we fire the first arrow, we would have to run ahead of
the fired arrow, then fire another as it reaches us. This situation is impossible
when replacing the arrows with photons.
Once this realization was reached, it
remained only to speed up finding this one point along the past position array.
Since the best search algorithm for an ordered, finite set is a binary search,
I implemented it. In addition to not having to check and keep track of every
value in the array, the search time was cut to the order of O(log n) from O(n).
Considering a scene with over a million vertices, with each vertex having to
be calculated separately, the speed increase was immense. Indeed, SchpRel now
runs in real time on an average desktop PC.
Future Work
About the Name
"SchpRel" is used as the name of this RTICA for the sole reason
that it is easier to pronounce than is "Sprel". Try it. Sounds like you just
developed a speech impediment, doesn't it?
Content by
Mark Flider.