Chapter 6 of The Nature of Code, Physics Libraries, covers physics engines, whose core method is Verlet integration: a point is advanced from its current and previous positions, so velocity is implicit and distance constraints are enforced by direct repositioning. A grid of such points joined by neighbor constraints is a cloth, implemented here directly rather than with a library.

The cloth is pinned along its full border and held under tension with no gravity, so it stays flat until struck. A week of USGS M2.5+ earthquakes is replayed in time order; each event applies an out-of-plane impulse at the grid cell matching its longitude (column) and latitude (row), scaled by magnitude and normalized to the week’s range. Thread color encodes strain, so each earthquake registers as a localized displacement that reflects off the fixed edge and settles.

Verlet integration advances a point by \(\mathbf{x}_{t+1} = 2\mathbf{x}_t - \mathbf{x}_{t-1} + \mathbf{a}\,\Delta t^2\), so velocity is implicit, \(\mathbf{v}_t \approx (\mathbf{x}_t - \mathbf{x}_{t-1})/\Delta t\). Each edge is a distance constraint relaxed toward its rest length \(L_0\) by iterated projection (Jakobsen’s position-based method), moving each free endpoint by \(\tfrac{1}{2}(d - L_0)\,\hat{\mathbf{d}}\) per pass. Strain is \(\varepsilon = (d - L_0)/L_0\), and the strike impulse scales linearly with magnitude \(M\) normalized to \([M_{\min}, M_{\max}]\).

Data source: USGS Earthquake Hazards Program
Endpoint: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojson
Access: Public, no key. Loaded from an hourly server-side refresh when possible, with a bundled snapshot fallback, and a live browser fetch only when the API allows CORS. Data window: Jul 30, 2026 - Aug 6, 2026 (pulled Aug 6, 2026 UTC)

