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.