Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
curvedflats
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
6
Issues
6
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Flatland
curvedflats
Commits
cf50696c
Commit
cf50696c
authored
5 years ago
by
Chae Ho Shin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
trajectory finally working, close issue
#19
close
#29
parent
7c65eb6d
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
139 deletions
+32
-139
Test.unity
Assets/Scenes/Test.unity
+6
-6
FlatlandMovement.cs
Assets/Scripts/FlatlandMovement.cs
+1
-1
PathRenderer.cs
Assets/Scripts/PathRenderer.cs
+6
-123
PlayerMovement.cs
Assets/Scripts/PlayerMovement.cs
+19
-9
No files found.
Assets/Scenes/Test.unity
View file @
cf50696c
...
...
@@ -3257,7 +3257,7 @@ MeshRenderer:
m_RenderingLayerMask
:
1
m_RendererPriority
:
0
m_Materials
:
-
{
fileID
:
2100000
,
guid
:
7286fb01c3bf28349bf3a51860aefb00
,
type
:
2
}
-
{
fileID
:
2100000
,
guid
:
eb322bc5933761d4fb98f8561eadae28
,
type
:
2
}
m_StaticBatchInfo
:
firstSubMesh
:
0
subMeshCount
:
0
...
...
@@ -3755,7 +3755,7 @@ Transform:
m_GameObject
:
{
fileID
:
1713675711
}
m_LocalRotation
:
{
x
:
0.7071068
,
y
:
-0
,
z
:
-0
,
w
:
0.7071068
}
m_LocalPosition
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalScale
:
{
x
:
500
,
y
:
500
.00024
,
z
:
1
}
m_LocalScale
:
{
x
:
500
,
y
:
500
,
z
:
1
}
m_Children
:
-
{
fileID
:
948598109
}
m_Father
:
{
fileID
:
739347347
}
...
...
@@ -3812,13 +3812,13 @@ SpriteRenderer:
m_LightmapParameters
:
{
fileID
:
0
}
m_SortingLayerID
:
0
m_SortingLayer
:
0
m_SortingOrder
:
0
m_SortingOrder
:
-1
m_Sprite
:
{
fileID
:
0
}
m_Color
:
{
r
:
1
,
g
:
1
,
b
:
1
,
a
:
1
}
m_Color
:
{
r
:
0.04416871
,
g
:
1
,
b
:
0
,
a
:
1
}
m_FlipX
:
0
m_FlipY
:
0
m_DrawMode
:
0
m_Size
:
{
x
:
19.2
,
y
:
10.8
}
m_DrawMode
:
2
m_Size
:
{
x
:
0.01
,
y
:
0.01
}
m_AdaptiveModeThreshold
:
0.5
m_SpriteTileMode
:
0
m_WasSpriteAssigned
:
0
...
...
This diff is collapsed.
Click to expand it.
Assets/Scripts/FlatlandMovement.cs
View file @
cf50696c
...
...
@@ -200,7 +200,7 @@ public class FlatlandMovement : MonoBehaviour
Vector3
finaldeltav
=
new
Vector3
((
float
)(
deltav
[
1
]
/
tt
),
0.0f
,
(
float
)(
deltav
[
2
]
/
tt
));
this
.
v
=
finaldeltav
;
//
this.v = finaldeltav;
}
...
...
This diff is collapsed.
Click to expand it.
Assets/Scripts/PathRenderer.cs
View file @
cf50696c
...
...
@@ -89,21 +89,20 @@ public class PathRenderer : MonoBehaviour
square
.
pathList
[
0
]
=
transform
.
localPosition
;
square
.
pathVelocity
[
0
]
=
0.0f
;
var
tmp
=
transform
.
InverseTransformPoint
(
point
);
square
.
pathList
[
1
]
=
new
Vector3
(
tmp
.
x
,
tmp
.
y
,
0.0f
);
square
.
pathVelocity
[
1
]
=
velocityslider
.
GetLogScaleValue
();
square
.
pathList
.
Add
(
new
Vector3
(
tmp
.
x
,
tmp
.
y
,
0.0f
));
square
.
pathVelocity
.
Add
(
velocityslider
.
GetLogScaleValue
());
_pathRenderer
.
positionCount
=
square
.
pathList
.
Count
();
_pathRenderer
.
SetPositions
(
square
.
pathList
.
ToArray
());
_InstantiatePathCollider
(
0
);
}
private
void
_ResetPaths
()
{
_pathRenderer
.
positionCount
=
2
;
_pathRenderer
.
positionCount
=
1
;
square
.
pathList
.
Clear
();
square
.
pathVelocity
.
Clear
();
square
.
pathList
.
Add
(
transform
.
localPosition
);
square
.
pathVelocity
.
Add
(
0.0f
);
square
.
pathList
.
Add
(
transform
.
localPosition
);
square
.
pathVelocity
.
Add
(
0.0f
);
_pathRenderer
.
SetPositions
(
square
.
pathList
.
ToArray
());
for
(
int
i
=
0
;
i
<
transform
.
childCount
;
i
++)
{
...
...
@@ -212,7 +211,7 @@ public class PathRenderer : MonoBehaviour
var
atmp
=
(
float
)(
v
*
Constants
.
c
);
double
[]
vtmp
=
{
(
atmp
*
(
acceleration
.
x
/
acceleration
.
magnitude
)),
0.0
,
(
atmp
*
(
acceleration
.
z
/
acceleration
.
magnitude
))
};
double
[]
xtmp
=
{
dest
.
magnitude
/
(
v
*
Constants
.
c
),
dest
.
x
,
dest
.
z
};
double
[]
xtmp
=
{
dest
.
magnitude
/
(
v
),
dest
.
x
,
dest
.
z
};
var
deltavnaive
=
V
.
DenseOfArray
(
vtmp
);
var
deltaxnaive
=
V
.
DenseOfArray
(
xtmp
);
...
...
@@ -247,123 +246,7 @@ public class PathRenderer : MonoBehaviour
}
yield
return
new
WaitForFixedUpdate
();
}
/*
levelManager.player.alpha = new Vector3(0, 0, 0);
var v = square.GetPathVelocity(i);
var atmp = (float)(v * Constants.c);
double[] vtmp = { ((acceleration.x / acceleration.magnitude)), 0.0, ((acceleration.z / acceleration.magnitude)) };
var deltavnaive = V.DenseOfArray(vtmp);
double[] tmp = {Constants.c * Constants.Gamma(deltavnaive.L2Norm()),
deltavnaive[0] * Constants.Gamma(deltavnaive.L2Norm()),
deltavnaive[2] * Constants.Gamma(deltavnaive.L2Norm())};
var deltav = V.DenseOfArray(tmp);
if (u.magnitude > 0.0f)
{
deltav = Constants.BoostMatrix(u) * deltav;
var deltavsize = Mathf.Sqrt((float)(deltav[1] * deltav[1] + deltav[2] * deltav[2]));
deltav = atmp / deltavsize * deltav;
deltav[0] = Constants.Gamma(atmp) * Constants.c;
deltav[1] *= Constants.Gamma(atmp);
deltav[2] *= Constants.Gamma(atmp);
deltav = Constants.BoostMatrix(-u) * deltav;
}
else
{
var deltavsize = Mathf.Sqrt((float)(deltav[1] * deltav[1] + deltav[2] * deltav[2]));
deltav = atmp / deltavsize * deltav;
deltav[0] = Constants.Gamma(atmp) * Constants.c;
deltav[1] *= Constants.Gamma(atmp);
deltav[2] *= Constants.Gamma(atmp);
}
var tt = deltav[0] / Constants.c;
Vector3 finaldeltav = new Vector3((float)(deltav[1] / tt), 0.0f, (float)(deltav[2] / tt));
levelManager.player.v = finaldeltav;
var prevdistance = (dest
+ (new Vector3(Background.transform.position.x, 0, Background.transform.position.z))
- (new Vector3(levelManager.player.transform.position.x, 0, levelManager.player.transform.position.z)));
yield return new WaitForFixedUpdate();
while (true)
{
var distanceleft = (dest
+ (new Vector3(Background.transform.position.x, 0, Background.transform.position.z))
- (new Vector3(levelManager.player.transform.position.x, 0, levelManager.player.transform.position.z)));
if (distanceleft.magnitude - prevdistance.magnitude >= 0.0f)
break;
prevdistance = distanceleft;
yield return new WaitForFixedUpdate();
}*/
/*
var offsetstartpos = new Vector3(Background.transform.position.x, 0, Background.transform.position.z);
var startpos = new Vector3(levelManager.player.transform.position.x, 0, levelManager.player.transform.position.z);
acceleration = acceleration.normalized;
var deltat = Time.fixedDeltaTime * tinterval;
var v = square.GetPathVelocity(i);
acceleration = (float)((Constants.c / deltat) * MathNet.Numerics.Trig.Asinh(v * Constants.Gamma(v * Constants.c))) * acceleration;
// acceleration required to accelerate to v in deltat seconds: see https://en.wikiversity.org/wiki/Theory_of_relativity/Rindler_coordinates
var startv = levelManager.player.v;
levelManager.player.alpha = acceleration;
for (var j = 0; j < tinterval; ++j)
{
var tmp = (dest
+ (new Vector3(Background.transform.position.x, 0, Background.transform.position.z))
- (new Vector3(levelManager.player.transform.position.x, 0, levelManager.player.transform.position.z)));
yield return new WaitForFixedUpdate();
}
levelManager.player.alpha = new Vector3(0, 0, 0);
var offsetnewpos = new Vector3(Background.transform.position.x, 0, Background.transform.position.z);
var newpos = new Vector3(levelManager.player.transform.position.x, 0, levelManager.player.transform.position.z);
var posdiff = newpos - startpos;
var offset = offsetnewpos - offsetstartpos;
posdiff = posdiff - offset;
while(true)
{
var tmp = (dest
+ (new Vector3(Background.transform.position.x, 0, Background.transform.position.z))
- (new Vector3(levelManager.player.transform.position.x, 0, levelManager.player.transform.position.z)));
if (tmp.magnitude - posdiff.magnitude < 0.0f)
break;
yield return new WaitForFixedUpdate();
}
acceleration = -acceleration;
levelManager.player.alpha = acceleration;
for (var j = 0; j < tinterval; ++j)
{
yield return new WaitForFixedUpdate();
}
levelManager.player.alpha = new Vector3(0, 0, 0);
*/
levelManager
.
player
.
v
=
u
;
levelManager
.
player
.
transform
.
position
=
new
Vector3
(
startpos
.
x
+
finaldeltax
.
x
...
...
This diff is collapsed.
Click to expand it.
Assets/Scripts/PlayerMovement.cs
View file @
cf50696c
...
...
@@ -15,6 +15,9 @@ public class PlayerMovement : FlatlandMovement,IInteractor
private
List
<
InteractiveObject
>
interactiveObjects
;
private
Vector3
startScale
;
private
Vector3
backgroundStartScale
;
// Start is called before the first frame update
void
Start
()
{
...
...
@@ -25,6 +28,8 @@ public class PlayerMovement : FlatlandMovement,IInteractor
time
=
0.0f
;
isinertial
=
true
;
alpha
=
new
Vector3
(
0.0f
,
0.0f
,
0.0f
);
startScale
=
theobject
.
transform
.
localScale
;
backgroundStartScale
=
background
.
transform
.
localScale
;
interactiveObjects
=
new
List
<
InteractiveObject
>();
}
...
...
@@ -52,20 +57,20 @@ public class PlayerMovement : FlatlandMovement,IInteractor
{
base
.
FixedUpdate
();
if
(
v
.
magnitude
>
0.0f
)
/*
if (v.magnitude > 0.0f)
{
Time.fixedDeltaTime = 0.02f / (float)Constants.Gamma(v.magnitude);
if (Time.fixedDeltaTime < 0.002f)
Time.fixedDeltaTime = 0.002f;
}
}
*/
var
prevup
=
transform
.
up
;
var
prevfor
=
transform
.
forward
;
var
prevorient
=
orientation
;
transform
.
Translate
((
float
)
Constants
.
c
*
Vector3
.
up
*
Time
.
fixedDeltaTime
*
(
float
)
gamma
,
Space
.
World
);
// move up by 1 second
//transform.Translate(Vector3.forward * Time.fixedDeltaTime, Space.World);
//transform.Translate(0.5f*Vector3.forward * Mathf.Cos(2*Mathf.PI*cnt/480) * Time.fixedDeltaTime, Space.World);
//transform.Translate(0.5f*Vector3.left * Mathf.Sin(2 * Mathf.PI * cnt / 480) * Time.fixedDeltaTime, Space.World);
...
...
@@ -79,12 +84,12 @@ public class PlayerMovement : FlatlandMovement,IInteractor
var
dt
=
(
Constants
.
c
/
alpha
.
magnitude
)
*
MathNet
.
Numerics
.
Trig
.
Sinh
(
alpha
.
magnitude
*
Time
.
fixedDeltaTime
/
Constants
.
c
);
var
atmp
=
(
alpha
.
magnitude
*
dt
)
/
Mathf
.
Sqrt
(
1
+
(
float
)((
alpha
.
magnitude
*
dt
/
Constants
.
c
)
*
(
alpha
.
magnitude
*
dt
/
Constants
.
c
)));
/
Mathf
.
Sqrt
(
1
+
(
float
)((
alpha
.
magnitude
*
dt
/
Constants
.
c
)
*
(
alpha
.
magnitude
*
dt
/
Constants
.
c
)));
//var atmp = alpha.magnitude * Time.fixedDeltaTime;
double
[]
vtmp
=
{
(
atmp
*
(
alpha
.
x
/
alpha
.
magnitude
)),
0.0
,(
atmp
*
(
alpha
.
z
/
alpha
.
magnitude
))
};
double
[]
vtmp
=
{
(
atmp
*
(
alpha
.
x
/
alpha
.
magnitude
)),
0.0
,
(
atmp
*
(
alpha
.
z
/
alpha
.
magnitude
))
};
var
deltavnaive
=
V
.
DenseOfArray
(
vtmp
);
double
[]
tmp
=
{
Constants
.
c
*
Constants
.
Gamma
(
deltavnaive
.
L2Norm
()),
...
...
@@ -98,10 +103,10 @@ public class PlayerMovement : FlatlandMovement,IInteractor
{
deltav
=
Constants
.
BoostMatrix
(-
v
)
*
deltav
;
}
var
tt
=
deltav
[
0
]
/
Constants
.
c
;
Vector3
finaldeltav
=
new
Vector3
((
float
)(
deltav
[
1
]
/
tt
),
0.0f
,
(
float
)(
deltav
[
2
]/
tt
));
Vector3
finaldeltav
=
new
Vector3
((
float
)(
deltav
[
1
]
/
tt
),
0.0f
,
(
float
)(
deltav
[
2
]
/
tt
));
var
hmm
=
finaldeltav
-
v
;
...
...
@@ -133,7 +138,7 @@ public class PlayerMovement : FlatlandMovement,IInteractor
var
neworientation
=
(
Quaternion
.
FromToRotation
(
Vector3
.
up
,
vt
))
*
orientation
;
theobject
.
transform
.
rotation
=
Quaternion
.
LookRotation
(
neworientation
,
vt
);
if
(
background
.
GetComponent
<
BackgroundMovement
>().
Toggle
)
if
(
background
.
GetComponent
<
BackgroundMovement
>().
Toggle
)
background
.
transform
.
rotation
=
Quaternion
.
LookRotation
(-
vt
,
neworientation
);
theobject
.
transform
.
parent
=
null
;
...
...
@@ -146,7 +151,12 @@ public class PlayerMovement : FlatlandMovement,IInteractor
theobject
.
transform
.
parent
=
transform
;
if
(
background
.
GetComponent
<
BackgroundMovement
>().
Toggle
)
{
background
.
transform
.
parent
=
transform
;
background
.
transform
.
localScale
=
backgroundStartScale
;
}
theobject
.
transform
.
localScale
=
startScale
;
transform
.
localScale
=
new
Vector3
(
1.0f
,
1.0f
,
(
float
)
gamma
);
// scale x'-axis scale (distance dilation)
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment