Skip to content

Commit b77d312

Browse files
committed
Fixing bugs in new DefaultProbeController
- Had to deal with rotations properly. ProbeController now defines movements in xyz World space and then rotates them into the Probe's TransformedSpace when applying - Moved Bregma relative offset into the CCFSpace class instead of the CoordinateTransform - Added World2World function which in theory allows for mesh modification
1 parent 7211968 commit b77d312

File tree

9 files changed

+2588
-11619
lines changed

9 files changed

+2588
-11619
lines changed

Assets/Scenes/TrajectoryPlanner.unity

Lines changed: 2378 additions & 11469 deletions
Large diffs are not rendered by default.

Assets/Scripts/Insertion/ProbeInsertion.cs

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public class ProbeInsertion
3030
public float theta;
3131
public float spin;
3232

33+
/// <summary>
34+
/// The **transformed** coordinate in the active CoordinateSpace
35+
/// </summary>
3336
public Vector3 apmldv
3437
{
3538
get => new Vector3(ap, ml, dv);
@@ -79,17 +82,38 @@ public ProbeInsertion(Vector3 tipPosition, Vector3 angles,
7982

8083
#endregion
8184

82-
public Vector3 GetPositionSpace()
85+
/// <summary>
86+
/// Get the corresponding **un-transformed** coordinate in the CoordinateSpace
87+
/// </summary>
88+
/// <returns></returns>
89+
public Vector3 PositionSpace()
8390
{
8491
return _coordinateTransform.Transform2Space(apmldv);
8592
}
8693

87-
public Vector3 GetPositionWorld()
94+
/// <summary>
95+
/// Get the corresponding **transformed** coordinate in World
96+
/// </summary>
97+
/// <returns></returns>
98+
public Vector3 PositionWorld()
8899
{
89-
return _coordinateSpace.Space2World(GetPositionSpace());
100+
return _coordinateSpace.Space2World(_coordinateTransform.Transform2SpaceRot(apmldv));
90101
}
91102

92-
// Convenience function for transforming world to this insertion's transformed space (i.e. world -> space -> transformed)
103+
/// <summary>
104+
/// Get the corresponding **un-transformed** coordinate in World
105+
/// </summary>
106+
/// <returns></returns>
107+
public Vector3 GetPositionWorldUnTransformed()
108+
{
109+
return _coordinateSpace.Space2World(PositionSpace());
110+
}
111+
112+
/// <summary>
113+
/// Convert a world coordinate into the ProbeInsertion's transformed space
114+
/// </summary>
115+
/// <param name="coordWorld"></param>
116+
/// <returns></returns>
93117
public Vector3 World2Transformed(Vector3 coordWorld)
94118
{
95119
return _coordinateTransform.Space2Transform(_coordinateSpace.World2Space(coordWorld));
@@ -100,6 +124,22 @@ public Vector3 World2TransformedRot(Vector3 coordWorld)
100124
return _coordinateTransform.Space2TransformRot(_coordinateSpace.World2SpaceRot(coordWorld));
101125
}
102126

127+
/// <summary>
128+
/// Convert a world coordinate into the corresponding world coordinate after transformation
129+
/// </summary>
130+
/// <param name="coordWorld"></param>
131+
/// <returns></returns>
132+
public Vector3 World2World(Vector3 coordWorld)
133+
{
134+
//_coordinateSpace.Space2World(_coordinateTransform.Transform2SpaceRot(
135+
Debug.Log(coordWorld);
136+
Debug.Log(_coordinateSpace.World2Space(coordWorld));
137+
Debug.Log(_coordinateTransform.Space2Transform(_coordinateSpace.World2Space(coordWorld)));
138+
Debug.Log(_coordinateTransform.Transform2SpaceRot(_coordinateTransform.Space2Transform(_coordinateSpace.World2Space(coordWorld))));
139+
Debug.Log(_coordinateSpace.Space2World(_coordinateTransform.Transform2SpaceRot(_coordinateTransform.Space2Transform(_coordinateSpace.World2Space(coordWorld)))));
140+
return _coordinateSpace.Space2World(_coordinateTransform.Transform2SpaceRot(_coordinateTransform.Space2Transform(_coordinateSpace.World2Space(coordWorld))));
141+
}
142+
103143
public Vector3 Transformed2World(Vector3 coordTransformed)
104144
{
105145
return _coordinateSpace.Space2World(_coordinateTransform.Transform2Space(coordTransformed));

0 commit comments

Comments
 (0)