93 lines
2.3 KiB
C
93 lines
2.3 KiB
C
|
/**************************************************************************
|
||
|
* mesh.c -- data structures and routines for processing terrain meshes
|
||
|
*
|
||
|
* Written by Curtis Olson, started May 1997.
|
||
|
*
|
||
|
* $Id$
|
||
|
* (Log is kept at end of this file)
|
||
|
**************************************************************************/
|
||
|
|
||
|
|
||
|
#include <malloc.h>
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h> /* atof(), atoi() */
|
||
|
#include <string.h>
|
||
|
|
||
|
#include "mesh.h"
|
||
|
#include "common.h"
|
||
|
|
||
|
|
||
|
/* return a pointer to a new mesh structure (no data array allocated yet) */
|
||
|
struct mesh *(new_mesh)() {
|
||
|
struct mesh *mesh_ptr;
|
||
|
|
||
|
mesh_ptr = (struct mesh *)malloc(sizeof(struct mesh));
|
||
|
|
||
|
if ( mesh_ptr == 0 ) {
|
||
|
printf("Virtual memory exceeded\n");
|
||
|
exit(-1);
|
||
|
}
|
||
|
|
||
|
mesh_ptr->cur_row = 0;
|
||
|
mesh_ptr->cur_col = 0;
|
||
|
|
||
|
return(mesh_ptr);
|
||
|
}
|
||
|
|
||
|
|
||
|
/* return a pointer to a dynamically allocated array */
|
||
|
float *(new_mesh_data)(int nrows, int ncols) {
|
||
|
float *mesh_data_ptr;
|
||
|
|
||
|
mesh_data_ptr = (float *)malloc(nrows * ncols * sizeof(float));
|
||
|
|
||
|
if ( mesh_data_ptr == 0 ) {
|
||
|
printf("Virtual memory exceeded\n");
|
||
|
exit(-1);
|
||
|
}
|
||
|
|
||
|
printf("Allocated float(%d, %d)\n", nrows, ncols);
|
||
|
|
||
|
return(mesh_data_ptr);
|
||
|
}
|
||
|
|
||
|
|
||
|
/* set the option name in the mesh data structure */
|
||
|
void mesh_set_option_name(struct mesh *m, char *name) {
|
||
|
if ( strlen(name) < MAX_IDENT_LEN ) {
|
||
|
strcpy(m->option_name, name);
|
||
|
} else {
|
||
|
strncpy(m->option_name, name, MAX_IDENT_LEN - 1);
|
||
|
m->option_name[MAX_IDENT_LEN - 1] = '\0';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* set an option value in the mesh data structure */
|
||
|
void mesh_set_option_value(struct mesh *m, char *value) {
|
||
|
printf("Setting %s to %s\n", m->option_name, value);
|
||
|
|
||
|
if ( strcmp(m->option_name, "originx") == 0 ) {
|
||
|
m->originx = atof(value);
|
||
|
} else if ( strcmp(m->option_name, "originy") == 0 ) {
|
||
|
m->originy = atof(value);
|
||
|
} else if ( strcmp(m->option_name, "rows") == 0 ) {
|
||
|
m->rows = atoi(value);
|
||
|
} else if ( strcmp(m->option_name, "cols") == 0 ) {
|
||
|
m->cols = atoi(value);
|
||
|
} else if ( strcmp(m->option_name, "row_step") == 0 ) {
|
||
|
m->row_step = atof(value);
|
||
|
} else if ( strcmp(m->option_name, "col_step") == 0 ) {
|
||
|
m->col_step = atof(value);
|
||
|
} else {
|
||
|
printf("Unknown option %s with value %s, ignoring ...\n",
|
||
|
m->option_name, value);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/* $Log$
|
||
|
/* Revision 1.1 1997/05/16 16:07:04 curt
|
||
|
/* Initial revision.
|
||
|
/*
|
||
|
*/
|