Base: fix Matrix4D::hasScale

* If all column vectors of the 3x3 sub-matrix are equal the function incorrectly claims that it's uniform scaling.
* Detect also non-uniform scaling and if was applied from the left or right side
* Replace the int with an enum and expose it to Python
* Add several new unit tests
This commit is contained in:
wmayer
2022-02-15 21:05:11 +01:00
parent 48e2ee100c
commit a5e561b31d
8 changed files with 110 additions and 40 deletions

View File

@@ -4297,7 +4297,8 @@ bool TopoShape::_makETransform(const TopoShape &shape,
const Base::Matrix4D &rclTrf, const char *op, bool checkScale, bool copy)
{
if(checkScale) {
if(rclTrf.hasScale()<0) {
auto type = rclTrf.hasScale();
if (type != Base::ScaleType::Uniform && type != Base::ScaleType::NoScaling) {
makEGTransform(shape,rclTrf,op,copy);
return true;
}