From 1f5315d09f2ea7a09f89db1829ae8df62a7917fd Mon Sep 17 00:00:00 2001 From: ponchio Date: Fri, 3 Dec 2004 16:04:34 +0000 Subject: [PATCH] nothing... --- apps/nexus/nxspatcher.cpp | 6 +-- apps/nexus/voronoichain.cpp | 94 ++++++++++++++++++++++++++++++++++++- apps/nexus/voronoichain.h | 8 ++++ 3 files changed, 103 insertions(+), 5 deletions(-) diff --git a/apps/nexus/nxspatcher.cpp b/apps/nexus/nxspatcher.cpp index 7ff3aea0..48ca3466 100644 --- a/apps/nexus/nxspatcher.cpp +++ b/apps/nexus/nxspatcher.cpp @@ -28,7 +28,7 @@ int main(int argc, char *argv[]) { for(unsigned int y = 0; y < side; y++) { Point3f p(x*x*x/((float)side), y*y*y/((float)side), x*y/((float)side)); - crude.GetVertex(x + side * y) = p; + crude.SetVertex(x + side * y, p); crude.GetBox().Add(p); } @@ -36,10 +36,10 @@ int main(int argc, char *argv[]) { for(unsigned int y = 0; y < side-1; y++) { unsigned int pos = x + side*y; Crude::Face face(pos, pos + 1, pos + side); - crude.GetFace(0 + 2*x + (side-1)*y*2) = face; + crude.SetFace(0 + 2*x + (side-1)*y*2, face); face = Crude::Face(pos + 1, pos + 1 + side, pos +side); - crude.GetFace(1 + 2*x + (side-1)*y*2) = face; + crude.SetFace(1 + 2*x + (side-1)*y*2, face); } crude.Close(); diff --git a/apps/nexus/voronoichain.cpp b/apps/nexus/voronoichain.cpp index aa9d6c93..91f9ec45 100644 --- a/apps/nexus/voronoichain.cpp +++ b/apps/nexus/voronoichain.cpp @@ -24,6 +24,9 @@ History $Log: not supported by cvs2svn $ +Revision 1.23 2004/11/28 07:58:49 ponchio +*** empty log message *** + Revision 1.22 2004/11/28 04:14:12 ponchio *** empty log message *** @@ -46,8 +49,7 @@ Revision 1.16 2004/10/22 14:31:56 ponchio Some controls added. Revision 1.15 2004/10/21 12:22:21 ponchio -Small changes. - +Small change Revision 1.14 2004/10/19 04:23:29 ponchio *** empty log message *** @@ -503,3 +505,91 @@ void VoronoiChain::BuildLevel(Nexus &nexus, unsigned int offset, newfragments.clear(); } +bool VoronoiChain::Save(const string &file) { + FILE *fp = fopen((output + ".remap").c_str(), "wb+"); + if(!fp) { + cerr << "Could not create remapping info\n"; + return -1; + } + + unsigned int nlevels = levels.size(); + fwrite(&nlevels, sizeof(unsigned int), 1, fp); + for(int i = 0; i < nlevels; i++) { + VoronoiPartition &level = levels[i]; + unsigned int npoints = level.size(); + fwrite(&npoints, sizeof(unsigned int), 1, fp); + fwrite(&(level[0]), sizeof(Point3f), npoints, fp); + } + //writing fragments + + unsigned int nfrag = newfragments.size(); + fwrite(&nfrag, sizeof(unsigned int), 1, fp); + std::map >::iterator i; + for(i = newfragments.begin(); i != newfragments.end(); i++) { + unsigned int n = (*i).second.size(); + fwrite(&((*i).first), sizeof(unsigned int), 1, fp); + fwrite(&n, sizeof(unsigned int), 1, fp); + set::iterator k; + for(k = (*i).second.begin(); k != (*i).second.end(); k++) + fwrite(&*k, sizeof(unsigned int), 1, fp); + } + nfrag = oldfragments.size(); + fwrite(&nfrag, sizeof(unsigned int), 1, fp); + for(i = oldfragments.begin(); i != oldfragments.end(); i++) { + unsigned int n = (*i).second.size(); + fwrite(&((*i).first), sizeof(unsigned int), 1, fp); + fwrite(&n, sizeof(unsigned int), 1, fp); + set::iterator k; + for(k = (*i).second.begin(); k != (*i).second.end(); k++) + fwrite(&*k, sizeof(unsigned int), 1, fp); + } + fclose(fp); +} + +bool VoronoiChain::Load(const string &file) { + FILE *fp = fopen(file.c_str(), "rb"); + if(!fp) { + cerr << "Could not open remapping info\n"; + return -1; + } + unsigned int nlevels; + fread(&nlevels, sizeof(unsigned int), 1, fp); + for(int i = 0; i < nlevels; i++) { + levels.push_back(VoronoiPartition()); + VoronoiPartition &level = levels.back(); + + unsigned int npoints; + fread(&npoints, sizeof(unsigned int), 1, fp); + level.resize(npoints); + fread(&(level[0]), sizeof(Point3f), npoints, fp); + level.Init(); + } + //reading fragments + unsigned int nfrag; + fread(&nfrag, sizeof(unsigned int), 1, fp); + for(unsigned int i = 0; i < nfrag; i++) { + unsigned int p, n; + fread(&p, sizeof(unsigned int), 1, fp); + set &s = newfragments[p]; + fread(&n, sizeof(unsigned int), 1, fp); + for(unsigned int k = 0; k < n; k++) { + unsigned int j; + fread(&j, sizeof(unsigned int), 1, fp); + s.insert(j); + } + } + + fread(&nfrag, sizeof(unsigned int), 1, fp); + for(unsigned int i = 0; i < nfrag; i++) { + unsigned int p, n; + fread(&p, sizeof(unsigned int), 1, fp); + set &s = oldfragments[p]; + fread(&n, sizeof(unsigned int), 1, fp); + for(unsigned int k = 0; k < n; k++) { + unsigned int j; + fread(&j, sizeof(unsigned int), 1, fp); + s.insert(j); + } + } + fclose(fp); +} diff --git a/apps/nexus/voronoichain.h b/apps/nexus/voronoichain.h index 1102b833..77c915ad 100644 --- a/apps/nexus/voronoichain.h +++ b/apps/nexus/voronoichain.h @@ -24,6 +24,9 @@ History $Log: not supported by cvs2svn $ +Revision 1.6 2004/11/18 18:30:15 ponchio +Using baricenters... lotsa changes. + Revision 1.5 2004/10/30 20:17:03 ponchio Fixed big patches problem. @@ -47,6 +50,7 @@ First draft. #include #include +#include #include @@ -77,6 +81,10 @@ class VoronoiChain: public PChain { int steps); void BuildLevel(Nexus &nexus, unsigned int offset, float scaling, int steps); + bool Save(const std::string &file); + bool Load(const std::string &file); + + std::vector levels;