A Tethered Ring is a dynamic structure that can cost-effectively support space launch facilities, transportation infrastructure, and a sizable human settlement at high altitudes. An altitude of 32 km and a population of 250,000 is shown to be achievable using circa 2017 science and technology. The structure resembles a pipeline formed into a ring having a diameter similar to that of Earth’s moon. It stays aloft primarily by generating and properly combining inertial forces with tensile forces to offset the pull of gravity. The inertial forces are produced by the circular motion of magnetically levitated rings within the pipeline, and the tensile forces are generated by appropriately tethering the pipelines to the planet using stays made of strong, light-weight, industrial fiber. The entire structure can be fabricated on Earth and neither its construction nor its deployment depends on a pre-existing space infrastructure or space-based industry. The deployed structure is resilient to catastrophic failure because its precision-guided fast moving components are: a) not exposed to seismic or climatic battering, and b) safely above and thus out of range of tacit civilizational threats, such attacks involving torpedoes or commandeered aircraft. The tethered ring is an optimal “stepping stone” infrastructure for furnishing humanity with a safe, affordable, and sustainable means to escape Earth’s gravity, expand its civilization into space, and ultimately evolve into a multi-planetary species. Check out the brief explanation and full whitepaper at: https://www.project-atlantis.com
Video Explanation: https://youtu.be/k5fki-C3r70
https://nodejs.org/en/download/
Note: NPM is now included with NodeJS
You can verify installation and determine your installed version using the commands below
Node (v19.0.1 tested)
node -v
NPM (9.1.1 tested)
npm -v
If you haven't aready, create a directory on your PC for your three.js projects. For example, you can do this with the command:
mkdir C:\Users\Username\Documents\repos\Three.js\
cd into this directory. Then clone the repository with...
git clone https://github.com/philipswan/TetheredRing.git
cd TetheredRing
Remove previous revision of three.js (Note: Do this only if you are updating the project from a previous install. Skip for a fresh install)
PowerShell command...
Remove-Item -Recurse -Force node_modules, package-lock.json
Linux command...
rm -rf node_modules package-lock.json
Standard node modules installation
npm install
This is an additional required setup step in order for the model to be displayed correctly. This script is responsible for syncing the textures from the remote server to your local development environment.
npm run dev-sync
(Note: If you encounter a problem using the dev-sync script, an alternate method of downoading the texture files is to use the following commands...
cd textures
wget https://www.project-atlantis.com/wp-content/threejs-simulation/textures/bluemarble_16384.png -outfile bluemarble_16384.png
curl.exe -O https://www.project-atlantis.com/wp-content/threejs-simulation/textures/moon.jpg
curl.exe -O https://www.project-atlantis.com/wp-content/threejs-simulation/textures/movingRingTexture.jpg
curl.exe -O https://www.project-atlantis.com/wp-content/threejs-simulation/textures/myakka_oli_2022031_lrg.jpg
mkdir 24x12\LR
mkdir 24x12\HR
cd 24x12\LR
foreach ($X in @(0..23)) {foreach ($Y in @(0..11)) {curl.exe -O https://www.project-atlantis.com/wp-content/threejs-simulation/textures/24x12/LR/earth_LR_24x12_${X}x${Y}.jpg}}
cd ..\HR
foreach ($X in @(0..23)) {foreach ($Y in @(0..11)) {curl.exe -O https://www.project-atlantis.com/wp-content/threejs-simulation/textures/24x12/HR/earth_HR_24x12_${X}x${Y}.jpg}}
cd ..\..\..
)
Handled by Vite
npm run dev
Using a browser (e.g. Chrome) open a tab and navigate to the URL specified in the run dev
output to view the model
Note: when working on the project, on occasion you may need to hard refresh the browser in order for the model to display properly. This is usually the command <ctrl> + <shift> + 'R'
Press F12 and then select the console tab.
Key | Function |
---|---|
P |
Moves the point that you orbit around. It will place it just above the surface of the Earth, or on the transit tube, depending on which of these objects the sprite is hovering over when you press this key. |
O |
Moves the point that you orbit around back to the center of the Earth. |
R /L |
Slowly raise and lower the ring. |
U /D |
Increase and decrease the altitude of the camera. |
Z /X |
Slowly zoom in or out. |
Q |
Slowly orbit around the point set by P or O . |
W |
Instantly "warp" you over to a point much closer to the ring. |
Get the scene to do what you want ('0' tracks the launch vehicle, '1' trackes the adaptive nut, '2' tracks the nearest transit vehicle, '3' tracks the nearest elevator car. 'q' orbits the tracked object.)
Scroll down slightly to reveal the buttons hidden at the bottom of the page.
Click on "Start Capturing Frames". Progress is reported at the top of the screen.
Click on "Stop Capturing and Download" when done.
Open PowerShell (assuming a Windows 10 or 11 machine here).
Create and cd to a working directory of your choosing. (e.g. cd Documents\VideoCaptures\MassDriverClip
)
Move the .tar files from your downloads folder to your working directory (e.g. move C:\Users\username\Downloads\TetheredRing*.tar .
)
Decompress all of the .tar files (e.g. Get-ChildItem -Filter *.tar | ForEach-Object { 7z x $_.FullName; if ($?) { Remove-Item $_.FullName -Force }
)
Encode the files (e.g. c:\ffmpeg\ffmpeg -framerate 60 -i '%07d.png' -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -pix_fmt yuv420p threejsout.mp4
)
You can optionally encode at a different resolution with {c:\ffmpeg\ffmpeg -framerate 60 -i '%07d.png' -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" -s 1920x1080 -c:v libx264 -pix_fmt yuv420p threejsout.mp4
}
If you're happy with the result, rename it and save it somewhere. Then delete everything in the working directory with del *.*
.
The capture resolution is hard coded inside the startCapturingFramesButton event handler located near the bottom of the main.js file.