From dbe5bc74c039d1d2dee9416e7232a9a357bb6abe Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Thu, 2 Feb 2006 15:35:15 +0000 Subject: [PATCH] updated comment code --- src/meshlabplugins/meshio/export_3ds.h | 66 ++++++++++++++++---------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/src/meshlabplugins/meshio/export_3ds.h b/src/meshlabplugins/meshio/export_3ds.h index 665604c32..c033b9a3c 100644 --- a/src/meshlabplugins/meshio/export_3ds.h +++ b/src/meshlabplugins/meshio/export_3ds.h @@ -25,6 +25,9 @@ History $Log$ + Revision 1.7 2006/02/02 15:35:15 fmazzant + updated comment code + Revision 1.6 2006/02/02 13:08:10 fmazzant cleaned & commented[italian] code @@ -210,37 +213,52 @@ namespace io { return E_NOTFACESVALID; /* - si tiene in considerazione una mappa ListOfDuplexVert, alla quale gli viene associato il seguente significato: - Key:è una coppia formata da int che rappresenta l'indice del vettore nella mesh e una coordinata di texture. - tale coppia rappresenta una chiave, essendo univoca in tutta la mesh. non è possibile che si incontrino due - vertici che hanno solite coordinate e solite coordinate di texture, se un vertice di questo tipo esistesse allora - uno dei due è di troppo perchè rappresentano il solito vertice. - int:è l'indice del vertice inserito all'interno del vettore VectorOfVertexType, all'interno del quale vengono inseriti - tutti i vertici appartenendi alla mesh. + <> + si tiene in considerazione una mappa ListOfDuplexVert, alla quale gli viene associato il seguente significato: + Key:è una coppia (int,TexCoord) formata da un int che rappresenta l'indice del vettore nella mesh originale e la sua + coordinata di texture. tale coppia rappresenta una chiave, essendo univoca in tutta la mesh. non è possibile che + si incontrino due vertici che hanno solite coordinate di vertice e solite coordinate di texture, se un vertice di + questo tipo esistesse allora i due vertici rappresenterebbero lo stesso vertice. + int:è l'indice del vertice inserito all'interno del vettore VectorOfVertexType + + Nel vertice VectorOfVertexType vengono inseriti tutti i vertici appartenendi alla mesh + i k vertici dublicati. la scelta + di tali vertici va in base alla seguente regola: + se un vertice con indice x(originale) ha più di una coordinata di texture allora tale vertice viene duplicato e + inserito in ListOfDuplexVert e in VectorOfVertexType(in VectorOfVertexType, l'inserimento del doppio vertice non + sarebbe necessario, però viene fatto per comodità, in caso contrario dovremmo cercare il vertice dentro il vettore). + + rappresentazione grafica: ListOfDuplexVert VectorOfVertexType - ----- --------- - |key| -> value1 ------ |vertix1| - ----- | --------- - |key| -> value2 - -----------------> |vertex2| - ----- | --------- - | | | |vertex2| - ----- | --------- - | | | |vertex2| - ----- | --------- - | | ----------------------> |vertex2| - ----- --------- - - e così via......per tutti gli altri. + ------ --------- + |key1| -> index1 --------- |vertex1| + ------ | --------- + |key2| -> index2 ---- -------------> |vertex2| + ------ | --------- + |key3| | |vertex3| + ------ | --------- + |key4| ------------------> |vertex4| + ------ --------- + |key5| --------------> |vertex5| + ------ | --------- + . | . + . | . + . | . + ------ | --------- + |keyn| -> indexn ------- |vertexn| + ------ --------- + questo tipo di struttura permette di selezionare l'indice del vertice in VectorOfVertexType con costo O(1). + + <> questo pezzo di codice itera su tutte le facce della mesh per riempire la mappa e il vettore. per ogni faccia e per ogni vertice di faccia costruisce la coppia (indice,texture), controlla se - all'interno di ListOfDuplexVert esiste già in tal caso non fa niente, in caso contrario aggiunte - coppia in ListOfDuplexVert e l'oggetto VertexType in VectorOfVertexType associando alla chiave il - valore dell'indice del vettore preso in considerazione. + all'interno di ListOfDuplexVert esiste già in tal caso non fa niente, in caso contrario aggiunte la + coppia in ListOfDuplexVert e l'oggetto VertexType in VectorOfVertexType associando al valore della + chiave (indice,texture) l'indice del vertice a cui punta. - alla fine sappiamo quanti sono i vertici che dobbiamo duplicare. + alla fine vengono duplicati solamente quei vertici che hanno più coordinate di texture. */ std::map ListOfDuplexVert;