Skip to content

Commit 984ae25

Browse files
committed
Minor code cleanup
1 parent 8c2a47e commit 984ae25

File tree

2 files changed

+26
-38
lines changed

2 files changed

+26
-38
lines changed

inc/deform/trajectory.h

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@
2727
#pragma warning (pop)
2828
#endif
2929

30+
#include <iostream>
31+
3032
namespace deform {
3133

32-
template<class PrecisionType = typename MeshType::Scalar>
34+
template<class PrecisionType>
3335
class TrajectorySE3 {
3436
public:
3537

@@ -66,15 +68,13 @@ namespace deform {
6668
Transform delta = _keyframes[n - 2].inverse(Eigen::Isometry) * _keyframes[n - 1];
6769

6870
SE3Group g(delta.matrix());
69-
_omegas.push_back(g.log());
71+
_omega.push_back(g.log());
7072

7173
if (n == 2) {
72-
Transform deltainv = delta.inverse(Eigen::Isometry);
73-
SE3Group g(deltainv.matrix());
74-
_omegas[0] = g.log();
74+
_omega[0] = g.inverse().log();
7575
}
7676
} else {
77-
_omegas.push_back(SE3Group::Tangent::Zero()); // Will be fixed when second keyframe is given.
77+
_omega.push_back(SE3Group::Tangent::Zero()); // Will be fixed when second keyframe is given.
7878
}
7979
}
8080

@@ -88,39 +88,41 @@ namespace deform {
8888

8989
const Scalar u = s - Scalar(i);
9090
const Eigen::Matrix<Scalar, 4, 1> b = _C * Eigen::Matrix<Scalar, 4, 1>(Scalar(1), u, u*u, u*u*u);
91-
91+
9292
Transform trans = previousTransform(i);
93+
94+
Transform prod = Transform::Identity();
9395
for (int j = 1; j < 4; ++j) {
94-
SE3Group::Tangent o = omega(i + j);
95-
std::cout << "omega is " << o.transpose() << std::endl;
96-
std::cout << "b is" << b(j) << std::endl;
97-
std::cout << "omega * b is " << (b(j) * o).transpose() << std::endl;
98-
99-
trans = trans * SE3Group::exp(b(j) * o).affine3();
96+
typename SE3Group::Tangent o = omega(i + j);
97+
prod = prod * SE3Group::exp(b(j) * o).affine3();
10098
}
101-
102-
return trans;
99+
100+
return trans * prod;
103101
}
104102

105103
private:
106104

107105
typename SE3Group::Tangent omega(int idx) const {
108-
if ((size_t)idx < _omegas.size())
109-
return _omegas[idx];
110-
else
111-
return _omegas.back();
106+
if ((size_t)idx < _omega.size()) {
107+
return _omega[idx];
108+
} else {
109+
// Extrapolate
110+
return _omega.back();
111+
}
112112
}
113113

114114
Transform previousTransform(int idx) const {
115-
if (idx == 0)
116-
return SE3Group::exp(_omegas[0]).affine3() * _keyframes[0];
117-
else
115+
if (idx == 0) {
116+
// Extrapolate
117+
return SE3Group::exp(_omega[0]).affine3() * _keyframes[0];
118+
} else {
118119
return _keyframes[idx - 1];
120+
}
119121
}
120122

121123
Scalar _timeStep;
122124
std::vector<Transform, Eigen::aligned_allocator<Transform> > _keyframes;
123-
std::vector<typename SE3Group::Tangent, Eigen::aligned_allocator<typename SE3Group::Tangent> > _omegas;
125+
std::vector<typename SE3Group::Tangent, Eigen::aligned_allocator<typename SE3Group::Tangent> > _omega;
124126
Eigen::Matrix<Scalar, 4, 4> _C;
125127
};
126128
}

tests/test_trajectory.cpp

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ TEST_CASE("trajectory")
3939

4040
// time 4
4141
trans = trans * Eigen::Translation3f(0, 0, 1) * Eigen::AngleAxisf(M_PI / 4, Eigen::Vector3f::UnitX());
42-
std::cout << "Trans" << trans.matrix() << std::endl;
42+
std::cout << "Expected transform" << std::endl << trans.matrix() << std::endl;
4343
path.addKeyframe(trans);
4444

45-
4645
// time 5
4746
trans *= Eigen::Translation3f(0, 0, 1);
4847
path.addKeyframe(trans);
@@ -59,21 +58,8 @@ TEST_CASE("trajectory")
5958
trans *= Eigen::Translation3f(0, 0, 1);
6059
path.addKeyframe(trans);
6160

62-
/*
63-
for (float time = 0.f; time <= 6; time += 0.5f) {
64-
std::cout << time << std::endl;
65-
std::cout << path(time).matrix() << std::endl;
66-
std::cout << "---------------------" << std::endl;
67-
}
68-
*/
69-
70-
//std::cout << path(3.5f).matrix() << std::endl;
7161

7262
std::cout << "Transform is" << std::endl;
7363
std::cout << path(4.f).matrix() << std::endl;
74-
//std::cout << path(4.5f).matrix() << std::endl;
75-
//std::cout << path(5.0f).matrix() << std::endl;
76-
77-
//REQUIRE(sp.isApprox(expected, 1e-4f));
7864
}
7965

0 commit comments

Comments
 (0)