diff --git a/Assets/NanoBrain/LinearAlgebra/src/Angle.cs b/Assets/NanoBrain/LinearAlgebra/src/Angle.cs
index 70f5b10..7d2fd6b 100644
--- a/Assets/NanoBrain/LinearAlgebra/src/Angle.cs
+++ b/Assets/NanoBrain/LinearAlgebra/src/Angle.cs
@@ -57,7 +57,7 @@ namespace LinearAlgebra {
public readonly float inRevolutions => this.value / 360.0f;
public override string ToString() {
- return $"{this.inDegrees} deg.";
+ return $"{this.inDegrees}\u00B0";
}
public static readonly AngleFloat zero = Degrees(0);
diff --git a/Assets/NanoBrain/LinearAlgebra/src/Spherical.cs b/Assets/NanoBrain/LinearAlgebra/src/Spherical.cs
index 996232c..2f3f801 100644
--- a/Assets/NanoBrain/LinearAlgebra/src/Spherical.cs
+++ b/Assets/NanoBrain/LinearAlgebra/src/Spherical.cs
@@ -124,7 +124,7 @@ namespace LinearAlgebra {
#endif
public override readonly string ToString() {
- return $"Spherical(h: {this.direction.horizontal}, v: {this.direction.vertical}, distance: {this.distance})";
+ return $"Spherical({this.distance}, h: {this.direction.horizontal}, v: {this.direction.vertical})";
}
diff --git a/Assets/NanoBrain/LinearAlgebra/src/Vector3Float.cs b/Assets/NanoBrain/LinearAlgebra/src/Vector3Float.cs
index d8208d3..bcf8626 100644
--- a/Assets/NanoBrain/LinearAlgebra/src/Vector3Float.cs
+++ b/Assets/NanoBrain/LinearAlgebra/src/Vector3Float.cs
@@ -119,6 +119,10 @@ namespace LinearAlgebra {
return new Vector3Float(horizontal, vertical, depth);
}
+ public override string ToString() {
+ return $"({this.horizontal}, {this.vertical}, {this.depth})";
+ }
+
///
/// A vector with zero for all axis
///
diff --git a/Assets/NanoBrain/LinearAlgebra/test/DirectionTest.cs b/Assets/NanoBrain/LinearAlgebra/test/DirectionTest.cs
index 8fe3b93..0eb9882 100644
--- a/Assets/NanoBrain/LinearAlgebra/test/DirectionTest.cs
+++ b/Assets/NanoBrain/LinearAlgebra/test/DirectionTest.cs
@@ -103,7 +103,7 @@ namespace LinearAlgebra.Test {
[Test]
public void ToVector3AndBack2() {
- Direction d1 = Direction.Degrees(135, 85);
+ Direction d1 = Direction.Degrees(-135, 85);
Vector3Float v = d1.ToVector3();
Direction d2 = Direction.FromVector3(v);
Assert.AreEqual(d1.horizontal.inDegrees, d2.horizontal.inDegrees, 0.0001f);
diff --git a/Assets/NanoBrain/LinearAlgebra/test/SphericalTest.cs b/Assets/NanoBrain/LinearAlgebra/test/SphericalTest.cs
index d7553dd..48db8d9 100644
--- a/Assets/NanoBrain/LinearAlgebra/test/SphericalTest.cs
+++ b/Assets/NanoBrain/LinearAlgebra/test/SphericalTest.cs
@@ -234,6 +234,30 @@ namespace LinearAlgebra.Test {
Assert.AreEqual(MathF.Cos(alpha), avg.distance, 1e-4f);
}
+ [Test]
+ public void Average_CompareWithVector3() {
+ // Four vectors around azimuth 0, pi/2, pi, 3pi/2 at same polar angle from vertical (alpha)
+ float alpha = MathF.PI / 6f; // polar angle from vertical
+ float elevation = MathF.PI / 2f - alpha; // convert polar-from-vertical to elevation
+ List dirs = new List {
+ new(1f, Direction.Radians(0f, elevation)),
+ new(2f, Direction.Radians(MathF.PI/2, elevation+1)),
+ new(3f, Direction.Radians(MathF.PI, elevation+2)),
+ new(4f, Direction.Radians(3*MathF.PI/2, elevation+3))
+ };
+
+ Spherical avg = Spherical.Average(dirs);
+
+ Vector3Float r = Vector3Float.zero;
+ foreach (Spherical dir in dirs) {
+ r += dir.ToVector3();
+ }
+ r = r / 4;
+ Spherical avg2 = Spherical.FromVector3(r);
+
+ Assert.AreEqual(avg, avg2);
+ }
+
}
}
#endif
\ No newline at end of file