Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/Beta/3D/Maille.cpp

Go to the documentation of this file.
00001 #ifndef __J2K__Maille_CPP__
00002 #define __J2K__Maille_CPP__
00003 
00004 // Classe des maillages 3D.
00005 
00006 #include <j2k/Fred/3d/Maille.hpp>
00007 
00008 ///////////////////////////////////////////////////////////////////////////////
00009 // La classe des arcs droits.
00010 ///////////////////////////////////////////////////////////////////////////////
00011 
00012 const RArcD& ArcD::operator=( const ArcD& a ) {
00013   sini = a.sini;
00014   sfin = a.sfin; 
00015   return *this;
00016 }
00017 
00018 ///////////////////////////////////////////////////////////////////////////////
00019 // La classe des facettes.
00020 ///////////////////////////////////////////////////////////////////////////////
00021 istream& operator>>( istream& in, const Face& f )
00022 {
00023   in>>f.card;
00024 
00025   UINT i = 0;
00026   for( ; i != f.count(); i ++ ) {
00027     in >> f.data[i];
00028   }
00029 
00030   return in;
00031 }
00032 
00033 ostream& operator << ( ostream& out, const Face& f )
00034 {
00035   out << f.count();
00036 
00037   UINT i = 0;
00038   for( ; i != f.count(); i ++ ) {
00039       out << ' ' << f.data[i];
00040   }
00041 
00042   return out << '\n';
00043 }
00044 
00045 ///////////////////////////////////////////////////////////////////////////////
00046 // La classe des maillages en coordonnées homogènes, arcs droits et facettes
00047 // carrées.
00048 ///////////////////////////////////////////////////////////////////////////////
00049 void Maillage3DH::init( int s, int a, int f ) {
00050 
00051  if( s ) {
00052    flush ( TRUE, FALSE, FALSE );
00053    sommets  = new Sommet3DH[s];
00054    cardsommets = s;
00055  }
00056 
00057  if( a ) {
00058    flush ( FALSE, TRUE, FALSE );
00059    arcs = new ArcD[a];
00060    cardarcs  = a;
00061  }
00062 
00063  if( f ) {
00064    flush ( FALSE, FALSE, TRUE );
00065 
00066    faces        = new FaceC[f];
00067    normales     = new Sommet3DH[f];
00068    cardfaces    = f;
00069    cardnormales = f;
00070  }
00071 
00072 }
00073 
00074 
00075 void Maillage3DH::flush(BOOL s, BOOL a, BOOL f, BOOL n ) {
00076 
00077  if ( s && cardsommets && sommets ) {
00078    if (sommets)  delete [] sommets;
00079    if (normales) delete [] normales;
00080    cardsommets = 0;
00081    sommets = normales = NULL;
00082  }
00083 
00084  if ( n && cardnormales && normales ) {
00085    if (normales) delete [] normales;
00086    cardnormales = 0;
00087    normales = NULL;
00088  }
00089 
00090  if ( a && cardarcs && arcs ) {
00091   delete [] arcs;
00092   cardarcs = 0;
00093   arcs = NULL;
00094  }
00095 
00096  if ( f && cardfaces && faces ) {
00097    delete [] faces;
00098    cardfaces = 0;
00099    faces = NULL;
00100  }
00101 
00102 }
00103 
00104 istream& operator>>( istream& in, const Maillage3DH& m ) {
00105   UINT card, i;
00106   char tag[50];
00107 
00108  in >> tag;                  // <3DMesh>
00109 
00110  // lecture des sommets.
00111  in >> tag >> card;
00112 
00113  m.init( card,0,0 );
00114 
00115  for( i = 0; i != m.cardsommets; i++ ) { 
00116    in >> (Sommet3D&)m.sommets[i];
00117  }
00118 
00119  in>>tag;
00120 
00121  // lecture des arcs.
00122  in >>tag>>card;
00123  m.init( 0, card,0 );
00124  for( i = 0; i != m.cardarcs; i ++ ) {
00125    in >> m.arcs[i];
00126  }
00127 
00128  in>>tag;
00129 
00130  // lecture des faces.
00131  in >>tag>>card;
00132  m.init( 0, 0, card );
00133  for( i = 0; i != m.cardfaces; i++ ) {
00134    in >> m.faces[i];
00135  } 
00136 
00137  in >> tag;
00138 
00139  in >> tag; // </3DMesh>
00140 
00141  return in;
00142  }
00143 
00144 ostream& operator<<( ostream& out, const Maillage3DH& m ) {
00145  UINT i;
00146 
00147  out << "<3DMesh>\n";
00148 
00149  // écriture des sommets.
00150  out << "<VertexArray> " << m.cardsommets << '\n';
00151  for( i = 0; i != m.cardsommets; i ++ )
00152      out << (Sommet3D&)m.sommets[i];
00153 
00154  out << "</VertexArray>\n";
00155 
00156  // écriture des arcs.
00157  out << "<ArcArray> " << m.cardarcs << '\n';
00158  for ( i = 0; i != m.cardarcs; i ++ )
00159      out << m.arcs[i];
00160 
00161  out << "</ArcArray>\n";
00162 
00163  // écriture des faces.
00164  out  << "<FaceArray> " << m.cardfaces << '\n';
00165  for( i = 0; i != m.cardfaces; i ++ ) {
00166    out << m.faces[i];
00167  }
00168 
00169  out << "</FaceArray>\n</3DMesh>\n";
00170 
00171  return out;
00172  }
00173 
00174 #endif

Generated on Sun Oct 14 18:46:07 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001