From 294b6857374fe90c6950d3557d45d1b6b1d8311e Mon Sep 17 00:00:00 2001 From: Thomas White Date: Fri, 8 Jan 2010 16:41:44 +0100 Subject: Handle DirAx files with c-vectors --- src/dirax.c | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/src/dirax.c b/src/dirax.c index b1d421e..59d0cff 100644 --- a/src/dirax.c +++ b/src/dirax.c @@ -502,17 +502,15 @@ ReflectionList *dirax_load(const char *filename) while ( !feof(fh) ) { size_t ptr; - float lambda, theta, chib, phib; + float lambda, x, y, z; fgets(line, 255, fh); ptr = skipspace(line); if ( line[ptr] == '!' ) continue; if ( line[ptr] == '\n' ) continue; if ( line[ptr] == '\r' ) continue; - if ( sscanf(line+ptr, "%f %f %f\n", &theta, &phib, - &chib) == 3 ) { + if ( sscanf(line+ptr, "%f %f %f\n", &x, &y, &z) == 3 ) { - double s, x, y, z; float blah, intensity; /* Try to find an intensity value. Use dummy value @@ -522,23 +520,13 @@ ReflectionList *dirax_load(const char *filename) intensity = 1.0; } - if ( !lambda_set ) { - printf("DX: Wavelength not specified\n"); - continue; - } - - chib = deg2rad(chib); - phib = deg2rad(phib); - theta = deg2rad(theta); - s = 2*(sin(theta)/lambda); - x = -s*cos(chib)*sin(phib); - y = +s*cos(chib)*cos(phib); - z = +s*sin(chib); - reflection_add(list, x, y, z, 1.0, REFLECTION_NORMAL); + reflection_add(list, x*1e10, y*1e10, z*1e10, 1.0, + REFLECTION_NORMAL); continue; } + if ( sscanf(line+ptr, "%f\n", &lambda) == 1 ) { if ( lambda_set ) { printf("DX: Warning: Found something which " @@ -577,9 +565,9 @@ int dirax_is_drxfile(const char *filename) if ( line[ptr] == '!' ) continue; if ( line[ptr] == '\n' ) continue; if ( line[ptr] == '\r' ) continue; - fscanf(fh, "%f\n", &lambda); + sscanf(line, "%f\n", &lambda); fclose(fh); - if ( lambda > 0.5 ) { + if ( lambda >= 0.5 ) { return 1; } else { return 0; -- cgit v1.2.3