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

@@ -351,7 +351,10 @@ PyObject* MatrixPy::hasScale(PyObject * args)
double tol=0;
if (!PyArg_ParseTuple(args, "|d", &tol))
return nullptr;
return Py::new_reference_to(Py::Int(getMatrixPtr()->hasScale(tol)));
ScaleType type = getMatrixPtr()->hasScale(tol);
Py::Module mod("FreeCAD");
return Py::new_reference_to(mod.callMemberFunction("ScaleType", Py::TupleN(Py::Int(static_cast<int>(type)))));
}
PyObject* MatrixPy::nullify(PyObject * args)