From 7808e7ee73fefaedc60a76639db6d4f3e0e412f0 Mon Sep 17 00:00:00 2001 From: curt Date: Thu, 27 Nov 1997 00:17:32 +0000 Subject: [PATCH] Initial revision. --- FixNode/Makefile | 80 +++++++++++++++++++++++++++++++++++++++++ FixNode/fixnode.c | 55 ++++++++++++++++++++++++++++ FixNode/fixnode.h | 49 +++++++++++++++++++++++++ FixNode/main.c | 57 +++++++++++++++++++++++++++++ FixNode/triload.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++ FixNode/triload.h | 54 ++++++++++++++++++++++++++++ 6 files changed, 386 insertions(+) create mode 100644 FixNode/Makefile create mode 100644 FixNode/fixnode.c create mode 100644 FixNode/fixnode.h create mode 100644 FixNode/main.c create mode 100644 FixNode/triload.c create mode 100644 FixNode/triload.h diff --git a/FixNode/Makefile b/FixNode/Makefile new file mode 100644 index 000000000..236c6acc9 --- /dev/null +++ b/FixNode/Makefile @@ -0,0 +1,80 @@ +#--------------------------------------------------------------------------- +# 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 = fixnode + +CFILES = ../Dem2node/demparse.c fixnode.c main.c ../Dem2node/mesh.c triload.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 + +../Dem2node/demparse.o: ../Dem2node/demparse.c + $(CC) $(CFLAGS) -c ../Dem2node/demparse.c -o $@ + +main.o: main.c + $(CC) $(CFLAGS) -c main.c -o $@ + +mesh.o: mesh.c + $(CC) $(CFLAGS) -c mesh.c -o $@ + +triload.o: triload.c + $(CC) $(CFLAGS) -c triload.c -o $@ + + +#--------------------------------------------------------------------------- +# $Log$ +# Revision 1.1 1997/11/27 00:17:32 curt +# Initial revision. +# diff --git a/FixNode/fixnode.c b/FixNode/fixnode.c new file mode 100644 index 000000000..274e5627c --- /dev/null +++ b/FixNode/fixnode.c @@ -0,0 +1,55 @@ +/* fixnode.c -- traverse the node file and fix the elevation of all the new + * interpolated points. + * + * Written by Curtis Olson, started November 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 "fixnode.h" +#include "../Dem2node/mesh.h" +#include "triload.h" + + +/* load the node information */ +void fixnodes(struct MESH *m) { + int i; + + for ( i = origcount + 1; i <= nodecount; i++ ) { + printf("Current: %d %.2f %.2f %.2f\n", i, nodes[i][0], + nodes[i][1], nodes[i][2]); + + nodes[i][2] = mesh_altitude(m, nodes[i][0], nodes[i][1]); + + printf("Fixed: %d %.2f %.2f %.2f\n", i, nodes[i][0], + nodes[i][1], nodes[i][2]); + } +} + + +/* $Log$ +/* Revision 1.1 1997/11/27 00:17:33 curt +/* Initial revision. +/* + */ diff --git a/FixNode/fixnode.h b/FixNode/fixnode.h new file mode 100644 index 000000000..3c514b974 --- /dev/null +++ b/FixNode/fixnode.h @@ -0,0 +1,49 @@ +/* fixnode.h -- traverse the node file and fix the elevation of all the new + * interpolated points. + * + * Written by Curtis Olson, started November 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 FIXNODE_H +#define FIXNODE_H + + +#include +#include + +/* #include "fixnode.h" */ +#include "../Dem2node/mesh.h" + + +/* load the node information */ +void fixnodes(struct MESH *m); + + +#endif /* FIXNODE_H */ + + +/* $Log$ +/* Revision 1.1 1997/11/27 00:17:33 curt +/* Initial revision. +/* + */ diff --git a/FixNode/main.c b/FixNode/main.c new file mode 100644 index 000000000..67f47a9d1 --- /dev/null +++ b/FixNode/main.c @@ -0,0 +1,57 @@ +/* triload.c -- read in a .node file and fix the z values of the interpolated + * points + * + * Written by Curtis Olson, started November 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 "../Dem2node/demparse.h" +#include "fixnode.h" +#include "triload.h" + + +int main(int argc, char **argv) { + char basename[256]; + struct MESH dem_mesh; + + strcpy(basename, argv[1]); + + /* load the input data files */ + triload(basename); + + /* load the corresponding dem file so we can interpolate elev values */ + dem_parse(basename, &dem_mesh); + + fixnodes(&dem_mesh); + + return(0); +} + + +/* $Log$ +/* Revision 1.1 1997/11/27 00:17:34 curt +/* Initial revision. +/* + */ diff --git a/FixNode/triload.c b/FixNode/triload.c new file mode 100644 index 000000000..2d6d670d7 --- /dev/null +++ b/FixNode/triload.c @@ -0,0 +1,91 @@ +/* triload.c -- read in a .node file and fix the z values of the interpolated + * points + * + * Written by Curtis Olson, started November 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 "triload.h" + + +int origcount; +int nodecount; +double nodes[MAX_NODES][3]; + + +/* load the node information */ +void triload(char *basename) { + char origname[256], nodename[256]; + FILE *orig, *node; + int dim, junk1, junk2; + int i; + + strcpy(origname, basename); + strcat(origname, ".node"); + + strcpy(nodename, basename); + strcat(nodename, ".1.node"); + + /* open original node file to see number of original nodes */ + + printf("Checking original node file: %s ...\n", origname); + if ( (orig = fopen(origname, "r")) == NULL ) { + printf("Cannot open file '%s'\n", origname); + exit(-1); + } + fscanf(orig, "%d %d %d %d", &origcount, &dim, &junk1, &junk2); + printf(" Found %d nodes\n", origcount); + + 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); +} + + +/* $Log$ +/* Revision 1.1 1997/11/27 00:17:35 curt +/* Initial revision. +/* + */ diff --git a/FixNode/triload.h b/FixNode/triload.h new file mode 100644 index 000000000..058c01869 --- /dev/null +++ b/FixNode/triload.h @@ -0,0 +1,54 @@ +/* triload.h -- read in a .node file and fix the z values of the interpolated + * points + * + * Written by Curtis Olson, started November 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 TRILOAD_H +#define TRILOAD_H + + +#include +#include + + +#define MAX_NODES 200000 +#define MAX_TRIS 400000 + + +extern int origcount, nodecount, tricount; +double nodes[MAX_NODES][3]; + + +/* Initialize a new mesh structure */ +void triload(char *basename); + + +#endif /* TRILOAD_H */ + + +/* $Log$ +/* Revision 1.1 1997/11/27 00:17:35 curt +/* Initial revision. +/* + */