How to ensure Eigen isometry stays isometric?

Viewed 1052

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?

1 Answers
Related