From af4e04b9df83d3a653db32c151a81306b454f30c Mon Sep 17 00:00:00 2001 From: curt Date: Wed, 29 Oct 1997 23:05:14 +0000 Subject: [PATCH] Initial revision. --- Tri2obj/Makefile | 74 +++++++++++++++++++++++ Tri2obj/depend | 1 + Tri2obj/tri2obj.c | 146 ++++++++++++++++++++++++++++++++++++++++++++++ Tri2obj/tri2obj.h | 56 ++++++++++++++++++ 4 files changed, 277 insertions(+) create mode 100644 Tri2obj/Makefile create mode 100644 Tri2obj/depend create mode 100644 Tri2obj/tri2obj.c create mode 100644 Tri2obj/tri2obj.h diff --git a/Tri2obj/Makefile b/Tri2obj/Makefile new file mode 100644 index 000000000..074139b2f --- /dev/null +++ b/Tri2obj/Makefile @@ -0,0 +1,74 @@ +#--------------------------------------------------------------------------- +# Makefile +# +# Written by Curtis Olson, started October 1997. +# +# Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# $Id$ +# (Log is kept at end of this file) +#--------------------------------------------------------------------------- + + +TARGET = tri2obj + +CFILES = tri2obj.c +OFILES = $(CFILES:.c=.o) + + +include ../make.inc + + +CFLAGS = $(FG_CFLAGS) -g + + +#--------------------------------------------------------------------------- +# Primary Targets +#--------------------------------------------------------------------------- + +all: $(TARGET) + +$(TARGET): $(OFILES) + $(CC) $(OFILES) -o $(TARGET) + +clean: + rm -f *.o $(TARGET) lib*.a *.os2 *~ core + +realclean: clean + + +#--------------------------------------------------------------------------- +# Secondary Targets +#--------------------------------------------------------------------------- + +makedepend: + $(CC) -MM *.c > depend + +include depend + +tri2obj.o: tri2obj.c + $(CC) $(CFLAGS) -c tri2obj.c -o $@ + + +#--------------------------------------------------------------------------- +# $Log$ +# Revision 1.1 1997/10/29 23:05:14 curt +# Initial revision. +# +# Revision 1.1 1997/10/23 23:12:09 curt +# Initial revision. +# diff --git a/Tri2obj/depend b/Tri2obj/depend new file mode 100644 index 000000000..4f9aa4b15 --- /dev/null +++ b/Tri2obj/depend @@ -0,0 +1 @@ +triload.o: triload.c triload.h diff --git a/Tri2obj/tri2obj.c b/Tri2obj/tri2obj.c new file mode 100644 index 000000000..55268f320 --- /dev/null +++ b/Tri2obj/tri2obj.c @@ -0,0 +1,146 @@ +/* tri2obj.c -- read in a .ele/.node file pair generated by the triangle + * program and output a simple Wavefront .obj file. + * + * Written by Curtis Olson, started October 1997. + * + * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id$ + * (Log is kept at end of this file) + */ + + +#include +#include + +#include "tri2obj.h" + + +int nodecount, tricount; +double nodes[MAX_NODES][3]; +int tris[MAX_TRIS][3]; +int new_tris[MAX_TRIS][3]; + + +/* Initialize a new mesh structure */ +void triload(char *basename) { + char nodename[256], elename[256]; + FILE *node, *ele; + int dim, junk1, junk2; + int i; + + strcpy(nodename, basename); + strcat(nodename, ".node"); + strcpy(elename, basename); + strcat(elename, ".ele"); + + printf("Loading node file: %s ...\n", nodename); + if ( (node = fopen(nodename, "r")) == NULL ) { + printf("Cannot open file '%s'\n", nodename); + exit(-1); + } + + fscanf(node, "%d %d %d %d", &nodecount, &dim, &junk1, &junk2); + + if ( nodecount > MAX_NODES - 1 ) { + printf("Error, too many nodes, need to increase array size\n"); + exit(-1); + } else { + printf(" Expecting %d nodes\n", nodecount); + } + + for ( i = 1; i <= nodecount; i++ ) { + fscanf(node, "%d %lf %lf %lf %d\n", &junk1, + &nodes[i][0], &nodes[i][1], &nodes[i][2], &junk2); + /* printf("%d %.2f %.2f %.2f\n", + junk1, nodes[i][0], nodes[i][1], nodes[i][2]); */ + } + + fclose(node); + + printf("Loading element file: %s ...\n", elename); + if ( (ele = fopen(elename, "r")) == NULL ) { + printf("Cannot open file '%s'\n", elename); + exit(-1); + } + + fscanf(ele, "%d %d %d", &tricount, &junk1, &junk2); + + if ( tricount > MAX_TRIS - 1 ) { + printf("Error, too many elements, need to increase array size\n"); + exit(-1); + } else { + printf(" Expecting %d elements\n", tricount); + } + + for ( i = 1; i <= tricount; i++ ) { + fscanf(ele, "%d %d %d %d\n", &junk1, + &tris[i][0], &tris[i][1], &tris[i][2]); + /* printf("%d %d %d %d\n", junk1, tris[i][0], tris[i][1], tris[i][2]);*/ + } + + fclose(ele); +} + + +/* dump in WaveFront .obj format */ +void dump_obj(char *basename) { + char objname[256]; + FILE *obj; + int i; + + strcpy(objname, basename); + strcat(objname, ".obj"); + + printf("Dumping to file: %s ...\n", objname); + + obj = fopen(objname, "w"); + + /* dump vertices */ + for ( i = 1; i <= nodecount; i++ ) { + fprintf(obj, "v %.2f %.2f %.2f\n", + nodes[i][0], nodes[i][1], nodes[i][2]); + } + + /* dump faces */ + for ( i = 1; i <= tricount; i++ ) { + fprintf(obj, "f %d %d %d\n", tris[i][0], tris[i][1], tris[i][2]); + } + + fclose(obj); +} + +int main(int argc, char **argv) { + char basename[256]; + + strcpy(basename, argv[1]); + + /* load the input data files */ + triload(basename); + + /* dump in WaveFront .obj format */ + dump_obj(basename); + + return(0); +} + + +/* $Log$ +/* Revision 1.1 1997/10/29 23:05:15 curt +/* Initial revision. +/* + */ diff --git a/Tri2obj/tri2obj.h b/Tri2obj/tri2obj.h new file mode 100644 index 000000000..6c2b14269 --- /dev/null +++ b/Tri2obj/tri2obj.h @@ -0,0 +1,56 @@ +/* tri2obj.h -- read in a .ele/.node file pair generated by the triangle + * program and output a Wavefront .obj file. + * + * Written by Curtis Olson, started October 1997. + * + * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id$ + * (Log is kept at end of this file) + */ + + +#ifndef TRI2OBJ_H +#define TRI2OBJ_H + + +#include +#include + + +#define MAX_NODES 100000 +#define MAX_TRIS 200000 + + +extern int nodecount, tricount; +extern double nodes[MAX_NODES][3]; +extern int tris[MAX_TRIS][3]; +extern int new_tris[MAX_TRIS][3]; + + +/* Initialize a new mesh structure */ +void triload(char *basename); + + +#endif /* TRI2OBJ_H */ + + +/* $Log$ +/* Revision 1.1 1997/10/29 23:05:15 curt +/* Initial revision. +/* + */ -- 2.39.2