00001 /*===========================================================================*\ 00002 * * 00003 * IsoEx * 00004 * Copyright (C) 2002 by Computer Graphics Group, RWTH Aachen * 00005 * www.rwth-graphics.de * 00006 * * 00007 *---------------------------------------------------------------------------* 00008 * * 00009 * License * 00010 * * 00011 * This library is free software; you can redistribute it and/or modify it * 00012 * under the terms of the GNU Library General Public License as published * 00013 * by the Free Software Foundation, version 2. * 00014 * * 00015 * This library is distributed in the hope that it will be useful, but * 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of * 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00018 * Library General Public License for more details. * 00019 * * 00020 * You should have received a copy of the GNU Library General Public * 00021 * License along with this library; if not, write to the Free Software * 00022 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * 00023 * * 00024 \*===========================================================================*/ 00025 00026 //============================================================================= 00027 // 00028 // CLASS Implicit 00029 // 00030 //============================================================================= 00031 00032 00033 #ifndef ISOEX_IMPLICIT_HH 00034 #define ISOEX_IMPLICIT_HH 00035 00036 00037 //== INCLUDES ================================================================= 00038 00039 #include <OpenMesh/Core/Math/VectorT.hh> 00040 00041 //== NAMESPACES =============================================================== 00042 00043 namespace IsoEx { 00044 00045 //== CLASS DEFINITION ========================================================= 00046 00055 class Implicit 00056 { 00057 public: 00058 00060 00061 00063 Implicit() {} 00065 virtual ~Implicit() {} 00066 00068 00069 00070 00072 00073 00078 virtual bool is_inside(const OpenMesh::Vec3f& _point) const = 0; 00079 00080 00085 virtual float scalar_distance(const OpenMesh::Vec3f& _point) const = 0; 00086 00087 00097 virtual bool directed_distance(const OpenMesh::Vec3f& _p0, 00098 const OpenMesh::Vec3f& _p1, 00099 OpenMesh::Vec3f& _point, 00100 OpenMesh::Vec3f& _normal, 00101 float& _distance) const = 0; 00103 }; 00104 00105 00106 //============================================================================= 00107 } // namespace IsoEx 00108 //============================================================================= 00109 #endif // ISOEX_IMPLICITSPHERE_HH defined 00110 //============================================================================= 00111