1 // Created on: 1992-09-30 2 // Created by: Jacques GOUSSARD 3 // Copyright (c) 1992-1999 Matra Datavision 4 // Copyright (c) 1999-2014 OPEN CASCADE SAS 5 // 6 // This file is part of Open CASCADE Technology software library. 7 // 8 // This library is free software; you can redistribute it and/or modify it under 9 // the terms of the GNU Lesser General Public License version 2.1 as published 10 // by the Free Software Foundation, with special exception defined in the file 11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT 12 // distribution for complete text of the license and disclaimer of any warranty. 13 // 14 // Alternatively, this file may be used under the terms of Open CASCADE 15 // commercial license or contractual agreement. 16 17 #ifndef _IntSurf_QuadricTool_HeaderFile 18 #define _IntSurf_QuadricTool_HeaderFile 19 20 #include <Standard.hxx> 21 #include <Standard_DefineAlloc.hxx> 22 #include <Standard_Handle.hxx> 23 24 #include <Standard_Real.hxx> 25 class IntSurf_Quadric; 26 class gp_Vec; 27 28 29 //! This class provides a tool on a quadric that can be 30 //! used to instantiates the Walking algorithmes (see 31 //! package IntWalk) with a Quadric from IntSurf 32 //! as implicit surface. 33 class IntSurf_QuadricTool 34 { 35 public: 36 37 DEFINE_STANDARD_ALLOC 38 39 40 //! Returns the value of the function. 41 static Standard_Real Value (const IntSurf_Quadric& Quad, const Standard_Real X, const Standard_Real Y, const Standard_Real Z); 42 43 //! Returns the gradient of the function. 44 static void Gradient (const IntSurf_Quadric& Quad, const Standard_Real X, const Standard_Real Y, const Standard_Real Z, gp_Vec& V); 45 46 //! Returns the value and the gradient. 47 static void ValueAndGradient (const IntSurf_Quadric& Quad, const Standard_Real X, const Standard_Real Y, const Standard_Real Z, Standard_Real& Val, gp_Vec& Grad); 48 49 //! returns the tolerance of the zero of the implicit function 50 Standard_EXPORT static Standard_Real Tolerance (const IntSurf_Quadric& Quad); 51 52 53 54 55 protected: 56 57 58 59 60 61 private: 62 63 64 65 66 67 }; 68 69 70 #include <IntSurf_QuadricTool.lxx> 71 72 73 74 75 76 #endif // _IntSurf_QuadricTool_HeaderFile 77