PLearn 0.1
|
00001 // -*- C++ -*- 00002 00003 // MeshFace.cc 00004 // 00005 // Copyright (C) 2004 Pascal Lamblin 00006 // 00007 // Redistribution and use in source and binary forms, with or without 00008 // modification, are permitted provided that the following conditions are met: 00009 // 00010 // 1. Redistributions of source code must retain the above copyright 00011 // notice, this list of conditions and the following disclaimer. 00012 // 00013 // 2. Redistributions in binary form must reproduce the above copyright 00014 // notice, this list of conditions and the following disclaimer in the 00015 // documentation and/or other materials provided with the distribution. 00016 // 00017 // 3. The name of the authors may not be used to endorse or promote 00018 // products derived from this software without specific prior written 00019 // permission. 00020 // 00021 // THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR 00022 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00023 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 00024 // NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00025 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 00026 // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00027 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00028 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00029 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00030 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00031 // 00032 // This file is part of the PLearn library. For more information on the PLearn 00033 // library, go to the PLearn Web site at www.plearn.org 00034 00035 /* ******************************************************* 00036 * $Id: MeshFace.cc,v 1.5 2004/11/17 01:42:02 lamblinp Exp $ 00037 ******************************************************* */ 00038 00039 // Authors: Pascal Lamblin 00040 00044 #include "MeshFace.h" 00045 00046 namespace PLearn { 00047 using namespace std; 00048 00049 MeshFace::MeshFace() : 00050 // id( 0 ), 00051 pts( 3 ), 00052 edges( 3 ), 00053 adj_faces( 3, -1 ), 00054 face_norm( 3 ) 00055 {} 00056 00057 /* 00058 MeshFace::MeshFace( const MeshFace& f ) : 00059 pts( 3 ), 00060 edges( 3 ), 00061 adj_faces( 3 ), 00062 face_norm( 3 ) 00063 { 00064 // id = f.id; 00065 pts << f.pts; 00066 edges << f.edges; 00067 adj_faces << f.adj_faces; 00068 face_norm << f.face_norm; 00069 } 00070 */ 00071 00072 PLEARN_IMPLEMENT_OBJECT(MeshFace, 00073 "Face element of a SurfaceMesh", 00074 "" 00075 ); 00076 00077 void MeshFace::declareOptions(OptionList& ol) 00078 { 00079 /* declareOption(ol, "id", &MeshFace::id, OptionBase::buildoption, 00080 "face identifier"); 00081 00082 declareOption(ol, "pts", &MeshFace::pts, OptionBase::buildoption, 00083 "identifier of the 3 adjacent points"); 00084 00085 declareOption(ol, "edges", &MeshFace::edges, OptionBase::buildoption, 00086 "identifier of the 3 adjacent edges"); 00087 */ 00088 declareOption(ol, "adj_faces", &MeshFace::adj_faces, OptionBase::buildoption, 00089 "identifier of the 3 adjacent faces"); 00090 00091 declareOption(ol, "face_norm", &MeshFace::face_norm, OptionBase::buildoption, 00092 "face normal"); 00093 00094 // Now call the parent class' declareOptions 00095 inherited::declareOptions(ol); 00096 } 00097 00098 void MeshFace::build_() 00099 {} 00100 00101 void MeshFace::build() 00102 { 00103 inherited::build(); 00104 build_(); 00105 } 00106 00107 void MeshFace::makeDeepCopyFromShallowCopy(CopiesMap& copies) 00108 { 00109 inherited::makeDeepCopyFromShallowCopy(copies); 00110 00111 /* "`void*' is not a pointer-to-object type" */ 00112 // deepCopyField(pts, copies); 00113 pts = pts.copy(); 00114 00115 // deepCopyField(edges, copies); 00116 edges = edges.copy(); 00117 00118 deepCopyField(adj_faces, copies); 00119 deepCopyField(face_norm, copies); 00120 } 00121 00122 /* 00123 MeshFace& MeshFace::operator=( const MeshFace& f ) 00124 { 00125 // id = f.id; 00126 pts << f.pts; 00127 edges << f.edges; 00128 adj_faces << f.adj_faces; 00129 face_norm << f.face_norm; 00130 return *this; 00131 } 00132 */ 00133 00134 /* 00135 int MeshFace::compare( const MeshFace& e, const MeshFace& f ) 00136 { 00137 return( e.id - f.id ); 00138 } 00139 */ 00140 00141 } // end of namespace PLearn