Tachytaenius
- 10
- 0
- TL;DR Summary
- I made a simulation/visualisation of an Ellis wormhole equatorial cross-section. I thought I had it right, but the geodesics don't look like the ones on Wikipedia. I need help with the maths for discrete timestep parallel transport and geodesics.
Hi, what I thought I'd managed to do some months ago was to create a 2D manifold movement simulation / visualisation on a catenoid, to make a traversable [cross section of an] Ellis wormhole.
I have noticed, though, that the geodesics on the Wikipedia page for the Ellis wormhole don't really look like mine. I don't know how they got them, but everything I'd found about differential geometry pointed me towards my implementation.
Their geodesics (https://upload.wikimedia.org/wikipe...1-256px-Ellis_wormhole_loop_geodesics.pdf.jpg) can go towards and then away from the wormhole throat without crossing. Mine, which I calculate by parallel transporting my velocity vector while moving along it (that does give geodesics, right?), seem to bend oppositely, going around the wormhole throat. Sometimes theirs even spiral around.
I think I'm using the Levi-Civita connection, which as far as I understand is basically the "normal" way to connect points on the surface that aligns with human intuition. And my understanding of the theory is that a particle/camera/whatever with constant velocity should trace out a geodesic by parallel-transporting its velocity along with it. So if I can move with velocity and also parallel transport velocity, I should be able to move along geodesics.
Here are my variables in the simulation:
Tools I have access to:
If anything doesn't make sense, probably due to me not knowing all the terminology (which is because I'm self taught and have never been to uni), please do ask me about it. I'm more than happy to elaborate on all of this. I would really like to get to a solution...
The repository for my code (runnable with a 12.0 prerelease of the LÖVE framework) is https://github.com/Tachytaenius/wormhole-manifold-2d.
The code that contains the part where the camera moves around according to its velocity (which is accelerated in its local space tangent to the catenoid) and then parallel transports it is here: https://github.com/Tachytaenius/wor...275fb66ffc8ee147fa87bf4fd9/main.lua#L268-L287. I suspect something in those lines or the functions they call is what's causing the issue. Please note that the code does include some extra stuff about the wormhole being placed into a flat space, such that you can take the long way 'round to get from end to end.
I also tried to match the geodesic equations found in the Wikipedia article, but I after copying the maths I was ending up with negative radicands going into the square root function and other mishaps. I wanted to be able to move along any arbitrary manifold with a parameterisation and christoffel symbols, anyway.
I have noticed, though, that the geodesics on the Wikipedia page for the Ellis wormhole don't really look like mine. I don't know how they got them, but everything I'd found about differential geometry pointed me towards my implementation.
Their geodesics (https://upload.wikimedia.org/wikipe...1-256px-Ellis_wormhole_loop_geodesics.pdf.jpg) can go towards and then away from the wormhole throat without crossing. Mine, which I calculate by parallel transporting my velocity vector while moving along it (that does give geodesics, right?), seem to bend oppositely, going around the wormhole throat. Sometimes theirs even spiral around.
I think I'm using the Levi-Civita connection, which as far as I understand is basically the "normal" way to connect points on the surface that aligns with human intuition. And my understanding of the theory is that a particle/camera/whatever with constant velocity should trace out a geodesic by parallel-transporting its velocity along with it. So if I can move with velocity and also parallel transport velocity, I should be able to move along geodesics.
Here are my variables in the simulation:
- Position (stored in terms of r and theta coordinates)
- Velocity (stored in terms of change in r and theta coordinates per second)
- Forwards direction (also stored in terms of r and theta. When converted from 2D intrinsic space to 3D embed space using the basis vectors, its length is always 1.)
- Accelerate and rotate the camera with keyboard input in the local tangent space at the current camera position.
- Get r and theta displacements for this timestep as velocity's components multiplied by dt.
- Add r and theta displacements to current position. Theta is confined within a full turn.
- Calculate the Christoffel symbols at the old position (it's still broken if I use the new position).
- Use my parallel transport function to bring the velocity along, and then to bring the forwards direction along (it is normalised every time to prevent accumulating floating point error).
Tools I have access to:
- Parameterisation of the 2D manifold (i.e. a function to take from curved intrinsic r theta space to flat embedding cartesian space).
- Function to get the r and theta basis vectors.
- Function to take a tangent vector from embed space down into intrinsic r theta space using the basis vectors.
If anything doesn't make sense, probably due to me not knowing all the terminology (which is because I'm self taught and have never been to uni), please do ask me about it. I'm more than happy to elaborate on all of this. I would really like to get to a solution...
The repository for my code (runnable with a 12.0 prerelease of the LÖVE framework) is https://github.com/Tachytaenius/wormhole-manifold-2d.
The code that contains the part where the camera moves around according to its velocity (which is accelerated in its local space tangent to the catenoid) and then parallel transports it is here: https://github.com/Tachytaenius/wor...275fb66ffc8ee147fa87bf4fd9/main.lua#L268-L287. I suspect something in those lines or the functions they call is what's causing the issue. Please note that the code does include some extra stuff about the wormhole being placed into a flat space, such that you can take the long way 'round to get from end to end.
I also tried to match the geodesic equations found in the Wikipedia article, but I after copying the maths I was ending up with negative radicands going into the square root function and other mishaps. I wanted to be able to move along any arbitrary manifold with a parameterisation and christoffel symbols, anyway.