Content uploaded by Sebastian Boblest

Author content

All content in this area was uploaded by Sebastian Boblest on Oct 27, 2014

Content may be subject to copyright.

Visual appearance of wireframe objects in special

relativity

Thomas M¨uller

Visualisierungsinstitut der Universit¨at Stuttgart (VISUS)

Allmandring 19, 70569 Stuttgart, Germany

E-mail: Thomas.Mueller@vis.uni-stuttgart.de

Sebastian Boblest

Visualisierungsinstitut der Universit¨at Stuttgart (VISUS)

Allmandring 19, 70569 Stuttgart, Germany

E-mail: Sebastian.Boblest@vis.uni-stuttgart.de

Abstract. The visual appearance of a moving object in special relativity can

be constructed in a straightforward manner when representing the surface of the

object, or at least a wire frame model of it, as a point cloud. The apparent

position of each individual point is then found by intersecting its worldline with

the observer’s backward light cone. In this paper, we present a complete derivation

of the apparent position of a point and some more complex geometric objects

for general parameter settings (conﬁgurations). We implemented our results in

python and asymptote and used these tools to generate scripts that create the

ﬁgures in this paper. These scripts are directly applicable in an undergraduate

course to special relativity and can also serve as the basis for student projects

with the aim to study more complex sceneries.

PACS numbers: 03.30.+p, 95.75.Pq

1. Introduction

The strange visual appearance of objects moving with a velocity close to the speed

of light relative to an observer is one of the puzzling predictions of Einstein’s special

theory of relativity [1] and was studied already by Lampa [2] in 1924. Unfortunately,

Lampa’s discussion of the apparent shape of a moving rod was not recognized for a

long time and even the famous physicist Gamow gave an incorrect conclusion about

the visual appearance of a moving wheel in his book “Mr. Tompkins in Wonderland”

(edition 1940) [3]. In 1959, Terrell [4] pointed out that the Lorentz contraction is not

visible to an observer, a direction that was similarly pursued by Weinstein [5], while

Penrose [6] proved that a relativistically moving sphere always has a circular outline,

a problem that was again considered by Boas [7]. However, the visual appearance of

relativistically moving objects is one of the consequences of special relativity, where

an intuitive understanding is hard to reach by performing calculations alone. The ﬁeld

of relativistic visualization bridges this gap between mathematical results and human

imagination.

arXiv:1410.4583v1 [physics.comp-ph] 14 Oct 2014

Visual appearance of wireframe objects in special relativity 2

The rapid increase in computer power and the emergence of very powerful graphics

hardware made the development of several sophisticated techniques possible that are

capable of generating high quality imagery of special and general relativistic scenarios.

The most natural of these methods is relativistic ray tracing, where the physical

propagation of light is being reversed and the ﬁnite speed of light is taken into account,

see for example Hsiung and Dunn [8], Weiskopf [9], or M¨uller [10], amongst others.

As this rendering technique is generally very time consuming even on contemporary

computers, it is not used for interactive simulations showing the visual eﬀects of

relativity. A popular alternative method is to transform the polygonal mesh of an

object into the observer’s rest frame [11]. But, this polygon rendering technique

leads to image artefacts because only the vertices are transformed and the connecting

edges are still straight lines. Ray tracing and polygon rendering can be combined to

circumvent the respective disadvantages, however. For that, it is necessary to restrict

oneself to triangular meshes and make use of the high parallelism of graphics processing

units (GPUs) and the free programmability of the graphics pipeline. Details of this

local ray tracing technique are described in M¨uller et al. [12]. A recent survey of

visualization methods for special relativity was given by Weiskopf [13]. The reader

interested in a comprehensive overview is referred to that paper.

Among the ﬁrst visualization techniques employed in special relativity is to

consider the apparent shape of wireframe models as such images can be generated

also by hand. Various authors published work that uses this technique. Scott and

Viner [14] considered the appearance of plane grids and rectangular boxes, Scott and

van Driel [15] studied, among other things, the look of a sphere passing close to the

observer, however without giving a full description of the scenarios they looked at.

Hickey [16] considered the two-dimensional appearance of a relativistically moving

cube and Suﬀern [17] again discussed the outline of a relativistically moving sphere,

where he focused on a motion directed towards the observer. One of the ﬁrst interactive

computer simulations showing the apparent distortion eﬀect at relativistic velocities

is Visual Appearance by Taylor [18]. He also uses wireframe objects but does not give

any inside in how the visualization is accomplished and his program seems to suﬀer

from polygon rendering artefacts.

In this article, we as well concentrate on wireframes of objects. In contrast

to earlier work, we not only transform the complete edges in between the vertices

according to the Lorentz transformations and the ﬁnite speed of light so that we can

properly visualize how straight lines in general appear bent, but also include depth

information to emphasize the apparent shape. While it is clear that other methods

can easily create images of much higher quality, especially by using textures and

simple shading techniques, the wireframe method is still very powerful didactically.

On modern computers such visualizations can be created completely interactive and

students can create their own sceneries and study the eﬀects of special relativity in

these cases. In this article we give a general derivation of the apparent view of lines

and spheres. We allow for a free positioning of these objects in their reference frame,

of the observer in his frame, and of the spatial separation and relative speed of the

two frames with the only restriction that we assume the axes of the two frames to be

aligned. This allows to construct complex scenes on the one hand and to study how

diﬀerent observers perceive the same scenery on the other hand.

Our results are implemented in asymptote [19] and python scripts that we used to

create the ﬁgures in this paper but which, more importantly, may be used in courses

to special relativity or in student projects where other scenes could be constructed and

Visual appearance of wireframe objects in special relativity 3

studied. Our scripts can be downloaded from http://go.visus.uni-stuttgart.de/

srwireframe. With the python scripts, some scenes can also be animated.

The structure of this paper is as follows. In section 2 we recapitulate the Poincar´e

transformation that is the basis for all further calculations. In section 3 we give a

detailed mathematical derivation of the parametrized equations for the apparent view

of a single point, a rod, and a sphere. In section 4, we specialize to some descriptive

examples and compare our wireframe models with the corresponding rendered images

which follow from four-dimensional ray tracing. Appendix A gives some further

examples in forms of exercises.

2. Poincar´e Transformation

Consider two frames of reference Sand S0equipped with their individual coordinate

systems xµ= (x0, x1, x2, x3) = (ct, ~x) and x0µ= (x00, x01, x02, x03) = (ct0, ~x0),

