Interactive simulations & visualizations

Visualizing the beauty in physics and mathematics


Project maintained by zhendrikse Hosted on GitHub Pages — Theme by mattgraham

A comet moving in Schwarzschild space-time


Source   JavaScript   Three.js  

🎯 Visualization of space-time curvature

Click to start the animation!
33

🧠 Original idea and code by M. Ryston (Department of Physics Education)
📌 Described in Interactive animations as a tool in teaching general relativity […]
📌 See also Spacetime Embedding Diagrams for Black Holes
👉 The closer to the sun, the greater the difference between red and orange!

Theoretical background


Flamm’s paraboloid


The Schwarzschild metric describes a gravitational field of a non-rotating spherical mass (and without electric charge), see Wikipedia:

\[\begin{equation} ds^2=cd\tau^2=\left(1-\dfrac{r_s}{r}\right)c^2dt^2-\left(1-\dfrac{r_s}{r}\right)^{-1}dr^2-r^2d\Omega^2 \end{equation}\]

where

\[\begin{equation} d\Omega^2=\left(d\theta^2 + \sin^2\theta d\phi^2\right) \text{, } r_s=\dfrac{2GM}{c^2} \end{equation}\]

and $G$ is Newton’s gravitational constant, $c$ the speed of light and $M$ is the mass of the non-rotating spherical object.

When we assume the time to be constant ($dt=0$), we get:

\[\begin{equation} ds^2 = \dfrac{dr^2}{1 - \dfrac{2GM}{c^2r}} +r^2d\phi^2 \end{equation}\]

Now, according to Ryston's article:

In order to visualize the curvature in the 𝑟 direction, we embed this surface into the three-dimensional Cartesian space (where 𝑟 and 𝜑 are identical to polar coordinates and the third, vertical Cartesian coordinate 𝑧 is used to visualize the actual curvature – see figure 1 below). As a result, we get an equation for the 𝑧 coordinate as a function of 𝑟: \(z(r)=\sqrt{\dfrac{8GMr}{c^2} - \dfrac{16M^2g^2}{c^4}}\) Of course, this equation 𝑟 and 𝑧 are in meters, which is not very convenient for visualizing large regions of space. For this reason, geometricized units where 𝑐 = 𝐺 = 1 are often used. Then we get the simpler form: \(z(r) = \sqrt{8Mr - 16M^2}\)

Flamm paraboloid
Figure 1: Flamm's paraboloid: the exterior t=const equatorial plane of a Schwarzschild Black Hole — Wikipedia

This is the quintessential formula that is used in this visualization:

class SchwarzschildSurfaceDefinition extends SurfaceDefinition {
  static zAsFunctionOf = (r, M) => Math.sqrt(Math.max(0, 8 * M * r - 16 * M * M));

  // ...
  
  sample(u, v, target) {
    const eps = 0.01;
    const r = (this.rMin + eps) + u * (this.rMax - (this.rMin + eps));
    const phi = v * 2 * Math.PI;

    target.set(
            r * Math.cos(phi),
            SchwarzschildSurfaceDefinition.zAsFunctionOf(r, this.M),
            r * Math.sin(phi)
    );
  }
}

Circular orbit conditions


A real circular orbit implies:

So:

We only need one equation: radiale acceleration = 0

The following equation is used:

\[\begin{equation} \ddot r = -\frac{M}{r^3}(r-2M) {\dot t}^2 + \frac{M}{r(r-2M)} {\dot r}^2 + (r-2M) {\dot \phi}^2 \end{equation}\]

For a circular orbit we have $\dot r = 0$, so all terms with $\dot r$ vanish:

\[\begin{equation} 0 = -\frac{M}{r^3}(r-2M) {\dot t}^2 + (r-2M) {\dot \phi}^2 \end{equation}\]

Factor $(r-2M) \neq 0$:

\[\begin{equation} 0 = -\frac{M}{r^3} {\dot t}^2 + {\dot \phi}^2 \Rightarrow \frac{M}{r^3} {\dot t}^2 = {\dot \phi}^2 \Rightarrow \boxed{ \dot\phi = \frac{\dot t}{r^{3/2}} \sqrt{M} } \end{equation}\]

In order to obtain $\dot t$, we note that in Schwarzschild we have the normalization:

\[\begin{equation} -1 = -(1 - 2M/r) {\dot t}^2 + r^2 {\dot \phi}^2 \end{equation}\]

Substitution of $\dot \phi$ gives us:

\[\begin{equation} -1 = -(1 - 2M/r) {\dot t}^2 + r^2 \frac{M}{r^3} {\dot t}^2 = -(1 - 2M/r) {\dot t}^2 + \frac{M}{r} {\dot t}^2 \end{equation}\]

Pulling ${\dot t}^2$ out of the brackets we get:

\[\begin{equation} -1 = -{\dot t}^2 (1 - \frac{2M}{r} - \frac{M}{r} ) = -{\dot t}^2 (1 - \frac{3M}{r} ) \end{equation}\]

The solution for $\dot t$ is therefore:

\[\begin{equation} \boxed{ \dot t = \frac{1}{\sqrt{1 - 3M/r}} } \end{equation}\]

As a consequence, for $\dot \phi$ we obtain:

\[\begin{equation} \boxed{ \dot \phi = \frac{\sqrt{M}}{r^{3/2} \sqrt{1 - 3M/r}} } \end{equation}\]

Important result

A stable circular orbit only exists if $r > 3M$!

For:

In the code

const tDot = 1 / Math.sqrt(1 - 3 * sun.mass / r);
const rDot = 0;
const phiDot = Math.sqrt(sun.mass) / 
        (r ** 1.5 * Math.sqrt(1 - 3 * sun.mass / r));

How gravity shapes the universe