// python wrapper for vtkParametricKlein // #define VTK_WRAPPING_CXX #define VTK_STREAMS_FWD_ONLY #include "vtkPythonArgs.h" #include "vtkPythonOverload.h" #include "vtkConfigure.h" #include #include #include "vtkVariant.h" #include "vtkIndent.h" #include "vtkParametricKlein.h" extern "C" { VTK_ABI_EXPORT void PyVTKAddFile_vtkParametricKlein(PyObject *); } extern "C" { VTK_ABI_EXPORT PyObject *PyvtkParametricKlein_ClassNew(); } #ifndef DECLARED_PyvtkParametricFunction_ClassNew extern "C" { PyObject *PyvtkParametricFunction_ClassNew(); } #define DECLARED_PyvtkParametricFunction_ClassNew #endif static const char *PyvtkParametricKlein_Doc = "vtkParametricKlein - Generates a \"classical\" representation of a\nKlein bottle.\n\n" "Superclass: vtkParametricFunction\n\n" "vtkParametricKlein generates a \"classical\" representation of a Klein\n" "bottle. A Klein bottle is a closed surface with no interior and only\n" "one surface. It is unrealisable in 3 dimensions without intersecting\n" "surfaces. It can be realised in 4 dimensions by considering the map\n" "$F:R^2 \\rightarrow R^4 $ given by:\n\n" "- $f(u,v) =\n" " ((r*cos(v)+a)*cos(u),(r*cos(v)+a)*sin(u),r*sin(v)*cos(u/2),r*sin(v)*\n" " sin(u/2)) $\n\n" "The classical representation of the immersion in $R^3 $ is returned\n" "by this function.\n\n" "For further information about this surface, please consult the\n" "technical description \"Parametric surfaces\" in\n" "http://www.vtk.org/publications in the \"VTK Technical Documents\"\n" "section in the VTk.org web pages.\n\n" "@par Thanks: Andrew Maclean andrew.amaclean@gmail.com for creating\n" "and contributing the class.\n\n"; static PyObject * PyvtkParametricKlein_IsTypeOf(PyObject *, PyObject *args) { vtkPythonArgs ap(args, "IsTypeOf"); char *temp0 = nullptr; PyObject *result = nullptr; if (ap.CheckArgCount(1) && ap.GetValue(temp0)) { int tempr = vtkParametricKlein::IsTypeOf(temp0); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkParametricKlein_IsA(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "IsA"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkParametricKlein *op = static_cast(vp); char *temp0 = nullptr; PyObject *result = nullptr; if (op && ap.CheckArgCount(1) && ap.GetValue(temp0)) { int tempr = (ap.IsBound() ? op->IsA(temp0) : op->vtkParametricKlein::IsA(temp0)); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkParametricKlein_SafeDownCast(PyObject *, PyObject *args) { vtkPythonArgs ap(args, "SafeDownCast"); vtkObjectBase *temp0 = nullptr; PyObject *result = nullptr; if (ap.CheckArgCount(1) && ap.GetVTKObject(temp0, "vtkObjectBase")) { vtkParametricKlein *tempr = vtkParametricKlein::SafeDownCast(temp0); if (!ap.ErrorOccurred()) { result = ap.BuildVTKObject(tempr); } } return result; } static PyObject * PyvtkParametricKlein_NewInstance(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "NewInstance"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkParametricKlein *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { vtkParametricKlein *tempr = (ap.IsBound() ? op->NewInstance() : op->vtkParametricKlein::NewInstance()); if (!ap.ErrorOccurred()) { result = ap.BuildVTKObject(tempr); if (result && PyVTKObject_Check(result)) { PyVTKObject_GetObject(result)->UnRegister(0); PyVTKObject_SetFlag(result, VTK_PYTHON_IGNORE_UNREGISTER, 1); } } } return result; } static PyObject * PyvtkParametricKlein_GetDimension(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "GetDimension"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkParametricKlein *op = static_cast(vp); PyObject *result = nullptr; if (op && ap.CheckArgCount(0)) { int tempr = (ap.IsBound() ? op->GetDimension() : op->vtkParametricKlein::GetDimension()); if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyObject * PyvtkParametricKlein_Evaluate(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "Evaluate"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkParametricKlein *op = static_cast(vp); const int size0 = 3; double temp0[3]; double save0[3]; const int size1 = 3; double temp1[3]; double save1[3]; const int size2 = 9; double temp2[9]; double save2[9]; PyObject *result = nullptr; if (op && ap.CheckArgCount(3) && ap.GetArray(temp0, size0) && ap.GetArray(temp1, size1) && ap.GetArray(temp2, size2)) { ap.SaveArray(temp0, save0, size0); ap.SaveArray(temp1, save1, size1); ap.SaveArray(temp2, save2, size2); if (ap.IsBound()) { op->Evaluate(temp0, temp1, temp2); } else { op->vtkParametricKlein::Evaluate(temp0, temp1, temp2); } if (ap.ArrayHasChanged(temp0, save0, size0) && !ap.ErrorOccurred()) { ap.SetArray(0, temp0, size0); } if (ap.ArrayHasChanged(temp1, save1, size1) && !ap.ErrorOccurred()) { ap.SetArray(1, temp1, size1); } if (ap.ArrayHasChanged(temp2, save2, size2) && !ap.ErrorOccurred()) { ap.SetArray(2, temp2, size2); } if (!ap.ErrorOccurred()) { result = ap.BuildNone(); } } return result; } static PyObject * PyvtkParametricKlein_EvaluateScalar(PyObject *self, PyObject *args) { vtkPythonArgs ap(self, args, "EvaluateScalar"); vtkObjectBase *vp = ap.GetSelfPointer(self, args); vtkParametricKlein *op = static_cast(vp); const int size0 = 3; double temp0[3]; double save0[3]; const int size1 = 3; double temp1[3]; double save1[3]; const int size2 = 9; double temp2[9]; double save2[9]; PyObject *result = nullptr; if (op && ap.CheckArgCount(3) && ap.GetArray(temp0, size0) && ap.GetArray(temp1, size1) && ap.GetArray(temp2, size2)) { ap.SaveArray(temp0, save0, size0); ap.SaveArray(temp1, save1, size1); ap.SaveArray(temp2, save2, size2); double tempr = (ap.IsBound() ? op->EvaluateScalar(temp0, temp1, temp2) : op->vtkParametricKlein::EvaluateScalar(temp0, temp1, temp2)); if (ap.ArrayHasChanged(temp0, save0, size0) && !ap.ErrorOccurred()) { ap.SetArray(0, temp0, size0); } if (ap.ArrayHasChanged(temp1, save1, size1) && !ap.ErrorOccurred()) { ap.SetArray(1, temp1, size1); } if (ap.ArrayHasChanged(temp2, save2, size2) && !ap.ErrorOccurred()) { ap.SetArray(2, temp2, size2); } if (!ap.ErrorOccurred()) { result = ap.BuildValue(tempr); } } return result; } static PyMethodDef PyvtkParametricKlein_Methods[] = { {"IsTypeOf", PyvtkParametricKlein_IsTypeOf, METH_VARARGS, "V.IsTypeOf(string) -> int\nC++: static vtkTypeBool IsTypeOf(const char *type)\n\nReturn 1 if this class type is the same type of (or a subclass\nof) the named class. Returns 0 otherwise. This method works in\ncombination with vtkTypeMacro found in vtkSetGet.h.\n"}, {"IsA", PyvtkParametricKlein_IsA, METH_VARARGS, "V.IsA(string) -> int\nC++: vtkTypeBool IsA(const char *type) override;\n\nReturn 1 if this class is the same type of (or a subclass of) the\nnamed class. Returns 0 otherwise. This method works in\ncombination with vtkTypeMacro found in vtkSetGet.h.\n"}, {"SafeDownCast", PyvtkParametricKlein_SafeDownCast, METH_VARARGS, "V.SafeDownCast(vtkObjectBase) -> vtkParametricKlein\nC++: static vtkParametricKlein *SafeDownCast(vtkObjectBase *o)\n\n"}, {"NewInstance", PyvtkParametricKlein_NewInstance, METH_VARARGS, "V.NewInstance() -> vtkParametricKlein\nC++: vtkParametricKlein *NewInstance()\n\n"}, {"GetDimension", PyvtkParametricKlein_GetDimension, METH_VARARGS, "V.GetDimension() -> int\nC++: int GetDimension() override;\n\nReturn the parametric dimension of the class.\n"}, {"Evaluate", PyvtkParametricKlein_Evaluate, METH_VARARGS, "V.Evaluate([float, float, float], [float, float, float], [float,\n float, float, float, float, float, float, float, float])\nC++: void Evaluate(double uvw[3], double Pt[3], double Duvw[9])\n override;\n\nA Klein bottle.\n\n* This function performs the mapping $f(u,v) \\rightarrow (x,y,x)\n $, returning it\n* as Pt. It also returns the partial derivatives Du and Dv.\n* $Pt = (x, y, z), Du = (dx/du, dy/du, dz/du), Dv = (dx/dv,\n dy/dv, dz/dv) $ .\n* Then the normal is $N = Du X Dv $ .\n"}, {"EvaluateScalar", PyvtkParametricKlein_EvaluateScalar, METH_VARARGS, "V.EvaluateScalar([float, float, float], [float, float, float],\n [float, float, float, float, float, float, float, float,\n float]) -> float\nC++: double EvaluateScalar(double uvw[3], double Pt[3],\n double Duvw[9]) override;\n\nCalculate a user defined scalar using one or all of uvw, Pt,\nDuvw.\n\n* uvw are the parameters with Pt being the the cartesian point,\n* Duvw are the derivatives of this point with respect to u, v and\nw.\n* Pt, Duvw are obtained from Evaluate().\n\n* This function is only called if the ScalarMode has the value\n* vtkParametricFunctionSource::SCALAR_FUNCTION_DEFINED\n\n* If the user does not need to calculate a scalar, then the\n* instantiated function should return zero.\n"}, {nullptr, nullptr, 0, nullptr} }; static PyTypeObject PyvtkParametricKlein_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "vtkCommonComputationalGeometryPython.vtkParametricKlein", // tp_name sizeof(PyVTKObject), // tp_basicsize 0, // tp_itemsize PyVTKObject_Delete, // tp_dealloc 0, // tp_print nullptr, // tp_getattr nullptr, // tp_setattr nullptr, // tp_compare PyVTKObject_Repr, // tp_repr nullptr, // tp_as_number nullptr, // tp_as_sequence nullptr, // tp_as_mapping nullptr, // tp_hash nullptr, // tp_call PyVTKObject_String, // tp_str PyObject_GenericGetAttr, // tp_getattro PyObject_GenericSetAttr, // tp_setattro &PyVTKObject_AsBuffer, // tp_as_buffer Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_BASETYPE, // tp_flags PyvtkParametricKlein_Doc, // tp_doc PyVTKObject_Traverse, // tp_traverse nullptr, // tp_clear nullptr, // tp_richcompare offsetof(PyVTKObject, vtk_weakreflist), // tp_weaklistoffset nullptr, // tp_iter nullptr, // tp_iternext nullptr, // tp_methods nullptr, // tp_members PyVTKObject_GetSet, // tp_getset nullptr, // tp_base nullptr, // tp_dict nullptr, // tp_descr_get nullptr, // tp_descr_set offsetof(PyVTKObject, vtk_dict), // tp_dictoffset nullptr, // tp_init nullptr, // tp_alloc PyVTKObject_New, // tp_new PyObject_GC_Del, // tp_free nullptr, // tp_is_gc nullptr, // tp_bases nullptr, // tp_mro nullptr, // tp_cache nullptr, // tp_subclasses nullptr, // tp_weaklist VTK_WRAP_PYTHON_SUPPRESS_UNINITIALIZED }; static vtkObjectBase *PyvtkParametricKlein_StaticNew() { return vtkParametricKlein::New(); } PyObject *PyvtkParametricKlein_ClassNew() { PyVTKClass_Add( &PyvtkParametricKlein_Type, PyvtkParametricKlein_Methods, "vtkParametricKlein", &PyvtkParametricKlein_StaticNew); PyTypeObject *pytype = &PyvtkParametricKlein_Type; if ((pytype->tp_flags & Py_TPFLAGS_READY) != 0) { return (PyObject *)pytype; } #if !defined(VTK_PY3K) && PY_VERSION_HEX >= 0x02060000 pytype->tp_flags |= Py_TPFLAGS_HAVE_NEWBUFFER; #endif pytype->tp_base = (PyTypeObject *)PyvtkParametricFunction_ClassNew(); PyType_Ready(pytype); return (PyObject *)pytype; } void PyVTKAddFile_vtkParametricKlein( PyObject *dict) { PyObject *o; o = PyvtkParametricKlein_ClassNew(); if (o && PyDict_SetItemString(dict, "vtkParametricKlein", o) != 0) { Py_DECREF(o); } }