respectively. The clocks of both frames are synchronized to x0=x00= 0 when the

origin of S0is located at ~a with respect to the origin of S, see ﬁgure 1. The coordinate

axis of both frames are aligned to each other and S0moves with constant velocity

~

βwith respect to S. We will refer to this setup as being the standard conﬁguration

in special relativity without rotations. Our observer will be at rest in the system S,

while the system S0is the rest frame for our sceneries.

Figure 1. The frame of reference S0is moving with constant velocity ~

βwith

respect to S. Both systems are synchronized to x0=x00= 0 when S0is located

at ~a with respect to S; and their axes are aligned.

The Poincar´e transformation between both frames is deﬁned by

xµ= Λµ

νx0ν+aµ,(1)

and the Lorentz matrix Λµνis given by

Λ0

0=γ, Λ0

i=γβi,Λi

0=γβi,Λi

j=δi

j+γ2

γ+ 1βiβj,(2)

where βiβi=βiβi=~

β·~

β < 1 and γ= 1/p1−βiβi, see e.g. Misner et al. [20],

and δi

jis the Kronecker-δ. We also use Einstein’s sum convention to sum over indices

that appear twice in the same term. The displacement four-vector reads aµ= (0,~a).

Visual appearance of wireframe objects in special relativity 4

Here and in the following, Greek indices run from 0 to 3, where the 0-th coordinate

represents time, and Latin indices go from 1 to 3.

The inverse of the Lorentz matrix ¯

Λ=Λ−1reads

¯

Λ0

0=γ, ¯

Λ0

i=−γβi,¯

Λi

0=−γβi,¯

Λi

j=δi

j+γ2

γ+ 1βiβj,(3)

which diﬀers from the initial Lorentz matrix only by the sign of the velocity ~

β. The

corresponding Poincar´e transformation reads x0µ=¯

Λµν(xν−aν).

3. Apparent view of an object

The ﬁnite speed of light is responsible for the fact that we do not see a moving object

where it actually is, but where it was when it sent the light that we now observe.

3.1. Apparent position of a point

In the simplest case, the object is just a point Pand its apparent position can be

determined by intersecting the point’s worldline x0

p, ~xp=~xp(x0

p)with the backward

light cone of the observer, who is static with respect to S,

0 = −x0−x0

obs2+

3

X

i=1 xi−xi

obs2.(4)

(For the rest of this paper, we drop the index pof the point.)

If Pis at rest with respect to the moving frame S0,~x0= const = ~x0

p, we have

to transform its worldline into Sby means of the Poincar´e transformation (1). Then,

equation (4) yields

0 = −Λ0

νx0ν−x0

obs2+δij Λi

νx0ν+ai−xi

obsΛj

µx0µ+aj−xj

obs(5)

=−Λ0

0x00+ Λ0

nx0n−x0

obs2

+δij Λi

0x00+ Λi

nx0n+ai−xi

obsΛj

0x00+ Λj

mx0m+aj−xj

obs.(6)

Here, the only unknown is x00which is the time when light must be emitted by the

point in order to reach the observer at time x0

obs. Solving the quadratic equation (6)

for x00and using the abbreviations

ρ=γ~

β·~x0−x0

obs, ~η =~x0+γ2

γ+ 1 ~

β·~x0~

β+~a −~xobs,(7)

ω2

0=γ2(~

β·~η −ρ)2−ρ2+~η ·~η, (8)

yields

x00=γ~

β·~η −ρ−ω0,(9)

~x =~x0+γx00+γ2

γ+ 1 ~

β·~x0~

β+~a =γx00~

β+~η +~xobs .(10)

Note that in these expressions the scalar product as usual is an abbreviation for

the sum over all products of the vector components, like for example, ~

β·~η =

β1η1+β2η2+β3η3. However, it must not be interpreted with respect to either

one of the reference frames Sor S0, respectively. Hence, it has to be taken by care

how to interpret the situation when the scalar product vanishes, ~

β·~η = 0. In general,

Visual appearance of wireframe objects in special relativity 5

it cannot be interpreted as both vectors being “perpendicular”, because some of them

are a mixture of vectors measured with respect to Sor S0.

Equations (9) and (10) simplify considerably if the point Pand the observer are in

the origin of their respective reference frames, i.e. ~x0=~

0 = ~xobs, and the displacement

vector ~a =~

0. Then,

x00=γ(1 ±β)x0

obs =s1±β

1∓βx0

obs =: Dβx0

obs and ~x =γx00~

β. (11)

While x0

obs <0, the point approaches the observer and we have to use the upper signs

in the square root factor Dβ. After Phas passed the observer, we have to use the

lower signs, respectively. Dβis also called Doppler factor and is responsible for a blue-

or red-shift if the spectrum of the light would be taken into consideration.

We could also accomplish the light cone intersection within the frame S0, where

the observer’s current position at their observation time x0

obs follows from the inverse

Poincar´e transformation, x0µ

obs = (Λ−1)µν(xν

obs −aν), see ﬁgure 2.

Figure 2. The intersection between the worldline of the point Pand the

backward light cone of the observer determines the event ~x0

p(x00

p), where Phas

to emit light that is seen by the observer at time x00

obs.

Then, the intersection of the light cone

0 = −x00−x00

obs2+

3

X

i=1 x0i−x0i

obs2(12)

with the static point Pimmediately yields

x00=x00

obs −∆(~x0, ~x0

obs),∆(~x0, ~x0

obs) := v

u

u

t

3

X

i=1 x0i−x0i

obs2.(13)

Visual appearance of wireframe objects in special relativity 6

The apparent position ~x follows from the back transformation by means of

equation (1). This second approach appears to be more straight, but it needs two

Poincar´e transformations.

With the above transformations at hand, we could determine the virtual shape

of any relativistically moving object by means of representing its surface by a cloud

of points. The resulting apparent positions make up the photo-object, which is the set

of all points where light is emitted from the object’s surface that reaches the observer

at the same time. This photo-object is what the observer or its camera will see.

However, the observer’s perception might diﬀer from what he sees and depends also

on the texture of an object; we will come to this point later in Sec. 4.4.

3.2. Apparent view of a line/rod

Instead of a single point, we now consider a straight line segment ~x0+s0~σ0,s0∈[s0

1, s0

2],

that is deﬁned by a speciﬁc reference point ~x0and a direction ~σ0with k~σ0k= 1 as

measured in S0. Replacing ~x0in equation (10) by ~x0+s0~σ0yields

