Skip to content

Commit

Permalink
Updates the test to follow the naiming style and moves the .i and pyt…
Browse files Browse the repository at this point in the history
…hon test to the python folder.

Signed-off-by: LolaSegura <lsegura@ekumenlabs.com>
  • Loading branch information
LolaSegura committed Aug 20, 2021
1 parent 7ac05b6 commit 88dc6f6
Show file tree
Hide file tree
Showing 10 changed files with 137 additions and 114 deletions.
8 changes: 8 additions & 0 deletions src/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ if (SWIG_FOUND)
set(swig_files
Angle
GaussMarkovProcess
Matrix3
Matrix4
Pose3
Quaternion
Rand
Vector2
Vector3
Expand Down Expand Up @@ -70,7 +74,11 @@ if (PYTHONLIBS_FOUND)
set(python_tests
Angle_TEST
GaussMarkovProcess_TEST
Matrix3_TEST
Matrix4_TEST
Pose3_TEST
python_TEST
Quaternion_TEST
Rand_TEST
Vector2_TEST
Vector3_TEST
Expand Down
1 change: 1 addition & 0 deletions src/Matrix3.i → src/python/Matrix3.i
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ namespace ignition
const Vector3<T> &_yAxis,
const Vector3<T> &_zAxis);
public: void Axis(const Vector3<T> &_axis, T _angle);
%rename(from_2_axes) From2Axes;
public: void From2Axes(const Vector3<T> &_v1, const Vector3<T> &_v2);
public: void Col(unsigned int _c, const Vector3<T> &_v);
public: Matrix3<T> operator-(const Matrix3<T> &_m) const;
Expand Down
53 changes: 28 additions & 25 deletions src/Matrix3_TEST.py → src/python/Matrix3_TEST.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def test_vector3_mul(self):
self.assertAlmostEqual(Matrix3d.ZERO, matrix * 0)

# Vector3.ZERO
self.assertAlmostEqual(Vector3d.Zero, matrix * Vector3d.Zero)
self.assertAlmostEqual(Vector3d.ZERO, matrix * Vector3d.ZERO)

# Matrix3.ZERO
self.assertAlmostEqual(Matrix3d.ZERO, matrix * Matrix3d.ZERO)
Expand All @@ -133,11 +133,14 @@ def test_vector3_mul(self):
# Vector3.Unit
# right multiply
self.assertAlmostEqual(Vector3d(matrix(0, 0), matrix(1, 0),
matrix(2, 0)), matrix * Vector3d.UnitX)
matrix(2, 0)),
matrix * Vector3d.UNIT_X)
self.assertAlmostEqual(Vector3d(matrix(0, 1), matrix(1, 1),
matrix(2, 1)), matrix * Vector3d.UnitY)
matrix(2, 1)),
matrix * Vector3d.UNIT_Y)
self.assertAlmostEqual(Vector3d(matrix(0, 2), matrix(1, 2),
matrix(2, 2)), matrix * Vector3d.UnitZ)
matrix(2, 2)),
matrix * Vector3d.UNIT_Z)

# Matrix3.IDENTITY
self.assertAlmostEqual(matrix, matrix * Matrix3d.IDENTITY)
Expand Down Expand Up @@ -231,10 +234,10 @@ def test_from_2axes(self):
v2 = Vector3d(0.0, 1.0, 0.0)

m1 = Matrix3d()
m1.from_2axes(v1, v2)
m1.from_2_axes(v1, v2)

m2 = Matrix3d()
m2.from_2axes(v2, v1)
m2.from_2_axes(v2, v1)

