Debug.
This commit is contained in:
parent
b53fe209a1
commit
34ac04a21b
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.2 2004/07/05 15:49:39 ponchio
|
||||||
|
Windows (DevCpp, mingw) port.
|
||||||
|
|
||||||
Revision 1.1 2004/07/04 15:30:00 ponchio
|
Revision 1.1 2004/07/04 15:30:00 ponchio
|
||||||
Changed directory structure.
|
Changed directory structure.
|
||||||
|
|
||||||
|
@ -224,10 +227,12 @@ int main(int argc, char *argv[]) {
|
||||||
patch.FaceBegin()[k*3 + j] = remap[face[j]];
|
patch.FaceBegin()[k*3 + j] = remap[face[j]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert(count == remap.size());
|
||||||
|
assert(entry.nvert == remap.size());
|
||||||
|
|
||||||
//record start of border:
|
//record start of border:
|
||||||
entry.border_start = border_remap.Size();
|
entry.border_start = border_remap.Size();
|
||||||
// border_start.push_back(border_remap.Size());
|
|
||||||
//TODO hash_set?
|
//TODO hash_set?
|
||||||
set<unsigned int> border_patches;
|
set<unsigned int> border_patches;
|
||||||
map<unsigned int, unsigned short>::iterator m;
|
map<unsigned int, unsigned short>::iterator m;
|
||||||
|
@ -249,27 +254,67 @@ int main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
//and number of borders:
|
//and number of borders:
|
||||||
entry.border_size = border_remap.Size() - entry.border_start;
|
entry.border_size = border_remap.Size() - entry.border_start;
|
||||||
//border_size.push_back(border_remap.Size() - border_start.back());
|
|
||||||
delete []faces;
|
delete []faces;
|
||||||
}
|
}
|
||||||
//we can now update bounding sphere.
|
//we can now update bounding sphere.
|
||||||
for(unsigned int i = 0; i < nexus.index.size(); i++) {
|
for(unsigned int i = 0; i < nexus.index.size(); i++)
|
||||||
nexus.sphere.Add(nexus.index[i].sphere);
|
nexus.sphere.Add(nexus.index[i].sphere);
|
||||||
}
|
|
||||||
|
|
||||||
//and last convert RemapLinks into Links
|
//and last convert RemapLinks into Links
|
||||||
nexus.borders.Resize(border_remap.Size());
|
nexus.borders.Resize(border_remap.Size());
|
||||||
for(unsigned int i = 0; i < border_remap.Size(); i++) {
|
|
||||||
RemapLink start_link = border_remap[i];
|
for(unsigned int i = 0; i < nexus.index.size(); i++) {
|
||||||
Nexus::Entry &entry = nexus.index[start_link.patch];
|
Nexus::Entry &local = nexus.index[i];
|
||||||
for(unsigned int k = entry.border_start;
|
|
||||||
k < entry.border_start + entry.border_size; k++) {
|
// K is the main iterator (where we write to in nexus.borders)
|
||||||
RemapLink end_link = border_remap[k];
|
for(unsigned int k = local.border_start;
|
||||||
if(start_link.abs_vert == end_link.abs_vert) { //found the match
|
k < local.border_start + local.border_size; k++) {
|
||||||
nexus.borders[i] = Link(start_link.rel_vert,
|
|
||||||
|
RemapLink start_link = border_remap[k];
|
||||||
|
assert(start_link.rel_vert < local.nvert);
|
||||||
|
|
||||||
|
Nexus::Entry &remote = nexus.index[start_link.patch];
|
||||||
|
|
||||||
|
bool found = false;
|
||||||
|
for(unsigned int j = remote.border_start;
|
||||||
|
j < remote.border_start + remote.border_size; j++) {
|
||||||
|
|
||||||
|
RemapLink end_link = border_remap[j];
|
||||||
|
assert(end_link.rel_vert < remote.nvert);
|
||||||
|
|
||||||
|
if(start_link.abs_vert == end_link.abs_vert &&
|
||||||
|
end_link.patch == i) { //found the match
|
||||||
|
assert(!found);
|
||||||
|
nexus.borders[k] = Link(start_link.rel_vert,
|
||||||
end_link.rel_vert, start_link.patch);
|
end_link.rel_vert, start_link.patch);
|
||||||
|
found = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert(nexus.borders[k].start_vert < local.nvert);
|
||||||
|
assert(found);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nexus.borders.Flush();
|
||||||
|
|
||||||
|
//Checking border consistency:
|
||||||
|
for(unsigned int i = 0; i < nexus.index.size(); i++) {
|
||||||
|
Border border = nexus.GetBorder(i);
|
||||||
|
Nexus::Entry &entry = nexus.index[i];
|
||||||
|
for(unsigned int k = 0; k < border.Size(); k++) {
|
||||||
|
Link &link = border[k];
|
||||||
|
if(link.start_vert >= entry.nvert) {
|
||||||
|
cerr << "K: " << k << endl;
|
||||||
|
cerr << "patch: " << i << " nvert: " << entry.nvert << " startv: "
|
||||||
|
<< link.start_vert << endl;
|
||||||
|
cerr << "bstart: " << entry.border_start
|
||||||
|
<< "bsize: " << entry.border_size << endl;
|
||||||
|
}
|
||||||
|
assert(link.end_patch < nexus.index.size());
|
||||||
|
assert(link.start_vert < entry.nvert);
|
||||||
|
Nexus::Entry &remote = nexus.index[link.end_patch];
|
||||||
|
assert(link.end_vert < remote.nvert);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nexus.Close();
|
nexus.Close();
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.2 2004/07/05 15:49:39 ponchio
|
||||||
|
Windows (DevCpp, mingw) port.
|
||||||
|
|
||||||
Revision 1.1 2004/07/04 15:30:00 ponchio
|
Revision 1.1 2004/07/04 15:30:00 ponchio
|
||||||
Changed directory structure.
|
Changed directory structure.
|
||||||
|
|
||||||
|
@ -126,6 +129,10 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
bool rotate = true;
|
bool rotate = true;
|
||||||
glClearColor(0, 0, 0, 0);
|
glClearColor(0, 0, 0, 0);
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glEnable(GL_LIGHT0);
|
||||||
|
glEnable(GL_NORMALIZE);
|
||||||
|
glEnable(GL_COLOR_MATERIAL);
|
||||||
int quit = 0;
|
int quit = 0;
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
@ -166,10 +173,10 @@ int main(int argc, char *argv[]) {
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
gluPerspective(60, 1, 0.1, 100);
|
gluPerspective(40, 1, 0.1, 100);
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
gluLookAt(0,0,3, 0,0,0, 0,1,0);
|
gluLookAt(0,0,6, 0,0,0, 0,1,0);
|
||||||
|
|
||||||
|
|
||||||
float scale = 2/sphere.Radius();
|
float scale = 2/sphere.Radius();
|
||||||
|
@ -182,27 +189,37 @@ int main(int argc, char *argv[]) {
|
||||||
glTranslatef(-center[0], -center[1], -center[2]);
|
glTranslatef(-center[0], -center[1], -center[2]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for(unsigned int i = 0; i < nexus.index.size(); i++) {
|
for(unsigned int i = 0; i < nexus.index.size(); i++) {
|
||||||
Patch patch = nexus.GetPatch(i);
|
Patch patch = nexus.GetPatch(i);
|
||||||
|
|
||||||
unsigned int val = i + 1;
|
unsigned int val = i + 1;
|
||||||
glColor3ub((val * 27)%255, (val * 37)%255, (val * 87)%255);
|
glColor3ub(((val * 27)%128) + 128,
|
||||||
|
((val * 37)%128) + 128,
|
||||||
|
((val * 87)%128) + 128);
|
||||||
|
|
||||||
glBegin(GL_TRIANGLES);
|
glBegin(GL_TRIANGLES);
|
||||||
unsigned short *f = patch.FaceBegin();
|
unsigned short *f = patch.FaceBegin();
|
||||||
for(unsigned int j = 0; j < patch.FaceSize() * 3; j++) {
|
for(unsigned int j = 0; j < patch.FaceSize()*3; j+= 3) {
|
||||||
Point3f &p = patch.Vert(f[j]);
|
Point3f &p1 = patch.Vert(f[j]);
|
||||||
glVertex3f(p[0], p[1], p[2]);
|
Point3f &p2 = patch.Vert(f[j+1]);
|
||||||
|
Point3f &p3 = patch.Vert(f[j+2]);
|
||||||
|
Point3f n = ((p2 - p1) ^ (p3 - p1));
|
||||||
|
|
||||||
|
glNormal3f(n[0], n[1], n[2]);
|
||||||
|
glVertex3f(p1[0], p1[1], p1[2]);
|
||||||
|
glVertex3f(p2[0], p2[1], p2[2]);
|
||||||
|
glVertex3f(p3[0], p3[1], p3[2]);
|
||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
// glColor3ub(((val * 27)%255)/2, ((val * 37)%255)/2, ((val * 87)%255)/2);
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
//drawing borders
|
//drawing borders
|
||||||
|
glColor3f(1, 1, 1);
|
||||||
|
|
||||||
Border border = nexus.GetBorder(i);
|
Border border = nexus.GetBorder(i);
|
||||||
glPointSize(4);
|
glPointSize(1);
|
||||||
glBegin(GL_POINTS);
|
glBegin(GL_POINTS);
|
||||||
for(unsigned int k = 0; k < border.Size(); k++) {
|
for(unsigned int k = 0; k < border.Size(); k++) {
|
||||||
|
if(border[k].IsNull()) continue;
|
||||||
Point3f &p = patch.Vert(border[k].start_vert);
|
Point3f &p = patch.Vert(border[k].start_vert);
|
||||||
glVertex3f(p[0], p[1], p[2]);
|
glVertex3f(p[0], p[1], p[2]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.2 2004/07/05 17:07:14 ponchio
|
||||||
|
Tested a bit.
|
||||||
|
|
||||||
Revision 1.1 2004/07/04 15:24:50 ponchio
|
Revision 1.1 2004/07/04 15:24:50 ponchio
|
||||||
Created
|
Created
|
||||||
|
|
||||||
|
@ -52,6 +55,7 @@ int main(int argc, char *argv[]) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int duplicated = 0;
|
||||||
for(unsigned int p = 0; p < nexus.index.size(); p++) {
|
for(unsigned int p = 0; p < nexus.index.size(); p++) {
|
||||||
Nexus::Entry &entry = nexus.index[p];
|
Nexus::Entry &entry = nexus.index[p];
|
||||||
Patch patch = nexus.GetPatch(p);
|
Patch patch = nexus.GetPatch(p);
|
||||||
|
@ -67,11 +71,12 @@ int main(int argc, char *argv[]) {
|
||||||
if(!vertices.count(point)) {
|
if(!vertices.count(point)) {
|
||||||
vertices[point] = vcount++;
|
vertices[point] = vcount++;
|
||||||
} else {
|
} else {
|
||||||
cerr << "Duplicated point\n";
|
duplicated++;
|
||||||
}
|
}
|
||||||
|
|
||||||
remap[i] = vertices[point];
|
remap[i] = vertices[point];
|
||||||
}
|
}
|
||||||
|
assert(vertices.size() <= patch.VertSize());
|
||||||
if(vertices.size() == patch.VertSize()) //no need to unify
|
if(vertices.size() == patch.VertSize()) //no need to unify
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -79,23 +84,21 @@ int main(int argc, char *argv[]) {
|
||||||
newvert.resize(vertices.size());
|
newvert.resize(vertices.size());
|
||||||
map<Point3f, unsigned short>::iterator k;
|
map<Point3f, unsigned short>::iterator k;
|
||||||
for(k = vertices.begin(); k != vertices.end(); k++) {
|
for(k = vertices.begin(); k != vertices.end(); k++) {
|
||||||
newvert[remap[(*k).second]] = (*k).first;
|
newvert[(*k).second] = (*k).first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
vector<unsigned short> newface;
|
vector<unsigned short> newface;
|
||||||
newface.resize(patch.FaceSize() * 3);
|
newface.resize(patch.FaceSize() * 3);
|
||||||
for(unsigned int f = 0; f < (unsigned int)(patch.FaceSize() *3); f++) {
|
for(unsigned int f = 0; f < newface.size(); f++)
|
||||||
newface[f] = remap[f];
|
newface[f] = remap[patch.FaceBegin()[f]];
|
||||||
}
|
|
||||||
//rewrite patch now.
|
//rewrite patch now.
|
||||||
patch.Resize(newvert.size(), newface.size());
|
|
||||||
entry.nvert = newvert.size();
|
entry.nvert = newvert.size();
|
||||||
entry.nface = newface.size();
|
patch.Resize(entry.nvert, entry.nface);
|
||||||
memcpy(patch.VertBegin(), &(newvert[0]),
|
|
||||||
patch.VertSize() * sizeof(Point3f));
|
memcpy(patch.VertBegin(), &(newvert[0]), entry.nvert*sizeof(Point3f));
|
||||||
memcpy(patch.FaceBegin(), &(newface[0]),
|
memcpy(patch.FaceBegin(), &(newface[0]), entry.nface*3*sizeof(unsigned short));
|
||||||
patch.FaceSize() * 3 * sizeof(unsigned short));
|
|
||||||
|
|
||||||
//fix patch borders now
|
//fix patch borders now
|
||||||
set<unsigned int> close; //bordering pathes
|
set<unsigned int> close; //bordering pathes
|
||||||
|
@ -110,9 +113,9 @@ int main(int argc, char *argv[]) {
|
||||||
for(c = close.begin(); c != close.end(); c++) {
|
for(c = close.begin(); c != close.end(); c++) {
|
||||||
Border bord = nexus.GetBorder(*c);
|
Border bord = nexus.GetBorder(*c);
|
||||||
for(unsigned int b = 0; b < bord.Size(); b++) {
|
for(unsigned int b = 0; b < bord.Size(); b++) {
|
||||||
if(border[b].IsNull()) continue;
|
if(bord[b].IsNull()) continue;
|
||||||
if(bord[b].end_patch == p) {
|
if(bord[b].end_patch == p) {
|
||||||
bord[b].end_vert = remap[border[b].end_vert];
|
bord[b].end_vert = remap[bord[b].end_vert];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,5 +135,6 @@ int main(int argc, char *argv[]) {
|
||||||
links.insert(border[b]);
|
links.insert(border[b]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
cerr << "Found " << duplicated << " duplicated vertices" << endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.2 2004/07/05 15:49:39 ponchio
|
||||||
|
Windows (DevCpp, mingw) port.
|
||||||
|
|
||||||
Revision 1.1 2004/07/04 15:30:00 ponchio
|
Revision 1.1 2004/07/04 15:30:00 ponchio
|
||||||
Changed directory structure.
|
Changed directory structure.
|
||||||
|
|
||||||
|
@ -111,6 +114,7 @@ int main(int argc, char *argv[]) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int vertex_offset = crude.Vertices();
|
||||||
for(unsigned int i = 0; i < pf.elements.size(); i++) {
|
for(unsigned int i = 0; i < pf.elements.size(); i++) {
|
||||||
if(!strcmp( pf.ElemName(i),"vertex")) {
|
if(!strcmp( pf.ElemName(i),"vertex")) {
|
||||||
unsigned int n_vertices = pf.ElemNumber(i);
|
unsigned int n_vertices = pf.ElemNumber(i);
|
||||||
|
@ -140,6 +144,9 @@ int main(int argc, char *argv[]) {
|
||||||
PlyFace face;
|
PlyFace face;
|
||||||
for(unsigned v = offset; v < offset + n_faces; v++) {
|
for(unsigned v = offset; v < offset + n_faces; v++) {
|
||||||
pf.Read((void *) &face);
|
pf.Read((void *) &face);
|
||||||
|
face.f[0] += vertex_offset;
|
||||||
|
face.f[1] += vertex_offset;
|
||||||
|
face.f[2] += vertex_offset;
|
||||||
assert(face.f[0] < crude.Vertices() &&
|
assert(face.f[0] < crude.Vertices() &&
|
||||||
face.f[1] < crude.Vertices() &&
|
face.f[1] < crude.Vertices() &&
|
||||||
face.f[2] < crude.Vertices());
|
face.f[2] < crude.Vertices());
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.7 2004/07/05 15:49:39 ponchio
|
||||||
|
Windows (DevCpp, mingw) port.
|
||||||
|
|
||||||
Revision 1.6 2004/07/04 15:23:48 ponchio
|
Revision 1.6 2004/07/04 15:23:48 ponchio
|
||||||
Debug
|
Debug
|
||||||
|
|
||||||
|
@ -258,59 +261,33 @@ template <class T> class VFile {
|
||||||
|
|
||||||
Buffer buffer;
|
Buffer buffer;
|
||||||
buffer.key = chunk;
|
buffer.key = chunk;
|
||||||
buffer.data = new T[chunk_size];
|
|
||||||
buffer.size = chunk_size;
|
buffer.size = chunk_size;
|
||||||
|
|
||||||
if(buffer.size + chunk * chunk_size > n_elements)
|
if(buffer.size + chunk * chunk_size > n_elements)
|
||||||
buffer.size = n_elements -chunk * chunk_size;
|
buffer.size = n_elements - chunk * chunk_size;
|
||||||
|
|
||||||
|
buffer.data = new T[buffer.size];
|
||||||
|
|
||||||
buffers.push_front(buffer);
|
buffers.push_front(buffer);
|
||||||
index[buffer.key] = buffers.begin();
|
index[buffer.key] = buffers.begin();
|
||||||
|
|
||||||
SetPosition(chunk);
|
SetPosition(chunk);
|
||||||
ReadBuffer(buffer.data, buffer.size);
|
ReadBuffer(buffer.data, buffer.size);
|
||||||
/*#ifdef WIN32
|
|
||||||
if(INVALID_SET_FILE_POINTER == SetFilePointer(fp, chunk * chunk_size * sizeof(T), 0, FILE_BEGIN)) {
|
|
||||||
#else
|
|
||||||
if(fseek(fp, chunk * chunk_size * sizeof(T), SEEK_SET)) {
|
|
||||||
#endif
|
|
||||||
assert(0 && "failed to fseek");
|
|
||||||
return *(buffer.data);
|
|
||||||
}
|
|
||||||
#ifdef WIN32
|
|
||||||
unsigned int tmp;
|
|
||||||
tmp = ReadFile(fp, buffer.data, sizeof(T) * buffer.size, &tmp, NULL);
|
|
||||||
if(tmp != sizeof(T) * buffer.size)
|
|
||||||
assert(0 && "failed reading.");
|
|
||||||
return (*buffer.data);
|
|
||||||
#else
|
|
||||||
if(buffer.size != fread(buffer.data, sizeof(T), buffer.size, fp)) {
|
|
||||||
if(feof(fp)) {
|
|
||||||
assert(0 && "end of file");
|
|
||||||
} else {
|
|
||||||
assert(0 && "failed reading!");
|
|
||||||
}
|
|
||||||
return (*buffer.data);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
|
|
||||||
return *(buffer.data + offset);
|
return *(buffer.data + offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PushBack(const T &t) {
|
|
||||||
Resize(n_elements+1);
|
|
||||||
operator[](n_elements-1) = t;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** you can get a region instead of an element but:
|
/** you can get a region instead of an element but:
|
||||||
1)region must be Chunk aligned.
|
1)region must be Chunk aligned.
|
||||||
2)you get impredictable results if regions overlap or mix with operator[]
|
2)you get impredictable results if regions overlap or mix with operator[]
|
||||||
*/
|
*/
|
||||||
T *GetRegion(unsigned int start, unsigned int size) {
|
T *GetRegion(unsigned int start, unsigned int size) {
|
||||||
assert(start + size <= n_elements);
|
assert(start + size <= n_elements);
|
||||||
|
assert((size % chunk_size) == 0);
|
||||||
|
assert((start % chunk_size) == 0);
|
||||||
|
if(size == 0) return NULL;
|
||||||
|
|
||||||
unsigned int chunk = start/chunk_size;
|
unsigned int chunk = start/chunk_size;
|
||||||
unsigned int offset = start - chunk*chunk_size;
|
|
||||||
assert(offset == 0);
|
|
||||||
|
|
||||||
if(index.count(chunk))
|
if(index.count(chunk))
|
||||||
return ((*(index[chunk])).data);
|
return ((*(index[chunk])).data);
|
||||||
|
@ -324,30 +301,20 @@ template <class T> class VFile {
|
||||||
|
|
||||||
Buffer buffer;
|
Buffer buffer;
|
||||||
buffer.key = chunk;
|
buffer.key = chunk;
|
||||||
buffer.data = new T[chunk_size * size];
|
buffer.size = size;
|
||||||
buffer.size = chunk_size * size;
|
buffer.data = new T[buffer.size];
|
||||||
if(buffer.size + chunk * chunk_size > n_elements)
|
|
||||||
buffer.size = -chunk * chunk_size + n_elements;
|
|
||||||
|
|
||||||
buffers.push_front(buffer);
|
buffers.push_front(buffer);
|
||||||
index[chunk] = buffers.begin();
|
index[chunk] = buffers.begin();
|
||||||
|
|
||||||
SetPosition(chunk);
|
SetPosition(chunk);
|
||||||
ReadBuffer(buffer.data, buffer.size);
|
ReadBuffer(buffer.data, buffer.size);
|
||||||
/*if(fseek(fp, chunk * chunk_size * sizeof(T), SEEK_SET)) {
|
|
||||||
assert(0 && "failed to fseek");
|
|
||||||
return buffer.data;
|
return buffer.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(buffer.size != fread(buffer.data, sizeof(T), buffer.size, fp)) {
|
void PushBack(const T &t) {
|
||||||
if(feof(fp)) {
|
Resize(n_elements+1);
|
||||||
assert(0 && "end of file");
|
operator[](n_elements-1) = t;
|
||||||
} else {
|
|
||||||
assert(0 && "failed reading!");
|
|
||||||
}
|
|
||||||
return buffer.data;
|
|
||||||
} */
|
|
||||||
return buffer.data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int Size() { return n_elements; }
|
unsigned int Size() { return n_elements; }
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.2 2004/07/05 15:49:39 ponchio
|
||||||
|
Windows (DevCpp, mingw) port.
|
||||||
|
|
||||||
Revision 1.1 2004/07/04 15:30:00 ponchio
|
Revision 1.1 2004/07/04 15:30:00 ponchio
|
||||||
Changed directory structure.
|
Changed directory structure.
|
||||||
|
|
||||||
|
@ -188,6 +191,9 @@ int main(int argc, char *argv[]) {
|
||||||
if(!pp.count(patch))
|
if(!pp.count(patch))
|
||||||
totvert++;
|
totvert++;
|
||||||
vert_remap.Insert(face[k], patch);
|
vert_remap.Insert(face[k], patch);
|
||||||
|
// if(i > 240000 && (i%100)==0) {
|
||||||
|
// cerr << "inserted " << i << " face: " << face[k] << " \n";
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
watch.Stop();
|
watch.Stop();
|
||||||
|
|
Loading…
Reference in New Issue