~x (s0, ~σ 0) = γx00(s0, ~σ 0)~

β+~η +~xobs +s0~σ0+γ2s0

γ+ 1 ~

β·~σ0~

β, (14)

x00(s0, ~σ0) = γ~

β·~η −ρ−ωline(s0),(15)

where ρand ~η are the same abbreviations as in (7), and

ωline(s0)2=ω2

0+ 2s0υ+s02,(16)

υ=~µ ·~σ0,with ~µ =~η +~

β−γρ +γ2

γ+ 1 ~

β·~η,(17)

with ω0from equation (8). Each point of a line has to emit light at a diﬀerent time

such that it is being received by the observer at their observation time. Hence, the

apparent shape of the line will not be straight, in general. Details can be determined

using the Frenet-Serret frame along the line segment deﬁned by the tangent ~e1(s0),

the main normal ~e2(s0), and the binormal ~e3(s0) = ~e1(s0)×~e2(s0), where

~e1(s0) = d~x(s0)/ds0

kd~x(s0)/ds0k(18)

with derivative

d~x(s0)

ds0=−γs0+υ

ωline(s0)~

β+~σ0+γ2

γ+ 1 ~

β·~σ0~

β(19)

and corresponding norm

d~x(s0)

ds0

2

=γ2(s0+υ)2

ωline(s0)2β2−2γ2s0+υ

ωline(s0)~

β·~σ0+1+γ2~

β·~σ02

:= f(s0)2.(20)

Note that ~e1, ~e2, ~e3are parametrized by s0but are given with respect to the frame S.

As the Frenet-Serret frame is only valid for a curve parametrized by its arc

length, the main normal cannot be determined directly from the second derivative

of equation (14), but has to be calculated from the derivative of the tangent ~e1(s0).

Thus, ~e2(s0) = (d~e1/ds0)/kd~e1/ds0kwith

d~e1

ds0=−ωline(s0)2−(s0+υ)2

f(s0)3ωline(s0)3~

β−γ2s0+υ

ωline(s0)(~

β·~σ0) + γ+γ3

γ+ 1(~

β·~σ0)2

+~σ0γ2β2s0+υ

ωline(s0)−(~

β·~σ0).(21)

Visual appearance of wireframe objects in special relativity 7

The absolute value of (21) not only yields the normalization factor for the main normal

but it also yields the curvature of the curve, κ(s0) = kd~e1/ds0k, which is given by

κ(s0)2=ωline(s0)2−(s0+υ)2

f(s0)3ωline(s0)32

γ2 s0+υ

ωline(s0)2

γ2β2hβ2−(~

β·~σ0)2i(22)

−2γ2(~

β·~σ0)s0+υ

ωline(s0)hβ2−(~

β·~σ0)2i+hβ2+ (γ2−2)(~

β·~σ0)2−γ2(~

β·~σ0)4i.

The exact form of the binormal ~e3(s0) is of no interest here.

In the special case ~σ0k~

β, or ~

β=±β~σ0, respectively, the straight line points

in the direction of motion, and the curvature in this parallel case κk(s0)≡0 for all

s0∈R. Hence, such lines only change their apparent length but do not appear to be

bent, see also the example in Sec. 4.2.

If ~

β·~σ0= 0, the curvature, equation (22), simpliﬁes considerably. Then,

κ⊥(s0) = ωline (s0)2−(s0+υ)2

f(s0)2ωline(s0)3γβ (23)

with maximum given at s0

max =−υ=−~η ·~σ0. Thus, κ⊥

max =γβ/ωline(−υ). As to be

expected, the tangent and the main normal read ~e⊥

1(−υ) = ~σ0and ~e⊥

2(−υ) = −~

β/β,

respectively. The apparent line, equation (14), reduces to

~x⊥(s0, ~σ 0) = ~p −γωline(s0)~

β+s0~σ0(24)

with the reference point ~p =γ2[x0

obs +~

β·(~a−~xobs)]~

β+~η+~xobs. To show that ~x⊥(s0, ~σ0)

has the form of a hyperbola, the local coordinates (ζ, ξ) with respect to the coordinate

system spanned by ~

βand ~σ0are deﬁned. With ξ=~σ0·~x⊥=~σ0·~p +s0=ξ0+s0and

ζ=~

β/β ·~x⊥=~

β/β ·~p −γβωline(s0), the ansatz (ζ−ζ0)2/a2−(ξ−c)2/b2= 1 yields

1 = (ζ−ζ0)2

γ4β4/(κ⊥)2−(ξ−ξ0+υ)2

γ2β2/(κ⊥)2,(25)

where ζ0=γ2β[x0

obs +~

β·(~a −~xobs )] + γ(~

β·~x0) + ~a ·~

βand ξ0= (~x0+~a)·~σ0.

The osculating circle at the point of maximum curvature has radius (κ⊥)−1and

is centred at ~m =~x⊥(−υ , ~σ)+(κ⊥)−1~e⊥

2(−υ). The corresponding local coordinates

read ζm=ζ0−γ2(κ⊥)−1and ξm=~xobs ·~σ0.

3.3. Apparent view of a sphere

The surface of a sphere within the reference frame S0can be deﬁned by the central

point ~x0, the orthonormal basis vectors {~σ0

1, ~σ0

2, ~σ0

3}, the radius r0, and the spherical

coordinates ϑ0∈(0, π) and ϕ0∈[0,2π). An approach similar to the one for the line,

where ~x0is now replaced by ~x0+r0sin ϑ0cos ϕ0~σ0

1+r0sin ϑ0sin ϕ0~σ0

2+r0cos ϑ0~σ0

3=

~x0+P3

i=1 s0

i~σ0

iin equation (10), yields,

~x =γx00~

β+~η +~xobs +

3

X

i=1

s0

i~σ0

i+γ2

γ+ 1 3

X

i=1

s0

i~σ0

i·~

β!~

β, (26)

x00=γ~

β·~η −ρ−ωsph(s0

1, s0

2, s0

3),(27)

where

ωsph(s0

1, s0

2, s0

3)2=ω2

0+ 2~µ ·

3

X

i=1

s0

i~σ0

i+r02,(28)

Visual appearance of wireframe objects in special relativity 8

and ~µ is the same expression as in equation (17).

Equations (26) and (27) simplify considerably if the sphere’s center point ~x0, the

observer position ~xobs, and the system oﬀset ~a vanish identically. Additionally, the

basis vectors ~σ0

