Base: introduce uniform scaling of matrix

This commit is contained in:
0penBrain
2022-02-04 14:11:06 +01:00
committed by wwmayer
parent 538f4dd14b
commit 47e7257cd3
2 changed files with 12 additions and 1 deletions

View File

@@ -157,6 +157,11 @@ public:
/// scale for the x,y,z value
void scale (const Vector3f& rclVct);
void scale (const Vector3d& rclVct);
/// uniform scale
void scale (float scalexyz)
{ scale(Vector3f(scalexyz, scalexyz, scalexyz)); }
void scale (double scalexyz)
{ scale(Vector3d(scalexyz, scalexyz, scalexyz)); }
/// Check for scaling factor, 0: not scale, 1: uniform scale, or else -1
int hasScale(double tol=0.0) const;
/// Rotate around the X axis (in transformed space) for the given value in radians

View File

@@ -315,13 +315,19 @@ PyObject* MatrixPy::scale(PyObject * args)
}
// clears the error from previous PyArg_ParseTuple()
PyErr_Clear();
if (PyArg_ParseTuple(args, "d", &x)) {
vec.x = vec.y = vec.z = x;
break;
}
// clears the error from previous PyArg_ParseTuple()
PyErr_Clear();
if (PyArg_ParseTuple(args, "O!", &PyTuple_Type, &pcVecObj)) {
vec = getVectorFromTuple<double>(pcVecObj);
break;
}
// clears the error from previous PyArg_ParseTuple()
PyErr_Clear();
if (PyArg_ParseTuple(args, "O!;three floats, or a tuple, or a vector is needed",
if (PyArg_ParseTuple(args, "O!;one or three floats, or a tuple, or a vector is needed",
&(Base::VectorPy::Type), &pcVecObj)) {
Base::VectorPy *pcObject = static_cast<Base::VectorPy*>(pcVecObj);
Base::Vector3d* val = pcObject->getVectorPtr();