Skip to content

Commit 68c358c

Browse files
Fixes the misner metric and solver for spacetime 4-velocity.
1 parent 8cf5590 commit 68c358c

3 files changed

Lines changed: 37 additions & 23 deletions

File tree

Assets/MisnerSpace.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@ public class MisnerSpace : Spacetime
66
{
77
public override Metric GetMetric(Vector4 spaceTime)
88
{
9-
return new Metric()
9+
Metric m = new Metric()
1010
{
11-
components = new float[4, 4] { { 0.00001f, 1f, 0f, 0f },
12-
{ 1f, -spaceTime.w, 0f, 0f },
11+
components = new float[4, 4] { { 0f, 1f, 0f, 0f },
12+
{ 1f, spaceTime.w, 0f, 0f },
1313
{ 0f, 0f, -1f, 0f },
1414
{ 0f, 0f, 0f, -1f } }
1515
};
16+
return m;
1617
}
1718
float Atanh(float x)
1819
{
@@ -22,12 +23,12 @@ public override Vector4 ToCoordSystem(Vector4 spaceTime)
2223
{
2324
float oldTime = spaceTime.w;
2425
spaceTime.w = 0.25f * (spaceTime.x * spaceTime.x - oldTime * oldTime);
25-
spaceTime.x = 2f * Atanh(spaceTime.x / oldTime);
26+
spaceTime.x = 2f * Mathf.Log((spaceTime.x - oldTime) / 2f);
2627
return spaceTime;
2728
}
2829
public override Vector4 DelPositionCoords(Vector4 del)
2930
{
30-
return new Vector4((del.x + 100f) % 1f, del.y, del.z, del.w);
31+
return new Vector4((del.x + 120f) % 4f, del.y, del.z, del.w);
3132
}
3233
public override Vector4 ToCoordSystemVelocity(Vector4 spaceTimeVel, Vector4 cartesian)
3334
{
@@ -46,15 +47,15 @@ public override Vector4 ToCoordSystemVelocity(Vector4 spaceTimeVel, Vector4 cart
4647
}
4748
public override Vector4 FromCoordSystem(Vector4 coordSpace)
4849
{
49-
float f = 2f * Mathf.Sqrt(Mathf.Abs(coordSpace.w));
50-
coordSpace.w = (float)(f * System.Math.Cosh(coordSpace.x / 2f));
51-
coordSpace.x = (float)(f * System.Math.Sinh(coordSpace.x / 2f));
50+
//float f = 2f * Mathf.Sqrt(Mathf.Abs(coordSpace.w));
51+
//coordSpace.w = (float)(f * System.Math.Cosh(coordSpace.x / 2f));
52+
//coordSpace.x = (float)(f * System.Math.Sinh(coordSpace.x / 2f));
5253
return coordSpace;
5354
}
5455
public override Vector3 FromCoordSystemCart(Vector4 coordSpace)
5556
{
56-
float f = 2f * Mathf.Sqrt(Mathf.Abs(coordSpace.w));
57-
coordSpace.x = (float)(f * System.Math.Sinh(coordSpace.x / 2f));
57+
//float f = 2f * Mathf.Sqrt(Mathf.Abs(coordSpace.w));
58+
//coordSpace.x = (float)(f * System.Math.Sinh(coordSpace.x / 2f));
5859
return coordSpace;
5960
}
6061
}

Assets/Object.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ internal virtual void Start()
7474
void TempSpeed(Metric m)
7575
{
7676
float[] newSpacetimeVel = new float[4] { spacetimeVel.w, spacetimeVel.x, spacetimeVel.y, spacetimeVel.z };
77+
if (m.components[0,0] == 0)
78+
{
79+
float gr = 0f;
80+
for (int i = 1; i < 4; i++)
81+
gr += 2f * m.components[0, i] * newSpacetimeVel[i];
82+
float cn = -global.sqC;
83+
for (int i = 1; i < 4; i++)
84+
for (int j = 1; j < 4; j++)
85+
cn += m.components[i, j] * newSpacetimeVel[i] * newSpacetimeVel[j];
86+
spacetimeVel.w = -cn / gr;
87+
return;
88+
}
7789
float b = 0f;
7890
for (int i = 1; i < 4; i++)
7991
b += 2f * m.components[0, i] * newSpacetimeVel[i];
@@ -139,7 +151,7 @@ bool Sanity()
139151
}
140152
if (float.IsNaN(spaceTimePos.z))
141153
Destroy(gameObject);
142-
properTimeStep = global.timestep / Mathf.Max(spacetimeVel.w, 1f);
154+
properTimeStep = global.timestep / Mathf.Max(Mathf.Abs(spacetimeVel.w), 1f);
143155
return float.IsNaN(spaceTimePos.z);
144156
}
145157
internal void ProperClockTick()
@@ -170,7 +182,7 @@ void Update()
170182
spacetimeVel += spacetimeAcc * properTimeStep;
171183
spacetimeAcc = Vector4.zero;
172184
bool insane = Sanity();
173-
spaceTimePos += spacetimeVel * properTimeStep;
185+
spaceTimePos = global.DelPositionCoords(spaceTimePos + spacetimeVel * properTimeStep);
174186
if (!lightlike)
175187
{
176188
properTime += properTimeStep;

Assets/Scenes/MisnerSpace.unity

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,9 @@ MonoBehaviour:
152152
m_Script: {fileID: 11500000, guid: 111d4cf2080334b4da5004fa74a51a96, type: 3}
153153
m_Name:
154154
m_EditorClassIdentifier:
155-
spacetimeVel: {x: 0, y: 0, z: 0.1, w: 1}
155+
spacetimeVel: {x: 0.0001, y: 0, z: 0.1, w: 1}
156156
spacetimeAcc: {x: 0, y: 0, z: 0, w: 0}
157-
spaceTimePos: {x: 0, y: 0, z: 0, w: -85}
157+
spaceTimePos: {x: 0, y: 0, z: 0, w: -150}
158158
properTime: 0
159159
lightlike: 0
160160
--- !u!135 &211385649
@@ -262,9 +262,9 @@ MonoBehaviour:
262262
m_Script: {fileID: 11500000, guid: 111d4cf2080334b4da5004fa74a51a96, type: 3}
263263
m_Name:
264264
m_EditorClassIdentifier:
265-
spacetimeVel: {x: 0, y: 0, z: 0, w: 1}
265+
spacetimeVel: {x: 0.001, y: 0, z: 0, w: 1}
266266
spacetimeAcc: {x: 0, y: 0, z: 0, w: 0}
267-
spaceTimePos: {x: 0, y: 0, z: 0, w: -85}
267+
spaceTimePos: {x: 0, y: 0, z: 0, w: -150}
268268
properTime: 0
269269
lightlike: 0
270270
--- !u!135 &584217459
@@ -469,9 +469,9 @@ MonoBehaviour:
469469
m_Script: {fileID: 11500000, guid: 111d4cf2080334b4da5004fa74a51a96, type: 3}
470470
m_Name:
471471
m_EditorClassIdentifier:
472-
spacetimeVel: {x: -0.1, y: 0, z: 0.1, w: 1}
472+
spacetimeVel: {x: -0.005, y: 0, z: 0.1, w: 1}
473473
spacetimeAcc: {x: 0, y: 0, z: 0, w: 0}
474-
spaceTimePos: {x: 0, y: 0, z: 0, w: -85}
474+
spaceTimePos: {x: 0, y: 0, z: 0, w: -150}
475475
properTime: 0
476476
lightlike: 0
477477
--- !u!135 &1316776774
@@ -541,7 +541,7 @@ Transform:
541541
m_PrefabAsset: {fileID: 0}
542542
m_GameObject: {fileID: 1316776772}
543543
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
544-
m_LocalPosition: {x: 8.94, y: 0.59, z: -11.6}
544+
m_LocalPosition: {x: 415.5, y: 0.59, z: -11.6}
545545
m_LocalScale: {x: 1, y: 1, z: 1}
546546
m_Children: []
547547
m_Father: {fileID: 0}
@@ -667,9 +667,10 @@ MonoBehaviour:
667667
m_Script: {fileID: 11500000, guid: 329693b4bfd5a794091dc8e01ab78d63, type: 3}
668668
m_Name:
669669
m_EditorClassIdentifier:
670+
banParadoxes: 0
670671
tickmark: {fileID: 0}
671672
speedOfLight: 3
672-
timestep: 0.5
673+
timestep: 0.1
673674
--- !u!4 &1578963881
674675
Transform:
675676
m_ObjectHideFlags: 0
@@ -716,9 +717,9 @@ MonoBehaviour:
716717
m_Script: {fileID: 11500000, guid: 111d4cf2080334b4da5004fa74a51a96, type: 3}
717718
m_Name:
718719
m_EditorClassIdentifier:
719-
spacetimeVel: {x: -0.1, y: 0, z: 0, w: 1}
720+
spacetimeVel: {x: -0.005, y: 0, z: 0, w: 1}
720721
spacetimeAcc: {x: 0, y: 0, z: 0, w: 0}
721-
spaceTimePos: {x: 0, y: 0, z: 0, w: -85}
722+
spaceTimePos: {x: 0, y: 0, z: 0, w: -150}
722723
properTime: 0
723724
lightlike: 0
724725
--- !u!135 &1833243556
@@ -788,7 +789,7 @@ Transform:
788789
m_PrefabAsset: {fileID: 0}
789790
m_GameObject: {fileID: 1833243554}
790791
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
791-
m_LocalPosition: {x: 8.94, y: 0.59, z: -5.7}
792+
m_LocalPosition: {x: 415.5, y: 0.59, z: -5.7}
792793
m_LocalScale: {x: 1, y: 1, z: 1}
793794
m_Children: []
794795
m_Father: {fileID: 0}

0 commit comments

Comments
 (0)