1,~σ0

2, and ~σ0

3are equal to the standard basis vectors ~e0

1= (1,0,0)T,

~e0

2= (0,1,0)T, and ~e0

3= (0,0,1)T, and the velocity ~

β= (β, 0,0)Thas only a non-

vanishing component in the x1-direction. Then,

ω2

sph =γ2β2x0

obs2+ 2γx0

obsβr0sin ϑ0cos ϕ0+r02,(29)

x1=γγx0

obs −ωsphβ+γr0sin ϑ0cos ϕ0,(30)

x2=r0sin ϑ0sin ϕ0,(31)

x3=r0cos ϕ0.(32)

As expected, the x2- and x3-components are not inﬂuenced, because the sphere

only moves along the x1-direction and the other parameters are like in the standard

literature.

The silhouette of a sphere always appears to be circular irrespective of the sphere’s

motion, as shown already by others. We give a short sketch in Appendix B of how

this could be proven.

4. Examples

In the following, we will present some typical examples. All of them can be reproduced

by the accompanying asymptote and python scripts. We also compare the wireframe

representations with the corresponding images rendered using the four-dimensional

ray tracing code GeoViS [10]. The great advantage of the python scripts is the

possibility to animate the scenes without delay while ray tracing codes might take

several minutes to render an image sequence which has to be concatenated into a ﬁlm

afterwards. Besides the script names mentioned in the ﬁgure captions, we use the

common script sr apparent that contains the calculation of the apparent positions

discussed in the previous sections. Note that script names without ﬁle ending are valid

for asymptote as well as python.

4.1. Eye or camera transformation

In section 3, we deduced the apparent position of a single point, a point on a line,

or a point on a sphere. This apparent position is the position in space where light

has to be emitted by the point in order to reach the observer at their observation

time. The next step is to map the apparent position of the point into the eye or the

camera of the observer which we both represent by a pinhole camera. For that, we ﬁrst

transform the apparent position into the camera’s standard reference frame by means

of the View matrix. Then, the Projection matrix emulates the perspective projection

of the pinhole camera. The View and Projection matrices are deﬁned in sr camera,

see also Appendix C. For further details, we refer the reader to the standard literature

of computer graphics like, e.g., Foley [21] or Shirley et al. [22].

4.2. Apparent view of a line/rod oriented along its direction of motion

The most fundamental object besides a point is a straight line or rod. If the rod’s

orientation is alongside its direction of motion, then equations (14) and (15) can be

Visual appearance of wireframe objects in special relativity 9

simpliﬁed. Thus, with ~

β=β~σ0,~a =~

0, ~x0=~

0 and s0∈[−l0/2, l0/2], we obtain

~x(s0, ~σ 0) = γx00(s0, ~σ0)β+s0~σ0,(33)

x00(s0, ~σ0) = γ−β~σ0·~xobs +x0

obs−ωline (s0),(34)

ωline(s0)2=γ2−β~σ0·~xobs +x0

obs2−x0

obs2+k~xobsk2+ 2s0υ+s02,(35)

υ=γβx0

obs −~σ ·~xobs .(36)

If additionally ~xobs =~

0, the direction ~σ0is insigniﬁcant, and the rod can only move

towards or away from the observer. Then, the apparent length l2

ap =k~x(l0/2, ~σ 0)−

~x(−l0/2, ~σ 0)k2of the rod is given by

l±

ap =γl0(1 ±β),(37)

where the upper (lower) sign represents the approaching (receding) rod. This is also

true for the slightly more general case ~xobs =ξ~σ. The Minkowski diagram, ﬁgure 3(a),

depicts this situation. At observation event O1, the apparent length of the approaching

rod is determined by the x1-coordinates of the events P1land P1r. Thus, for β= 0.5,

we obtain l+

ap ≈1.732 l0. At O2, the rod recedes from the observer and has an

apparent length l−

ap ≈0.577 l0. The length lm, measured by two observers who are

x1

x0

1

1

x′1

x′0

l′

W1W2

O1

O2

P1l

P1r

P2l

P2r

(a) Minkowski diagram, β= 0.5

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

velocity β

length

l−

ap

l+

ap

lm

(b) Length depending on β

Figure 3. (a) A rod of length l0= 1 with respect to S0is oriented along its

direction of motion ~

β=β~σ0, where ~σ0points in the positive x1-direction of S. In

this Minkowski diagram, the projections of the green lines onto the x-axis yield

the apparent lengths of the rod. (b) Apparent length l±

ap of the approaching (red)

and the receding (blue) rod. The green line represents the measured length lm.

in synchronicity with respect to S, follows from the Lorentz-Fitzgerald contraction

equation: lm=l0/γ. Thus, a rod which approaches the observer always appears

longer than it actually is. A receding rod, however, appears to be even shorter than

its measured length with respect to S. Figure 3(b) shows the apparent lengths l±

ap and

the measured length lmboth as functions of the velocity β.

Strictly speaking, if a line (rod) is oriented alongside its direction of motion, only

a point (the tip) is visible. Even if the line or rod is slightly oﬀ-axis, the perspective

projection has to be taken into account which prevents the observer from seeing the

calculated apparent lengths.

Visual appearance of wireframe objects in special relativity 10

4.3. Apparent view of a die

Consider a row of 8 dice with edge length l= 0.5 at rest in the reference frame S.

The centre of the n-th die is located at ~xn= (0,−10 + n·2,−0.75)T,n= 0,...,7.

Another die of the same size is at rest in the centre of the reference frame S0, while

the frame S0itself moves with velocity ~

β= (0,0.9,0)T. An observer located at ~xobs

looking into the direction of the origin of Swill see the row of dice and the moving

die as shown in ﬁgure 4.

(a) Rendered, ~xobs = (14.422,0,2)T

34567

(b) Wireframe model, ~xobs = (14.422,0,2)T

(c) Rendered, ~xobs = (8,12,2)T

0123

4

5

6

7

(d) Wireframe model, ~xobs = (8,12,2)T

Figure 4. Apparent view of a die with edge length l0= 0.5 and velocity

~

β= (0,0.9,0)Tmoving above a row of static dice. The observer’s pinhole camera

has 32◦×16◦ﬁeld of view. The front edges of all die are coloured red to

make their orientations easier to recognize. The observation times are x0

obs =

{14.012,15.1,16.12}. In the top row, the observer is at ~xobs = (14.422,0,2)T.

In the bottom row the observer has the same distance to the x3-axis but she is

