00001 /* 00002 * lib-rounding : Opérations de chamfreinage. 00003 * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC 00004 * http://www.sic.sp2mi.univ-poitiers.fr/ 00005 * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS, 00006 * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/ 00007 * 00008 * This file is part of lib-rounding 00009 * 00010 * This program is free software: you can redistribute it and/or modify 00011 * it under the terms of the GNU Lesser General Public License as published by 00012 * the Free Software Foundation, either version 3 of the License, or 00013 * (at your option) any later version. 00014 * 00015 * This program is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 * GNU Lesser General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU Lesser General Public License 00021 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00022 */ 00023 00024 //****************************************************************************** 00025 #ifndef ROUNDING_GENERIC_HH 00026 #define ROUNDING_GENERIC_HH 00027 //****************************************************************************** 00028 namespace GMap3d 00029 { 00030 class CDart; 00031 class CGMapGeneric; 00032 00033 class CRoundingGeneric 00034 { 00035 public: 00037 CRoundingGeneric(CGMapGeneric* AMap); 00038 00040 ~CRoundingGeneric(); 00041 00050 void chamferCell(CDart* ADart, int ACellDim, int AMaxDim); 00051 00059 void chamferVertex(CDart* ADart, int AMaxDim); 00060 00068 void chamferEdge(CDart* ADart, int AMaxDim); 00069 00070 protected: 00071 00086 void addDartChain(CDart* ADart, int ADimMin, int ADimMax); 00087 00100 void chamfreinLink(CDart* ADart1, CDart* ADart2, 00101 int ADim, int ADimMin, int ADimMax); 00102 00112 int getVertexRoundingDimension(CDart* ADart, int ACellDim); 00113 00123 int getEdgeRoundingDimension(CDart* ADart, int ACellDim); 00124 00130 void removeEdge(CDart* ADart); 00131 00132 private: 00133 CGMapGeneric* FMap; 00134 }; 00135 } 00136 //****************************************************************************** 00137 #endif // ROUNDING_GENERIC_HH 00138 //******************************************************************************