aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2010-01-08 16:41:44 +0100
committerThomas White <taw@physics.org>2010-01-08 16:41:44 +0100
commit294b6857374fe90c6950d3557d45d1b6b1d8311e (patch)
treec9f72474a1554a26acf9aa19a175088830236571
parentf61d1b2281d0589db2141946c26707fe1bc9be3d (diff)
Handle DirAx files with c-vectors
-rw-r--r--src/dirax.c26
1 files 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;