located at ~xobs = (8,12,2)T, i.e. by an angle ϕ= 56.3◦shifted away from the

x1-axis. (Script: appDie, animDie.py).

Although the observation times for the moving die are equal in ﬁgure 4, the

apparent positions diﬀer dependent on the position of the observer. If she looks

perpendicular to the row of dice, the light travel times are nearly the same. But that

is no longer true if the observer has a tilted view to the row. Light from the rearmost

position needs much more time than from a closer position. Hence, the distances

between the apparent positions are longer.

4.4. Apparent view of a circle/ball

Penrose [6] has already shown in 1959 that the apparent shape of a relativistically

moving sphere is again a sphere. However, the shape of the photo-object of the sphere

is more similar to an ellipsoid, see ﬁgure 5. Hence, the observer will “see” an ellipse but

the projection on his plane of sight leads to a circular outline and his brain therefore

interprets it as a rotated sphere.

Visual appearance of wireframe objects in special relativity 11

observer

x1

x2

x0

obs = 3.0x0

obs = 6.0

fov

x0

obs = 10.0x0

obs = 25.0

Figure 5. Apparent shapes (red) of a moving circle for an observer located at

~xobs = (0,−10,−1)T, an oﬀset ~a =~

0, a velocity ~

β= (0.9,0,0)T, and observation

times x0

obs. The central point of the circle (black dot) is at ~x0= (0,0,0)Twith

respect to S0. The grey-dashed disks represent a row of static circles. (Script:

appCircle, animCircle.py)

In order to follow the apparent image of a moving circle/ball, the camera has

to point in the direction of the apparent position of the circle’s/ball’s centre ~x0=~

0.

In the standard conﬁguration, ~a =~

0, ~xobs = (0,−yobs,0)T,~

β= (β, 0,0)T, we have

ρ=−x0

obs and ~η =−~xobs . Thus, the camera has to follow the apparent point ~xc,

~xc=γβx00,with x00=γ x0

obs −qγ2β2(x0

obs)2+y2

obs.(38)

Figure 6 shows a ball moving along the x1-axis in positive direction above a row

of static balls where the axes of all of them point in the same direction. The image

rendered using GeoViS demonstrates clearly that the moving ball still appears as a

ball but appears to be rotated only. If we visualize this situation with our standard

wireframe model, we lose the spatial impression because the lines on the front and

on the back of the sphere intersect on the plane of sight, resulting in a “cluttered”

impression. This of course is an intrinsic property of our wireframe models. However,

the transformation into the plane of view using the view and projection matrices

preserves depth information in the ˆp3-component of the projected point, see Appendix

C for a short discussion. We use this information to draw lines closer to the observer

thicker and with stronger colours than lines further away. In fact, this can even help us

to extract information that is not perceivable in the rendered images, namely that the

right pole of the moving sphere is the part closest to the observer as we can already see

in ﬁgure 5. This can nicely be seen in ﬁgure 6(b) while it is not visible in the rendered

image 6(a). However, the scripts that produce these ﬁgures are signiﬁcantly more

complicated, as we have to subdivide the picture in small line segments, sort them

with respect to their depth value and draw them in depth-ascending order. Therefore,

we also include simpler scripts that do not use depth information but which might be

easier to read.

4.5. Apparent view for close encounters

In our previous examples the distortion eﬀects due to the ﬁnite speed of light are

relatively small, because the distance of the observer to the objects is large in

Visual appearance of wireframe objects in special relativity 12

(a) Rendered (b) Wireframe model

Figure 6. A chequered ball of radius r0= 1 moves with β= 0.95 along the

x1-axis in positive direction. The lower balls are static and are positioned at

~xn= (−17.5 + n·2.5,0,−2.2)T,n={4,5,6}. The observer is located at

~xobs = (0,−10,−1)T. The camera’s ﬁeld of view is 40◦×30◦. The inclusion

of depth information in the wireframe picture reveals that the region around the

moving sphere’s right pole is closest to the observer as can also be seen from

ﬁgure 5 but which is hardly visible in the rendered image. (Scripts: appSphere

and appSphereZ.asy with depth information)

comparison to their size. If the observer’s distance is comparable to the object’s scale,

the time of ﬂight for light rays originating from diﬀerent locations on the object’s

surface varies strongly. Hence, the observer sees diﬀerent regions of the object at very

diﬀerent times and therefore locations and so the object appears strongly distorted.

4.5.1. Apparent view of a line/rod oriented perpendicular to its direction of motion

We again start with the discussion of a moving rod, but contrary to section 4.2 we

now assume it to be aligned perpendicularly to its direction of motion. In this case,

the apparent view becomes more interesting. Let ~xobs =~a =~

0 = ~x0,~

β= (β, 0,0)T,

and ~σ0= (0,1,0)T. Then, ~

β·~σ0= 0, ρ=−x0

obs,~η =~

0, and υ= 0. Furthermore,

ωline(s0)2=γ2β2(x0

obs)2+s02.

As already discussed in section 3.2, the perpendicularly oriented line appears as

a hyperbola which can be described by the implicit equation

1 = (x1−γ2βx0

obs)2

γ4β4(x0

obs)2−(x2)2

γ2β2(x0

obs)2.(39)

The apex resides on the x1-axis with curvature κ⊥(s0= 0) = 1/x0

obs, see equation (23).

The centre of the osculating circle has coordinates x1=γ2(βx0

obs − |x0

obs|) and x2= 0,

see ﬁgure 7. At x0

obs = 0, the hyperbola degenerates to a corner. As light rays

originating from points close to the middle of the rod take much less time to reach the

observer than those from its outer parts, the observer sees the outer parts at earlier

times and, hence, at larger distances than the centre and the rod appears to be bent.

Figure 8 illustrates this situation for a rod moving with β= 0.75. At observation time

x0

obs =−0.5, were x0

obs = 0 is deﬁned as the time when the rod reaches the observer, the

moving rod is already very close to the observer, but the light rays from its outer parts

left its surface as early as approximately x0

obs =−3.0 and therefore the observer gets

Visual appearance of wireframe objects in special relativity 13

x1

x2

x0

obs =−1.0−0.5−0.1 0.5 1.0 3.0

Figure 7. A rod of length l0= 4 is oriented perpendicularly to its direction of

motion, ~

β·~σ0= 0. Here, β= 0.75. The observer is located at ~xobs =~

0 and ~a =~

0.

The osculating circle has radius (κ⊥)−1=|x0