m1Correct = Matrix3d(0, -1, 0,
1, 0, 0,
Expand All @@ -250,18 +253,18 @@ def test_from_2axes(self):
self.assertAlmostEqual(v1, m2 * v2)

# rotation about 45 degrees
v1.Set(1.0, 0.0, 0.0)
v2.Set(1.0, 1.0, 0.0)
m2.from_2axes(v1, v2)
v1.set(1.0, 0.0, 0.0)
v2.set(1.0, 1.0, 0.0)
m2.from_2_axes(v1, v2)
# m1 is 90 degrees rotation
self.assertAlmostEqual(m1, m2*m2)

# with non-unit vectors
v1.Set(0.5, 0.5, 0)
v2.Set(-0.5, 0.5, 0)
v1.set(0.5, 0.5, 0)
v2.set(-0.5, 0.5, 0)

m1.from_2axes(v1, v2)
m2.from_2axes(v2, v1)
m1.from_2_axes(v1, v2)
m2.from_2_axes(v2, v1)

self.assertNotEqual(m1, m2)
self.assertAlmostEqual(m1Correct, m1)
Expand All @@ -271,27 +274,27 @@ def test_from_2axes(self):
self.assertAlmostEqual(v1, m2 * v2)

# For zero-length vectors, a unit matrix is returned
v1.Set(0, 0, 0)
v2.Set(-0.5, 0.5, 0)
m1.from_2axes(v1, v2)
v1.set(0, 0, 0)
v2.set(-0.5, 0.5, 0)
m1.from_2_axes(v1, v2)
self.assertAlmostEqual(Matrix3d.IDENTITY, m1)

# For zero-length vectors, a unit matrix is returned
v1.Set(-0.5, 0.5, 0)
v2.Set(0, 0, 0)
m1.from_2axes(v1, v2)
v1.set(-0.5, 0.5, 0)
v2.set(0, 0, 0)
m1.from_2_axes(v1, v2)
self.assertAlmostEqual(Matrix3d.IDENTITY, m1)

# Parallel vectors
v1.Set(1, 0, 0)
v2.Set(2, 0, 0)
m1.from_2axes(v1, v2)
v1.set(1, 0, 0)
v2.set(2, 0, 0)
m1.from_2_axes(v1, v2)
self.assertAlmostEqual(Matrix3d.IDENTITY, m1)

# Opposite vectors
v1.Set(1, 0, 0)
v2.Set(-2, 0, 0)
m1.from_2axes(v1, v2)
v1.set(1, 0, 0)
v2.set(-2, 0, 0)
m1.from_2_axes(v1, v2)
self.assertAlmostEqual(Matrix3d.ZERO - Matrix3d.IDENTITY, m1)


Expand Down
File renamed without changes.
28 changes: 14 additions & 14 deletions src/Matrix4_TEST.py → src/python/Matrix4_TEST.py
Original file line number Diff line number Diff line change
Expand Up @@ -447,16 +447,16 @@ def test_transpose(self):
self.assertEqual(m, mT)

def test_look_at(self):
self.assertAlmostEqual(Matrix4d.look_at(-Vector3d.UnitX,
Vector3d.Zero).pose(),
self.assertAlmostEqual(Matrix4d.look_at(-Vector3d.UNIT_X,
Vector3d.ZERO).pose(),
Pose3d(-1, 0, 0, 0, 0, 0))

self.assertAlmostEqual(Matrix4d.look_at(Vector3d(3, 2, 0),
Vector3d(0, 2, 0)).pose(),
Pose3d(3, 2, 0, 0, 0, math.pi))

self.assertAlmostEqual(Matrix4d.look_at(Vector3d(1, 6, 1),
Vector3d.One).pose(),
Vector3d.ONE).pose(),
Pose3d(1, 6, 1, 0, 0, -math.pi/2))

self.assertAlmostEqual(Matrix4d.look_at(Vector3d(-1, -1, 0),
Expand All @@ -468,49 +468,49 @@ def test_look_at(self):
Vector3d(999, -0.6, 0)),
Matrix4d.look_at(Vector3d(0.1, -5, 222),
Vector3d(999, -0.6, 0),
Vector3d.UnitZ))
Vector3d.UNIT_Z))

# up == zero, default up = +z
self.assertAlmostEqual(Matrix4d.look_at(Vector3d(1.23, 456, 0.7),
Vector3d(0, 8.9, -10),
Vector3d.Zero),
Vector3d.ZERO),
Matrix4d.look_at(Vector3d(1.23, 456, 0.7),
Vector3d(0, 8.9, -10)))

# up == +x, default up = +z
self.assertAlmostEqual(Matrix4d.look_at(Vector3d(0.25, 9, -5),
Vector3d(-6, 0, 0.4),
Vector3d.UnitX),
Vector3d.UNIT_X),
Matrix4d.look_at(Vector3d(0.25, 9, -5),
Vector3d(-6, 0, 0.4)))