Latest data pull 389 rows
Jul 30, 2026 - Aug 6, 2026 (pulled Aug 6, 2026 UTC)
Hours ago
Longitude
Latitude
Magnitude
2.29
130.72
32.66
4.6
3.19
-126
42.41
4.9
3.43
-152.07
61.9
2.9
3.47
-152.98
59.63
3.8
3.9
-64.48
19.4
3.2
6.23
-75.04
8.74
4.3
6.38
-175.67
-21.06
4.6
6.53
-144.9
63.38
2.9
7.42
-150.83
60.37
3.1
8.73
-156.84
54.77
2.5
8.89
-87.63
11.82
4.1
8.92
-156.85
54.77
3.9
9.91
125.08
5.21
4.6
10.67
-66.78
18.62
2.7
10.71
-122.28
40.42
2.7
10.84
-150.86
61.76
2.8
11.12
176.23
51.83
3.3
12.54
99.47
35.47
4
12.86
94.68
29.03
4.8
13.34
-67.63
18.91
3.1
14.13
130.46
32.45
4.9
14.75
-123.45
40.02
4.4
14.77
-123.45
40.02
3.9
14.92
125.25
5.08
4.9
15.43
125.23
5.13
5.6
16.12
-176.19
-21.52
4.6
16.29
-156.8
54.71
2.8
16.61
-156.77
54.73
2.9
17.34
143.84
-6.52
5.2
19.01
178.55
51.57
3.4
19.69
-67.56
18.85
3.1
20.28
127.45
1.79
5.3
20.34
-117.79
35.32
2.7
20.55
-175.84
50.02
2.7
21.02
-124.92
40.4
2.8
21.92
-149.84
56.15
2.7
22.78
-155.49
20.07
2.8
22.84
126.26
1.29
4.7
25.39
-103.4
31.93
2.5
26.49
176.14
51.82
3.3
27.02
94.68
29
5
27.48
125.25
5.04
4.4
27.81
-65.1
18.88
3.3
27.83
125.25
5.05
4.8
28.2
-152.45
63.55
3.4
28.2
178.36
50.22
3.6
28.2
178.45
50.24
3.3
29.18
-104.41
31.65
2.6
29.39
179.47
-33.81
6.3
30.38
164.08
-49.53
5.2
31.13
125.38
5
5.1
31.17
125.88
5.15
4.9
31.18
-173.39
51.49
2.6
31.18
176.54
52.41
3
31.22
126.14
5.06
4.6
31.32
-117.73
37.59
2.7
31.9
125.2
5.09
4.9
32.55
125
5.04
4.8
32.65
176.34
52.06
3.1
32.7
125.41
5.13
5.2
32.8
-82.47
5.89
5.1
32.83
-104.38
31.64
2.5
32.88
125.28
5.18
6.3
33.44
-76.93
-6.65
4.1
33.76
-113.32
37.57
2.8
33.85
128.93
-6.5
4.9
34.34
156.57
50.5
4.6
35.52
-119.04
39.17
3.3
36.05
-64.77
19.56
3.7
36.69
-123.44
40.03
4
36.7
54.01
27.7
4.2
36.92
94.65
21.9
4.8
37.02
-169.57
63.75
3.3
37.98
-26.79
-55.75
4.6
38.3
-136.7
57.47
2.7
39.83
-122.94
38.79
2.6
39.97
142.3
40.57
4.4
40.21
-122.03
39.59
2.6
40.62
-179.36
-21.8
4.7
40.84
126.49
1.51
5.7
41.17
131.05
30.21
4.8
41.19
-121.14
35.68
2.8
43.6
128.34
-7.6
4.1
44.93
-179.88
-23.89
4.1
45.14
104.76
28.54
4.4
45.27
-156.8
66.25
2.7
45.47
-64.59
18.97
3.4
46.1
176.24
51.87
3.5
46.16
-173.55
51.57
4.3
46.18
-175.23
-24.61
5.1
46.25
-64.11
18.82
3.8
46.66
-67.33
18.36
2.5
46.71
-67.58
18.91
3.5
46.76
-156.43
19.6
2.5
47.11
142.34
38.31
4.6
47.72
-119.93
36.1
2.6
47.77
-119.93
36.09
3.3
49.04
-89.76
36.1
2.6
49.99
-93.28
14.52
4.3
50.79
-65.51
19.12
3.1
51.1
-151.02
62.97
2.6
51.36
-149.17
62.44
3.3
51.56
57.57
28.09
4.1
52.38
-64.92
18.74
3.3
52.43
-68.2
19.53
3.7
53
176.29
51.96
3.3
53.08
-64.93
18.75
2.9
53.28
-64.93
18.72
3.1
54
-93.38
14.32
4.6
55.14
-93.24
14.47
4.3
55.31
-64.66
19.1
3.5
55.38
176.41
52.16
3.4
56.34
140.28
32.95
4.4
56.56
176.2
51.89
3.8
56.91
-122.5
38.68
2.7
57.78
179.94
-24.25
4.4
58.35
-128.28
43.97
4
58.63
-27.29
-57.68
4.4
59.57
-157.22
66.32
2.9
60.82
-66.91
17.97
2.9
61.19
-163.13
52.96
3
61.26
176.34
52.07
3.2
62.02
-166.93
53.05
2.5
62.23
176.25
51.97
4
62.4
176.23
51.91
3.5
62.67
-151.54
59.29
2.8
62.86
56.18
28.06
4.1
63.32
-179.87
51.51
2.6
63.41
157.9
49.23
4.9
64.33
-70.47
-28.75
4.4
64.57
-159.63
54.47
3.3
64.79
176.27
51.89
3.2
64.87
-5.12
32.2
4.7
65.86
-103.48
31.17
2.5
65.96
176.22
51.76
3.8
66.83
-169.31
52.34
3.3
67.84
-98.97
28.85
2.5
68.16
176.35
52.1
3.5
68.51
176.36
52.14
3.4
68.99
-159.62
55.38
3
69.22
143.38
39.7
4.5
70.17
176.31
52
4
70.46
146.85
43.25
4.7
70.66
-139.43
58.9
3.2
70.8
-164.99
53.42
2.5
71.88
156.09
-7.5
4.8
72
-124.79
40.33
2.6
72.44
-163.11
54.72
2.6
72.52
-165.58
53.35
2.5
72.71
-64.8
18.15
3.1
72.81
-64.93
18.74
2.9
72.84
-64.94
18.74
2.9
72.99
-145.37
69.36
2.5
73.67
155.94
49.92
4.9
74.19
-67.14
-24.5
4.6
74.36
-176.68
-17.12
4.9
74.59
-66.75
18.02
2.8
75.8
-93.6
14.01
4.5
75.93
-174.97
51.59
2.6
76.81
-153.14
60
3.6
78.17
-69.12
-20.29
4
78.93
176.24
51.86
3.8
79.61
142.54
42
4.3
80.1
-69.63
19.27
4.5
80.1
104.76
28.69
4.9
80.25
-164.15
53.36
2.5
80.58
-174.4
52.27
3.5
80.62
-109.87
41.56
3.1
80.78
-151.01
63.06
2.5
80.94
-165.09
53.64
2.6
81.27
-118.31
33.92
2.5
81.46
-169.33
52.33
2.6
81.5
-137.17
63.14
2.7
81.74
-124.36
40.3
2.7
81.88
-120.86
35.58
2.7
82.04
176.24
51.96
3.9
83.41
-75.76
-8.57
5.2
83.42
179.66
51.14
3.6
83.52
-177.45
-19.23
4.3
83.8
-64.93
18.76
3.2
84.56
-71.37
46.76
2.7
84.63
-67.56
18.85
3.2
85.09
-64.88
18.45
3.1
85.11
32.63
30.29
5
85.38
-115.86
32.96
3
85.52
159.98
51.16
4.4
86.04
-155.66
20.16
2.5
86.31
125.41
5.41
4.5
86.99
-161.24
67.93
2.8
87
-69.24
-31.36
4.2
87.06
-157.17
56.65
3.5
88.23
-67.67
-27.73
4.3
89.08
147.06
43.07
4.5
90.59
176.27
52
4.3
90.75
104.78
28.67
5
91.91
-77.19
7.65
4.4
91.96
-75.77
-3.11
4.3
92.4
-161.71
55.03
3.4
92.65
176.22
51.93
4.1
92.67
126.39
4.18
4.7
92.96
-85.9
11.58
4.6
93.53
-175.13
-25.04
5
94.29
142.92
42.29
4.8
94.59
99.33
35.39
4.9
94.82
121.21
-8.45
4.6
95.65
-148.73
56.42
3.1
95.94
-111.06
27.37
5.1
96.5
-121.19
36.56
3.6
97.24
-12.18
-3.21
5.3
98.55
-174.94
-23.74
5.3
99.12
130.69
32.4
4.6
99.83
-12.24
-3.29
5
100.02
-158.65
56.43
3.6
100.29
-67.04
-24.23
4.6
100.53
178.33
-37.73
5.6
100.75
156.2
49.33
4.9
100.8
176.34
52.1
3.9
102.14
-151.69
60.62
3.4
102.61
-155.23
18.84
2.7
103.12
-67.2
18.26
3.2
103.47
143.59
-6.47
4.9
103.81
-173.48
51.66
4.8
104.81
-64.93
18.73
3.2
105.84
-68.69
10.53
4.5
105.84
-64.93
18.75
2.6
105.86
91.47
33.53
4.2
106.99
-64.93
18.77
2.9
107.47
-64.34
19.04
3.3
107.5
56.62
27.64
4.2
107.55
-64.94
18.72
3.1
107.76
-72.06
-33.53
4.4
108.36
142.53
40.3
4.8
108.38
-155.53
18.77
2.8
108.42
-64.93
18.78
3
108.49
-66.94
18.17
2.7
108.89
155.17
49.87
5.2
109.13
-173.88
51.76
3.3
109.45
-92.7
15.1
4.2
109.53
-93.41
14.5
4.4
109.74
-93.03
14.42
4.3
109.92
-64.91
18.77
2.5
110
-173.56
51.56
4.9
110.14
-118.3
37.27
2.8
110.18
179.78
51.1
2.7
110.62
-178
-20.19
4.4
111.44
-154.94
20.03
2.5
111.68
138.94
-2.61
4.5
112.45
-152.28
60.21
2.6
112.49
-64.94
18.78
3.4
112.98
-64.93
18.75
3
112.98
176.18
51.8
3.3
113.07
155.33
49.32
5.2
113.1
176.2
51.85
3.7
113.11
-64.92
18.79
4.1
113.58
-176.98
51.48
3.1
113.94
132
32.01
5.2
114.6
-150.91
60.79
2.6
116.27
-116.32
33.98
3.2
116.52
176.24
51.89
3.7
116.98
-160.18
54.49
2.5
117
130.46
32.45
4.6
117.26
-176.8
-24.39
5.1
117.54
-159.85
54.49
2.5
118.53
129.7
-6.75
4.2
118.89
-165.57
53.19
2.9
118.91
-160.31
55.18
2.7
120.33
130.63
32.65
4.9
121.27
-122.94
38.78
2.7
121.48
-151.71
61.68
3
121.5
-148.31
62.49
2.7
121.53
-122.95
38.77
2.8
122
-15.96
-39.53
5.1
122.83
-176.99
51.17
2.5
122.85
-101.68
31.73
2.8
122.91
-101.68
31.72
2.7
123.28
-15.98
-39.69
5.1
124.54
-165.93
52.21
3.1
124.75
-93.26
14.34
4.6
124.85
-179.91
51.03
2.6
125.16
-122.94
38.78
3.7
125.27
-68.45
-21.41
4.4
125.35
-179.13
-22.38
5.1
126.08
133.15
53.59
4.3
126.2
176.19
51.84
3.6
126.31
154.77
48.38
4.4
126.47
-65.71
19.41
3.3
127.09
142.56
24.3
4.4
127.67
178.87
51.66
3.1
127.95
-65.07
18.99
3.3
128.28
-173.02
52.69
2.9
128.28
-179.56
-23.74
4.5
128.3
-129.43
49.6
5.6
128.36
176.31
51.94
3
129.4
124.93
5.64
4.6
129.72
167.37
-45.1
4.8
130.32
141.9
41.35
5.5
130.84
-83.8
9.75
4.3
131.62
99.43
35.48
4.7
131.72
39.2
18.88
4.6
132.19
-151.63
63.26
2.5
133.34
-168.01
52.23
3
133.35
-167.91
52.3
3.1
133.52
126.15
10.74
4.5
133.81
-165.48
52.29
2.6
133.82
130.12
-3
5.1
133.85
130.29
-2.9
5.1
134.12
-178.95
51.73
2.5
134.12
-178.96
51.84
2.5
134.81
130.35
-2.94
4.1
135.09
143.28
39.22
4.1
135.65
-173.45
51.81
3.6
135.71
101.29
23.19
4.5
135.72
126.27
4.89
4.4
135.94
130.21
-2.91
4.4
136.13
-93.44
14.2
4.4
136.58
-178.83
-26.79
4.4
136.63
130.1
-2.91
4.6
136.67
69.79
37.82
4.4
136.79
130.16
-2.88
5.3
136.95
-116.96
33.35
3
137.07
-121.45
36.97
2.9
137.16
-93.02
15.07
4.3
138.15
-25.29
-58.71
5.1
138.19
-65.4
46.89
3.1
138.6
-166.92
53.04
2.6
138.75
-175.89
51.54
2.5
138.87
-122.26
46.02
2.6
139.33
-72.12
-29.87
5
139.34
14.17
40.88
4.5
139.86
-161.53
54.37
3.4
140.25
179.61
51.21
2.7
140.85
-93.23
14.6
5.2
141.03
-150.9
60.51
2.5
141.05
-90.96
1.53
4.7
142.36
-150.67
63.64
2.7
143.4
-173.32
51.37
3.1
143.52
-155.74
57.17
3.2
144.14
128.03
28.2
4.6
144.54
-151.54
63.11
2.5
144.98
-162.83
54.08
2.6
145.96
174.48
-41
4.5
146.33
-150.46
57.98
2.9
147.14
-159.71
54.53
3
147.37
66.9
36.51
4.3
147.45
-93.26
14
4.4
147.97
53.93
36.24
4.6
148.21
-163.47
53.05
2.9
148.48
-179.46
-31.16
4.1
148.59
93.23
4.14
4.9
148.69
-125.18
40.33
2.5
148.93
119.93
20.8
4.3
149.08
-173.45
51.45
3.5
149.57
-177.49
-19.33
4.4
150.25
-122.79
39.3
2.7
150.61
-176.55
-29.41
5
151.35
-125.54
51
4.1
151.86
-173.78
51.86
2.6
152.29
44.56
35.41
4.1
152.83
-178.42
-28.73
4.6
153.07
-176.73
-28.39
5
153.54
-162.64
52.52
3.1
153.76
179.59
52.03
2.6
154.76
-114.83
37.12
2.7
154.99
-176.96
-28.56
4.6
155.95
-80.95
-0.62
4.3
156.14
-74.44
-8.33
5.6
158.02
-159.64
54.47
2.6
158.7
159.78
53.09
4.7
159.23
159.64
53.07
5.1
159.58
-66.84
17.96
2.5
160.57
-159.84
55.94
2.5
160.67
-176.57
-28.55
5
160.88
99.45
35.47
4.4
161.48
-175.15
51.5
3
162.77
-92.83
14.43
4.9
162.93
129.06
-5.4
4.5
163.18
139
11.58
5.9
163.31
-177.97
-31.32
5.2
164.14
121.42
23.1
4.5
164.77
142.36
40.22
4.3
165.29
-66.91
-24.18
4.2
165.54
-118.84
37.5
3.4
166.14
44.53
35.34
4.2
166.49
138.89
-2.7
4.4
166.54
-165.95
52.13
2.9
166.72
130.74
-3.17
4.3
167.04
-121.46
36.97
2.8
167.32
130.64
32.69
5
167.88
126.16
-7.24
4.2

All 389 earthquakes are listed below.