obs|. (Script: appRod, animRod.py)

x1

x2

x0

obs =−0.5

observer

Figure 8. Photo-object for a rod with length l0= 4 moving with β= 0.75

towards the observer. At observation time x0

obs =−0.5, the observer receives

light rays from the outer parts of the rod that started already at approximately

x0

obs =−3.0. (Script: appRodLight.asy, animRodLight.py)

the impression that the rod is still quite far away. Figure 9 shows a moving rod which is

described by a cuboid with lower left corner ~c0

ll = (−0.1,−1.0,−0.1)Tand upper right

corner ~c0

ur = (0.1,1.0,0.1)T. The longitudinal direction is oriented along the x2-axis

and the rod moves along the positive x1-direction. In ﬁgure 9(a) we show an example

of polygon rendering, where only the rod’s vertices are transformed to their apparent

positions. This technique obviously is insuﬃcient to correctly visualize situations

where strong distortions appear, because the edges connecting the vertices remain

straight lines, for a more detailed discussion see [12]. Figures 9(b) and 9(c) compare

Visual appearance of wireframe objects in special relativity 14

the results of the four-dimensional ray tracing with GeoViS and of our wireframe

model asymptote script. As we transform the entire edges and not just the vertices,

their hyperbolic shape becomes apparent.

(a) Polygon rendering

(b) Rendered (c) Wireframe model

Figure 9. A rod moves with β= 0.9 along the positive x1-direction. The

observation time is given by x0

obs =−0.104 and the observer looks along the

negative x1-direction. The front edges of the rod are coloured red to make its

orientation easier to recognize. (Script: appRodView, animRodView.py)

4.5.2. Sphere and Cube in close ﬂy by We conclude our examples with a comparison

of a cube and a sphere at rest with their moving counterparts closely passing the

observer, see ﬁgures 10 and 11.

In both cases the scene is chosen such that the apparent centre of the moving

object coincides with the centre of the static object. Contrary to the rod example,

these cases are not symmetric because the objects are not moving towards the observer.

In the cube example, the diﬀerent appearances of lines oriented perpendicularly

or parallely to their direction of motion becomes quite apparent. The upper and lower

edges of the cube are oriented almost parallely to the direction of motion and hence

appear straight. On the other hand the edges of the back and the front are oriented

almost perpendicularly to the direction of motion and appear bent. This eﬀect is

much stronger for the front of the cube than for its back, because these edges are close

to the observer and the ﬂight times for the light rays from diﬀerent points on these

edges diﬀer more strongly.

The sphere example clearly shows that the sphere retains its circular shape while

its surface is strongly distorted, in accordance with the results by Penrose [6]. However,

it appears larger than the sphere at rest, see also ﬁgure 12. Please note again that

the centres of the moving sphere and the one at rest coincide so this is indeed a, well-

known, relativistic eﬀect. This example also again impressively demonstrates, how we

can enhance the visual impression by including depth information.

Visual appearance of wireframe objects in special relativity 15

(a) Cube at rest (b) Cube with β= 0.9

(c) Cube at rest (d) Cube with β= 0.9

Figure 10. Apparent distortion of a cube with edge length l0= 0.5 in close ﬂy

by. The camera has a ﬁeld of view of 32◦×32◦. The observer is at position

~xobs = (0.5,2,0.05)T, i.e. at a distance d= 1.5 to the x3-axis, and the cube

moves along the positive x2-direction. (Script: appCube)

5. Summary

In this article we derived general equations that describe the apparent view of

relativistically moving points, lines, and spheres. We implemented our results in

asymptote and python scripts and generated some exemplary scenes of wireframe

objects and compared our results for these cases with images created with a four-

dimensional ray tracer. We showed that by taking into account the depth information,

our wireframe ﬁgures can provide a realistic impression of the special relativistic

Visual appearance of wireframe objects in special relativity 16

(a) Sphere at rest (b) Sphere with β= 0.9

(c) Sphere at rest (d) Sphere with β= 0.9

Figure 11. Apparent distortion of a sphere with radius r0= 0.5 in close ﬂy

by. The camera has a ﬁeld of view of 50◦×50◦. The observer is at position

~xobs = (0.5,2,0.05)T, i.e. at a distance d= 1.5 to the x3-axis, and the

sphere moves along the positive x2-direction. (Scripts: appSphereSingle and

appSphereSingleZ.asy with depth information)

distortion eﬀects. The tools that we created are very ﬂexible and may be used to

study other scenes, while the examples that we created can already serve as an aid in

teaching of the visual appearance of relativistically moving objects.

Visual appearance of wireframe objects in special relativity 17

x2

x1~xobs

~x

α′

α

Figure 12. Two-dimensional analog of ﬁgure 11. The angular size α0of the

apparent sphere, represented by the red photo-object, is greater than the angular

size αof the static sphere (gray disk) at the apparent position of the sphere’s

centre, here ~x =~

0.

Appendix A. Further examples

In the following, we will give some additional examples that could be used directly in

the classroom either for demonstration purposes or as exercises.

Exercise 1: Given a rod of length l0= 4 which moves perpendicularly to

its orientation towards an observer, see Figs. 7 and 8. Play around with

the velocity βand explain why the rod appears to be bent stronger the faster

it moves.

Result: When the velocity of the rod comes ever closer to the speed of

light, the light travel times from the diﬀerent positions of the rod to the

observer become more and more diverse. Thus, light from the top of the

rod has to start ever earlier than light from the center of the rod in order to

reach the observer at the same time which results in an increasing bending

of the rod.

Conﬁgure ﬁle: demoRodLight.py

Exercise 2: Given a sphere of radius r0= 0.5moving along the positive

x1-direction with velocity β. The observer is located at ~xobs = (0,−100,0)T

and looks along the x2-axis, compare Fig. 5. At ﬁxed observation time

x0

obs = 100, he will see that the sphere is apparently rotated in its direction

of motion. Determine the relation between the sphere’s velocity βand the

apparent rotation angle α.

Result: For β= 0, the axis/pole of the sphere points towards the observer.

With increasing velocity, the sphere appears to be rotated by an angle

α= arctan(βγ). (Terrell [4] uses the complementary angle.) The angle α

can be read from the image generated by the script. Given the distance d

of the pole to the center of the sphere and the radius r, both in relative

units or pixels, the angle reads α= arcsin(d/r).

Conﬁgure ﬁle: demoSphere.py

Visual appearance of wireframe objects in special relativity 18

