I am currently looking into Eigen::Isometry3f
, defined as
typedef Transform<float,3,Isometry> Isometry3f;
.
Therewith i cannot, for example, assign an Affine3f
to that Isometry3f
, which is good to keep the isometry intact. (The reason is, that Mode
is checked in the assignment operator of Transform
.)
I can however - via the Transform::operator(...)
, which shortcuts to Transform::m_matrix(...)
- do
Eigen::Isometry3f iso;
iso.setIdentity();
iso(1, 1) = 2; //works (but should not ?!)
and thus destroy the isometry.
Q1:
Shouldn't Transform::operator(...)
be disallowed or at least issue a warning? If you really want to mess up you could still use Transform.matrix()(1,1) = 2
...
Q2: Are there other pitfalls where i could accidentally destroy my isometry?
Q3:
If there are other pitfalls: what is the intention of Mode==Isometry
? Is it not to ensure closedness/safety?