# up == -x, default up = +z
self.assertAlmostEqual(Matrix4d.look_at(Vector3d(0, 0, 0.2),
Vector3d(-8, 0, -6),
-Vector3d.UnitX),
-Vector3d.UNIT_X),
Matrix4d.look_at(Vector3d(0, 0, 0.2),
Vector3d(-8, 0, -6)))

# eye == target, default direction = +x
self.assertAlmostEqual(Matrix4d.look_at(Vector3d.One,
Vector3d.One),
Matrix4d.look_at(Vector3d.One,
self.assertAlmostEqual(Matrix4d.look_at(Vector3d.ONE,
Vector3d.ONE),
Matrix4d.look_at(Vector3d.ONE,
Vector3d(1.0001, 1, 1)))

# Not possible to keep _up on +z
self.assertAlmostEqual(Matrix4d.look_at(Vector3d(-1, 0, 10),
Vector3d(-1, 0, 0)),
Matrix4d.look_at(Vector3d(-1, 0, 10),
Vector3d(-1, 0, 0),
-Vector3d.UnitX))
-Vector3d.UNIT_X))

# Different ups
self.assertAlmostEqual(Matrix4d.look_at(Vector3d.One,
self.assertAlmostEqual(Matrix4d.look_at(Vector3d.ONE,
Vector3d(0, 1, 1),
Vector3d.UnitY).pose(),
Vector3d.UNIT_Y).pose(),
Pose3d(1, 1, 1, math.pi/2, 0, math.pi))

self.assertAlmostEqual(Matrix4d.look_at(Vector3d.One,
self.assertAlmostEqual(Matrix4d.look_at(Vector3d.ONE,
Vector3d(0, 1, 1),
Vector3d(0, 1, 1)).pose(),
Pose3d(1, 1, 1, math.pi/4, 0, math.pi))
Expand Down
File renamed without changes.
50 changes: 25 additions & 25 deletions src/Pose3_TEST.py → src/python/Pose3_TEST.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,44 +41,44 @@ def test_pose(self):
# A is the transform from O to P specified in frame O
# B is the transform from P to Q specified in frame P
# then, B + A is the transform from O to Q specified in frame O
self.assertAlmostEqual((B + A).pos().X(), 1.0 + 1.0/math.sqrt(2))
self.assertAlmostEqual((B + A).pos().Y(), 1.0/math.sqrt(2))
self.assertAlmostEqual((B + A).pos().Z(), 0.0)
self.assertAlmostEqual((B + A).rot().euler().X(), 0.0)
self.assertAlmostEqual((B + A).rot().euler().Y(), 0.0)
self.assertAlmostEqual((B + A).rot().euler().Z(), 3.0*math.pi/4.0)
self.assertAlmostEqual((B + A).pos().x(), 1.0 + 1.0/math.sqrt(2))
self.assertAlmostEqual((B + A).pos().y(), 1.0/math.sqrt(2))
self.assertAlmostEqual((B + A).pos().z(), 0.0)
self.assertAlmostEqual((B + A).rot().euler().x(), 0.0)
self.assertAlmostEqual((B + A).rot().euler().y(), 0.0)
self.assertAlmostEqual((B + A).rot().euler().z(), 3.0*math.pi/4.0)

# If:
# A is the transform from O to P in frame O
# B is the transform from O to Q in frame O
# then -A is transform from P to O specified in frame P
self.assertAlmostEqual((Pose3d() - A).pos().X(), -1.0/math.sqrt(2))
self.assertAlmostEqual((Pose3d() - A).pos().Y(), 1.0/math.sqrt(2))
self.assertAlmostEqual((Pose3d() - A).pos().Z(), 0.0)
self.assertAlmostEqual((Pose3d() - A).rot().euler().X(), 0.0)
self.assertAlmostEqual((Pose3d() - A).rot().euler().Y(), 0.0)
self.assertAlmostEqual((Pose3d() - A).rot().euler().Z(), -math.pi/4)
self.assertAlmostEqual((Pose3d() - A).pos().x(), -1.0/math.sqrt(2))
self.assertAlmostEqual((Pose3d() - A).pos().y(), 1.0/math.sqrt(2))
self.assertAlmostEqual((Pose3d() - A).pos().z(), 0.0)
self.assertAlmostEqual((Pose3d() - A).rot().euler().x(), 0.0)
self.assertAlmostEqual((Pose3d() - A).rot().euler().y(), 0.0)
self.assertAlmostEqual((Pose3d() - A).rot().euler().z(), -math.pi/4)

# test negation operator
self.assertAlmostEqual((-A).pos().X(), -1.0/math.sqrt(2))
self.assertAlmostEqual((-A).pos().Y(), 1.0/math.sqrt(2))
self.assertAlmostEqual((-A).pos().Z(), 0.0)
self.assertAlmostEqual((-A).rot().euler().X(), 0.0)
self.assertAlmostEqual((-A).rot().euler().Y(), 0.0)
self.assertAlmostEqual((-A).rot().euler().Z(), -math.pi/4.0)
self.assertAlmostEqual((-A).pos().x(), -1.0/math.sqrt(2))
self.assertAlmostEqual((-A).pos().y(), 1.0/math.sqrt(2))
self.assertAlmostEqual((-A).pos().z(), 0.0)
self.assertAlmostEqual((-A).rot().euler().x(), 0.0)
self.assertAlmostEqual((-A).rot().euler().y(), 0.0)
self.assertAlmostEqual((-A).rot().euler().z(), -math.pi/4.0)

# If:
# A is the transform from O to P in frame O
# B is the transform from O to Q in frame O
# B - A is the transform from P to Q in frame P
B = Pose3d(Vector3d(1, 1, 0),
Quaterniond(0, 0, math.pi/2.0))
self.assertAlmostEqual((B - A).pos().X(), 1.0/math.sqrt(2))
self.assertAlmostEqual((B - A).pos().Y(), 1.0/math.sqrt(2))
self.assertAlmostEqual((B - A).pos().Z(), 0.0)
self.assertAlmostEqual((B - A).rot().euler().X(), 0.0)
self.assertAlmostEqual((B - A).rot().euler().Y(), 0.0)
self.assertAlmostEqual((B - A).rot().euler().Z(), math.pi/4.0)
self.assertAlmostEqual((B - A).pos().x(), 1.0/math.sqrt(2))
self.assertAlmostEqual((B - A).pos().y(), 1.0/math.sqrt(2))
self.assertAlmostEqual((B - A).pos().z(), 0.0)
self.assertAlmostEqual((B - A).rot().euler().x(), 0.0)
self.assertAlmostEqual((B - A).rot().euler().y(), 0.0)
self.assertAlmostEqual((B - A).rot().euler().z(), math.pi/4.0)

pose = Pose3d()
self.assertTrue(pose.pos() == Vector3d(0, 0, 0))
Expand Down Expand Up @@ -112,7 +112,7 @@ def test_pose(self):
pose -= Pose3d(pose)
self.assertTrue(pose == Pose3d(0, 0, 0, 0, 0, 0))

pose.pos().Set(5, 6, 7)
pose.pos().set(5, 6, 7)
pose.rot().euler(Vector3d(.4, .6, 0))

self.assertTrue(pose.coord_position_add(Vector3d(1, 2, 3)) ==
Expand Down
4 changes: 4 additions & 0 deletions src/Quaternion.i → src/python/Quaternion.i
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ namespace ignition
public: T Pitch() const;
public: T Yaw() const;
public: void ToAxis(Vector3<T> &_axis, T &_angle) const;
%rename(from_2_axes) From2Axes;
public: void From2Axes(const Vector3<T> &_v1, const Vector3<T> &_v2);
public: void Scale(T _scale);
public: Quaternion<T> operator+(const Quaternion<T> &_qt) const;
Expand All @@ -81,8 +82,11 @@ namespace ignition
public: Vector3<T> RotateVectorReverse(const Vector3<T> &_vec) const;
public: bool IsFinite() const;
public: inline void Correct();
%rename(x_axis) XAxis;
public: Vector3<T> XAxis() const;
%rename(y_axis) YAxis;
public: Vector3<T> YAxis() const;
%rename(z_axis) ZAxis;
public: Vector3<T> ZAxis() const;
public: void Round(int _precision);
public: T Dot(const Quaternion<T> &_q) const;
Expand Down
Loading

0 comments on commit 88dc6f6

Please sign in to comment.