Add Aff_transformation_3::is_translation() which checks the rep

This commit is contained in:
Andreas Fabri
2021-04-13 19:38:28 +01:00
parent a8e8752634
commit ac9b5b2fbd
6 changed files with 42 additions and 2 deletions
@@ -161,6 +161,9 @@ public:
bool is_even() const { return this->Ptr()->is_even(); }
bool is_odd() const { return ! (this->Ptr()->is_even()); }
bool is_translation() const { return this->Ptr()->is_translation(); }
FT cartesian(int i, int j) const { return this->Ptr()->cartesian(i,j); }
FT homogeneous(int i, int j) const { return cartesian(i,j); }
FT m(int i, int j) const { return cartesian(i,j); }
@@ -54,6 +54,7 @@ public:
virtual Aff_transformation_3 inverse() const = 0;
virtual Aff_transformation_3 transpose() const = 0;
virtual bool is_even() const = 0;
virtual bool is_translation() const = 0;
virtual FT cartesian(int i, int j) const = 0;
virtual std::ostream &print(std::ostream &os) const = 0;
};
@@ -144,6 +145,12 @@ public:
t31, t32, t33) == POSITIVE;
}
virtual bool is_translation() const
{
return false;
}
virtual FT cartesian(int i, int j) const
{
switch (i)
@@ -121,6 +121,12 @@ public:
return true;
}
virtual bool is_translation() const
{
return false;
}
virtual FT cartesian(int i, int j) const
{
if (i!=j) return FT(0);
@@ -125,6 +125,11 @@ public:
return true;
}
virtual bool is_translation() const
{
return true;
}
virtual FT cartesian(int i, int j) const
{
if (j==i) return FT(1);