#include using namespace std; #include #include #include #include int myRound( double x ) { double fl, ce; fl = floor( x ); ce = ceil( x ); if( fabs( fl-x ) < fabs( ce-x ) ) return fl; else return ce; } char lineBuffer[200]; int ReadFileInfo(FILE *oimStream, int *xmax, int *ymax, double *stepSize ) { double x, y, dxmax; long count; *stepSize = 0.0; dxmax = 0.0; *xmax = 0; while(fgets(lineBuffer, 200, oimStream ) != NULL) { if( lineBuffer[0] == '#' ) { if( strcmp( lineBuffer, "# GRID: SqrGrid" ) == 0 ) { printf("The file is already a square grid file.\nProgram terminated.\n"); return 0; } count = 0; continue; } if( sscanf( lineBuffer, "%*lf %*lf %*lf %lf %lf %*lf %*lf %*i %*i %*lf", &x, &y ) != 2 ) return 0; if( *stepSize == 0.0 && x != 0.0 ) *stepSize = x; if( x > dxmax ) { dxmax = x; (*xmax)++; } count++; } (*xmax)++; *ymax = (int)(count / *xmax ); return 1; } int main(int argc, char *argv[]) { struct { float phi1, Phi, phi2; float float1, float2, float3, float4; int int1, int2; } data[3000][3000]; int xx, yy, xlimit, ylimit, xlimitOut, xOut; double stepSize; char outFilename[50], filename[50]; FILE *inStream, *outStream; sprintf( filename, "%s", argv[1]); printf("Hex2Cub\n"); if( (inStream = fopen(filename, "r" )) == NULL ) { printf( "Can't open %s\n", filename ); exit( 1 ); } printf("Reading %s\n", filename); if( ReadFileInfo( inStream, &xlimit, &ylimit, &stepSize ) == 0 ) { printf( "Wrong file format in %s\n", filename); exit( 1 ); } fclose( inStream ); sprintf( outFilename, "cub_%s", filename); if( (inStream = fopen( filename, "r" )) != NULL ) { outStream = fopen( outFilename, "w" ); //read file header do { if( fscanf( inStream, "%[^\n]\n", lineBuffer ) == EOF ) { printf( "Early end of file encountered in ANG file\n" ); exit(1); } //write the file header if( lineBuffer[0] == '#' ) { if( strcmp( lineBuffer, "# GRID: HexGrid" ) == 0 ) fprintf( outStream, "# GRID: SqrGrid\n" ); else fprintf( outStream, "%s\n", lineBuffer ); } } while( lineBuffer[0] == '#' ); for( yy=0; yy