source: GTP/trunk/Lib/Geom/shared/GTGeometry/src/GeoMeshSimpSequence.cpp @ 1526

Revision 1526, 3.3 KB checked in by gumbau, 18 years ago (diff)

Updated modules to the new interface and the new simplification algorithm improvements.

RevLine 
[774]1#include "GeoMeshSimpSequence.h"
2
3using namespace Geometry;
4using namespace std;
5
[1526]6//---------------------------------------------------------------------------
7//      Constructor.
8//---------------------------------------------------------------------------
9MeshSimplificationSequence::MeshSimplificationSequence()
[774]10{
[1526]11        meshName        =       "";
[774]12}
13
[1526]14MeshSimplificationSequence::~MeshSimplificationSequence()
[774]15{
16}
17
[1526]18//---------------------------------------------------------------------------
19//      Loads mesh simplification sequence.
20//---------------------------------------------------------------------------
21void MeshSimplificationSequence::Load(Serializer &s)
[774]22{
[1526]23        //      Loads a simplification sequence from a file.
24        char                                    buffer[256];
25        unsigned int    modVertex;
26        char                                    name[256];
[774]27
[1526]28        //      Read mesh name.
[1009]29        if (s.ReadData(buffer,256) != NULL)
[774]30        {
31                sscanf(buffer,"%s",&name);
[1526]32
33                meshName        =       new char[strlen(name)];
34
[774]35                strcpy(meshName,name);
36        }
37
[1526]38        //      Read steps data.
[1009]39        while (s.ReadData(buffer,256) != NULL)
[774]40        {
41                Geometry::MeshSimplificationSequence::Step simplifstep;
42
[1526]43                //      New step.
44                sscanf( buffer,
45                                                "%u %u %u %u %u %f %f %f &",
46                                                &simplifstep.mV1,
47                                                &simplifstep.mV0,
48                                                &simplifstep.mT0,
49                                                &simplifstep.mT1,
50                                                &simplifstep.obligatory,
51                                                &simplifstep.x,
52                                                &simplifstep.y,
53                                                &simplifstep.z);
[774]54
[1526]55                buffer[strlen(buffer)-1]        =       '\0';
56
[774]57                char *ptr1;
58
[1526]59                ptr1    =       strtok(buffer,"&");
60                ptr1    =       strtok(NULL,"&");
61
62                if (ptr1 != NULL)
[774]63                {
64                        char *ptr;
[1526]65
66                        ptr     =       strtok(ptr1," ");
[774]67                       
[1526]68                        while (ptr != NULL )
[774]69                        {
[1526]70                                modVertex       =       (unsigned int)atoi(ptr);
71
[774]72                                simplifstep.mModfaces.push_back(modVertex);
[1526]73
74                                ptr     =       strtok(NULL," ");
[774]75                        }
76                }
[1526]77
[774]78                mSteps.push_back(simplifstep);
79        }
80}
81
[1526]82//---------------------------------------------------------------------------
83//      Saves simplification sequence.
84//---------------------------------------------------------------------------
[1007]85void MeshSimplificationSequence::Save(Serializer &s)
[774]86{
[1526]87        //      Stores the simplification sequence in a file.
[774]88        char simp[256];
89
[1526]90        //      Name of the mesh.
[774]91        sprintf(simp,"%s\n",meshName);
92        s.WriteData(simp,sizeof(char),strlen(simp));
93
[1526]94        //      For each step.
95        for (unsigned int i     =       0; i < mSteps.size(); i++)
[774]96        {
97                Geometry::MeshSimplificationSequence::Step paso = mSteps.operator [](i);
[1526]98               
99                sprintf(simp,
100                                                "%u %u %u %u %u %f &",
101                                                paso.mV0,
102                                                paso.mV1,
103                                                paso.mT0,
104                                                paso.mT1,
105                                                paso.obligatory,
106                                                paso.x);
107
108                //      Write step.
[774]109                s.WriteData(simp,sizeof(char),strlen(simp));
[1526]110               
111                //      Triangles modified.
112                for (unsigned int j     =       0; j < paso.mModfaces.size(); j++)
[774]113                {
114                        sprintf(simp," %u",paso.mModfaces.operator [](j));
115                        s.WriteData(simp,sizeof(char),strlen(simp));
116                }
[1526]117               
118                //      New line.
[774]119                s.WriteData("\n",sizeof(char),1);
120        }
121}
122
[1526]123//---------------------------------------------------------------------------
124//      Puts mesh name.
125//---------------------------------------------------------------------------
126void MeshSimplificationSequence::putMeshName(char *name)
[774]127{
[1526]128        meshName        =       name;
[774]129}
130
[1526]131//---------------------------------------------------------------------------
132//      Gets mesh name.
133//---------------------------------------------------------------------------
134char *MeshSimplificationSequence::getMeshName(void)
[774]135{
136        return meshName;
137}
[1526]138
Note: See TracBrowser for help on using the repository browser.