Exercise 3: Analogous to Fig. 4(d), a die moves with β= 0.9above

a row of static dice. Here, we ﬁx the observation times to x0

obs =

{13.422,14.422,15.422}and let the observer rotate around the point of

interest (0,0,2)Ton the circle ~xobs = (robs cos ϕ, robs sin ϕ, 2.0)Twith

robs = 14.422 and 0≤ϕ≤2π. Explain why the distances between the

apparent positions of the moving die for the diﬀerent observation times

depend on the angle of observation ϕ. What happens if βis changed?

Result: The observation time x0

obs = 14.422 is chosen such that the

apparent position of the die keeps its position irrespective of the observation

angle ϕas long as robs = 14.422. If ϕ=π/2 or ϕ= 3π/2, the observer looks

along the row of dice towards the approaching or receding die, respectively.

Then, the ﬁnite speed of light has strong inﬂuence on where the moving

die appears. This can be most easily understood by means of a Minkowski

diagram, see Fig. A1 for a similar situation with only a point-like object. If

ϕ= 0 or ϕ=π, light travel times from the current positions of the moving

die to the observer are nearly the same. Hence, the distances between the

apparent positions approximately reﬂect the actual distances between the

current positions for the diﬀerent observation times.

x1

x0

O1

O2

W

x0

c

x0

b

x0

a

A1c

A1b

A1a

A2c

A2b

A2a

Figure A1. A point-like object, e.g. the center of the die, moves with β= 0.75 in

the positive x1-direction, here indicated by the gray worldline Win the Minkowski

diagram. The observation times for the static observers O1and O2are the

same, x0

a< x0

b< x0

c. The dashed lines represent parts of the backward light

cones for the corresponding observers and observation times. The distances

between the apparent positions A1ifor the approaching point are bigger than

the distances of the apparent positions A2ifor the receding point; for example

|x1(A1a)−x1(A1b)|>|x1(A2a)−x1(A2b)|

Conﬁgure ﬁle: demoDie.py

Visual appearance of wireframe objects in special relativity 19

Appendix B. Circular silhouette of a moving sphere

As proven already by several authors, see for example Penrose [6] or Boas [7], the

silhouette of a relativistically moving sphere keeps circular irrespective of its velocity.

To show this circular silhouette for our general standard conﬁguration, we could follow

two approaches.

Appendix B.1. Straightforward calculation

The straightforward approach works as follows. First, we determine the normal vector

~n at each apparent point ~x which is given by the cross product between the derivatives

of ~x with respect to ϑ0and ϕ0, respectively,

~n =∂~x

∂ϑ0×∂~x

∂ϕ0.(B.1)

For that, we need the derivatives

∂x00

∂ϑ0=−∂ωsph

∂ϑ0,∂x00

∂ϕ0=−∂ωsph

∂ϕ0,∂~µ

∂ϑ0=∂~µ

∂ϕ0=~

0,(B.2)

where

∂ωsph

∂ϑ0=1

ωsph

~µ ·

3

X

i=1

∂s0

i

∂ϑ0~σ0

iand ∂ωsph

∂ϕ0=1

ωsph

~µ ·

3

X

i=1

∂s0

i

∂ϕ0~σ0

i.(B.3)

Therefrom, we obtain

∂~x

∂ϑ0="3

X

i=1

∂s0

i

∂ϑ0~σ0

i·−γ

ωsph

~µ +γ2

γ+ 1 ~

β#~

β+

3

X

i=1

∂s0

i

∂ϑ0~σ0

i,(B.4)

∂~x

∂ϕ0="3

X

i=1

∂s0

i

∂ϕ0~σ0

i·−γ

ωsph

~µ +γ2

γ+ 1 ~

β#~

β+

3

X

i=1

∂s0

i

∂ϕ0~σ0

i.(B.5)

When building the cross product of (B.4) and (B.5), we can make use of ~

β×~

β=~

0

and the orthonormality of the basis vectors, ~σ0

i×~σ0

j=ijk ~σ0

kwith the totally anti-

symmetric Levi-Civita symbol ijk . Hence, we obtain

~n =

3

X

i=1

hi(ϑ0, ϕ0)~

β×~σ0

i+

3

X

i,j,k=1

∂s0

i

∂ϑ0

∂s0

j

∂ϕ0ij k~σ0

k(B.6)

with the abbreviation

hi(ϑ0, ϕ0) =

3

X

j=1 ∂s0

j

∂ϑ0

∂s0

i

∂ϕ0−∂s0

j

∂ϕ0

∂s0

i

∂ϑ0~σ0

j·−γ

ωsph

~µ +γ2

γ+ 1 ~

β(B.7)

By means of the normal vector, we can construct the equation for the tangent plane

~n ·(~x −~y) = 0, where the apparent point ~x is the reference point of the plane. The

arbitrary positional vector ~y has to be replaced by the observer position ~xobs. The

resulting implicit equation for ϑ0and ϕ0deﬁnes the silhouette of the photo-object

which has to lie on a right circular cone with apex at the observer.

Visual appearance of wireframe objects in special relativity 20

~x′

~x′

obs

x′1

x′2

~σ′

1

~σ′

3

α′

R′

r′

~

t′

1

Figure B1. Tangent cone (blue lines) with apex angle α0of a sphere with radius

r0and centre point ~x0. The basis vector ~σ0

2points into the plane of projection.

Appendix B.2. Boas strategy

Another possibility to prove the circular silhouette of a moving sphere starts from

within the moving frame S0where the sphere is at rest, see also Boas [7]. For that,

we ﬁrst have to transform the observer via the inverse Poincar´e transformation from

Sinto S0,x0µ

obs =¯

Λµν(xν

obs −aν).

In S0, the parameters of the cone tangential to the sphere can be easily determined

(see ﬁgure B1 for a two-dimensional equivalent),

~

d0=~x0−~x0

obs,sin α0=r0

k~

d0k, R0=r0cos α0,(B.8)

where ~

d0is the cone axis, α0the apex angle, and R0is the radius of the contact ring.

As the orientation of the sphere has no inﬂuence, we can set the basis vectors ~σ0

1,~σ0

2,

and ~σ0

3as shown in ﬁgure B1. Then, the contact ring ~x0

c(ψ0) = ~x0

obs +~

k0(ψ0) can be

parametrized by the angle ψ0and

~

k0(ψ0) = r0cos α0

tan α0~σ0

1+R0cos ψ0~σ0

2+R0sin ψ0~σ0

