-
Notifications
You must be signed in to change notification settings - Fork 11
/
variable_gravity.html
91 lines (73 loc) · 5.51 KB
/
variable_gravity.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="code/three.js"></script>
<script src="code/math.js"></script>
<script src="code/canvas_functions.js"></script>
<script src="code/drawing.js"></script>
<script src="code/physics.js"></script>
<script src="code/utils.js"></script>
<script src="code/log_memoization.js"></script>
<script src="code/jonsson_embedding.js"></script>
<script src="code/helvetica.js"></script>
<script src="code/variable_gravity.js"></script>
<link rel="stylesheet" href="styles.css">
<noscript>
<p>For full functionality of this site it is necessary to enable JavaScript.
Here are the <a href="http://www.enable-javascript.com/" target="_blank">
instructions how to enable JavaScript in your web browser</a>.
</p></noscript>
</head>
<body class="sansserif">
<p align="center">
<canvas class="canvas" id="canvas1" width="480" height="500">(Canvas drawing not supported by your browser.)</canvas>
<canvas class="canvas" id="canvas2" width="480" height="500">(Canvas drawing not supported by your browser.)</canvas>
</p>
<p align="center">
<div class="mainSlider">
Change the horizontal view angle: <input type="range" min="0" max="100" value="45" class="slider" id="horizontalViewAngleSlider">
</div>
<div class="mainSlider">
Change the vertical view angle: <input type="range" min="0" max="100" value="60" class="slider" id="verticalViewAngleSlider">
</div>
<label class="container">Move along the trajectory?
<input type="checkbox" id="moveAlongTrajectoryCheckbox">
<span class="checkmark"></span>
</label>
<div class="mainSlider">
Trajectory position:
<input type="range" min="0" max="100" value="0" class="slider" id="trajectorySlider">
</div>
</p>
<p class="text">
<a href="index.html">← Simpler version</a>
</p>
<h4>Description:</h4>
<p class="text">
In this system there is only one space dimension, shown on the vertical axis and labeled in millions of meters (Mm). The time dimension is the horizontal axis and labeled in minutes. The curving line show a cannonball shot straight upwards and then falling back to Earth, ignoring air resistance. At such heights (20 Mm is around 5% of the distance to the moon), the force of gravity drops considerably, down to just 0.57 ms<sup>-2</sup> from 9.8 ms<sup>-2</sup> at the surface. As a result, the trajectories are no longer parabolas.
</p>
<p class="text">
The 3D scene is a different way of showing the same graph. We have taken the 2D graph and rolled it up like a sheet of paper, such that the time axis is now wrapped up in a circle. By adding a little bulge at the bottom this surface acquires a very special property: all the free-fall trajectories are now <i>geodesics</i> (straight lines) on this surface. (Imagine a tiny ant walking on the surface. If the ant always walks forwards, never turning left or right, then the path it takes will be a geodesic.)
</p>
<p class="text">
You can drag the trajectory around using the two circles on the 2D graph. When the cannonball escapes Earth's gravity we color the trajectory red, otherwise when it falls back to Earth we color it blue.
</p>
<p class="text">
The 3D graph illustrates a key property of general relativity, that inertial objects (objects like cannonballs that are free to fall) move in straight lines through spacetime. Gravity works because the mass of the Earth distorts spacetime, causing the bulge we can see at the bottom. The curvature of the surface steers the geodesics back down to Earth, so to an Earth-based observer it seems like the cannonballs are being pulled towards us by some invisible force.
</p>
<p class="text">
As the height increases, and the force of gravity decreases, the curvature of the 3D embedding decreases. In the limit it becomes a cylinder, where there is zero gravity. Inertial objects will move along helices if they are moving towards or away from Earth, or will move in circles around the cylinder if they are at rest relative to the Earth.
</p>
<p class="text">
This 3D embedding was created by <a href="http://relativitet.se/">Rickard Jonsson</a> in a <a href="http://www.relativitet.se/Webarticles/2001GRG-Jonsson33p1207.pdf">2001 paper</a>. Many thanks to Rickard for helping me implement it.
</p>
<h4>Implementation details:</h4>
<p class="text">
See <a href="https://github.com/timhutton/GravityIsNotAForce/blob/gh-pages/code/jonsson_embedding.js">code/jonsson_embedding.js</a> for the implementation details of mapping space and time onto the 3D surface. We compute the free-fall trajectories using a formula for the free-fall time from <a href="https://en.wikipedia.org/wiki/Free_fall#Inverse-square_law_gravitational_field">here</a>. The formula is only valid for non-relativistic speeds but that's appropriate in this case. To validate our implementation we compute geodesics for the 3D surface and compare the two. Code for this is <a href="https://github.com/timhutton/GravityIsNotAForce/blob/gh-pages/code/variable_gravity.js">available</a> if you are interested.
</p>
<p class="text">
Code, more details, feedback: <a href="https://github.com/timhutton/GravityIsNotAForce">https://github.com/timhutton/GravityIsNotAForce</a>
</p>
</body>
</html>