3.(B.9)

Now, the time x00(ψ0) when the point ~x0(ψ0) has to emit light that reaches the observer

at x00

obs follows from equation (13),

x00(ψ0) = x00

obs −∆ (~x0(ψ0), ~x0

obs) = x00

obs − k~

d0kcos α0.(B.10)

From that, we can determine the contact ring ~xc(ψ0) with respect to Svia the Poincar´e

transformation (1),

~xc(ψ0) = γx00

obs − k~

d0kcos α0~

β+~x0

obs+~

k0(ψ0)+ γ2

γ+ 1 h~

β·~x0

obs +~

k0(ψ0)i~

β+~a.(B.11)

Again, ~xc(ψ0) has to lie on a right circular cone with apex at the observer.

Visual appearance of wireframe objects in special relativity 21

Appendix C. View- and perspective projection

The reference frame {~ex, ~ey, ~ez}of the pinhole camera is deﬁned by the eye point,

which corresponds to the observer’s position ~xobs , the point-of-interest ~p, and a

preliminary up-vector ~u. Please note that the pinhole camera looks along the negative

~ezdirection, which is deﬁned by ~ez=−(~p −~xobs)/k~p −~xobsk. The right-axis is given

by ~ex=~u ×~ez/k~u ×~ezk, and ﬁnally the corrected up-vector follows from ~ey=~ez×~ex.

Thus, the View matrix , which maps a point into the reference frame of the camera,

reads

=

e1

xe2

xe3

x−x1

obs

e1

ye2

ye3

y−x2

obs

e1

ze2

ze3

z−x3

obs

0 0 0 1

.(C.1)

The perspective projection emulating the view of a pinhole camera is described by the

Projection matrix

=

1

acot fovy

20 0 0

0 cot fovy

20 0

0 0 −f+n

f−n−2fn

f−n

0 0 −1 0

(C.2)

with aspect ratio a, near clipping plane n, far clipping plane f, and vertical ﬁeld of

view fovy. Note that, for these matrices, we need homogeneous coordinates (x, y , z, w)

and the calculations are done in projective space. Then, for our purpose, mapping a

point p= (p1, p2, p3) from world space onto the camera’s view plane works as follows.

Append the homogeneous coordinate w= 1 to the point and determine the matrix-

matrix-vector multiplication

ˆp =pwith p= (p1, p2, p3,1)T(C.3)

resulting in the projected point ˆp. The perspective division ˆp 7→ (ˆp1,ˆp2,ˆp3)/ˆpwyields

the view plane coordinates vx= ˆp1/ˆpwand vy= ˆp2/ˆpwwith vx, vy∈(−1,1). The

coordinate vz= ˆp3/ˆpwincorporates depth information of the point.

References

[1] A. Einstein. Zur Elektrodynamik bewegter K¨orper. Annalen der Physik, 17:891–921, 1905.

[2] A. Lampa. Wie erscheint nach der Relativit¨atstheorie ein bewegter Stab einem ruhenden

Beobachter? Zeitschrift f¨ur Physik, 27:138–148, 1924.

[3] G. Gamow. Mr. Tompkins in Wonderland. Cambridge University Press, 1940.

[4] J. Terrell. Invisibility of the Lorentz contraction. Phys. Rev., 116:1041–1045, 1959.

[5] R. Weinstein. Observation of Length by a Single Observer. Am. J. Phys., 28:607–610, 1960.

[6] R. Penrose. The apparent shape of a relativistically moving sphere. Mathematical Proceedings

of the Cambridge Philosophical Society, 55:137–139, 1959.

[7] Mary L. Boas. Apparent Shape of Large Ob jects at Relativistic Speeds. Am. J. Phys., 29:283–

286, 1961.

[8] P.-K. Hsiung and R.H.P. Dunn. Visualizing Relativistic Eﬀects in Spacetime. In Proc.

Supercomputing Conf. 89, pages 597–606, 1989.

[9] D. Weiskopf. Visualization of Four-Dimensional Spacetimes. PhD thesis, Eberhard-Karls-

Universit¨at T¨ubingen, 2001.

[10] T. M¨uller. GeoViS – Relativistic ray tracing in four-dimensional spacetimes. Comput. Phys.

Commun., 185:2301–2308, 2014.

Visual appearance of wireframe objects in special relativity 22

[11] The ﬁrst-person game prototype “A Slower Speed of Light” based on the OpenRelativity

toolkit, http://gamelab.mit.edu/research/openrelativity, developed by the MIT Game

lab uses polygon rendering to account for the apparent geometric distortions, see http:

//gamelab.mit.edu/games/a-slower- speed-of-light.

[12] T. M¨uller, S. Grottel, and D. Weiskopf. Special Relativistic Visualization by Local Ray Tracing.

IEEE Transactions on Visualization and Computer Graphics, 16:1243–1250, 2010.

[13] D. Weiskopf. A survey of visualization methods for special relativity. In Hans Hagen, editor,

Scientiﬁc Visualization: Advanced Concepts, volume 1 of Dagstuhl Follow-Ups, pages 289–

302. Schloss Dagstuhl–Leibniz-Zentrum f¨ur Informatik, Germany, 2010.

[14] G. D. Scott and M. R. Viner. The Geometrical Appearance of Large Objects Moving at

Relativistic Speeds. Am. J. Phys., 33:534–536, 1965.

[15] G. D. Scott and H. J. van Driel. Geometrical Appearances at Relativistic Speeds. Am. J. Phys.,

38:971–977, 1970.

[16] F. R. Hickey. Two-dimensional appearance of a relativistic cube. Am. J. Phys., 47:711–714,

1979.

[17] K. G. Suﬀern. The apparent shape of a rapidly moving sphere. Am. J. Phys., 56:729–733, 1988.

[18] E. F. Taylor. Space-time software: Computer graphics utilities in special relativity.

Am. J. Phys., 57:508–514, 1989.

[19] Asymptote is a powerful descriptive vector graphics language that provides a natural coordinate-

based framework for technical drawing, http://asymptote.sourceforge.net.

[20] C. W. Misner, K. S. Thorne, and J. A. Wheeler. Gravitation. W. H. Freeman, New York, 1973.

[21] J.D. Foley. Computer Graphics: Principles and Practice. Addison-Wesley, 1996.

[22] P. Shirley, M. Ashikhmin, and S. Marschner. Fundamentals of Computer Graphics. Ak Peters

Series. Taylor & Francis, 2009.