diff options
author | Thomas White <taw@physics.org> | 2023-07-11 11:01:23 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2023-07-28 13:22:05 +0200 |
commit | e2fe7137e7994b11bfce1f3a74af8f5ec9025b48 (patch) | |
tree | 8c2a6acc56ea1a8ba41684db2e55f079ecb8b349 /libcrystfel/src/geometry.c | |
parent | 25a59996689f0285f23e6c5d8221af80e8e06125 (diff) |
Redefine ray vector without trigonometry
This makes the gradients very simple!
Diffstat (limited to 'libcrystfel/src/geometry.c')
-rw-r--r-- | libcrystfel/src/geometry.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/libcrystfel/src/geometry.c b/libcrystfel/src/geometry.c index 9dc471ee..674fe4d0 100644 --- a/libcrystfel/src/geometry.c +++ b/libcrystfel/src/geometry.c @@ -53,17 +53,11 @@ static int locate_peak_on_panel(double x, double y, double z, double k, double det_shift_x, double det_shift_y, double *pfs, double *pss) { - double ctt, tta, phi; gsl_vector *v; gsl_vector *t; gsl_matrix *M; double fs, ss, one_over_mu; - /* Calculate 2theta (scattering angle) and azimuth (phi) */ - tta = atan2(sqrt(x*x+y*y), k+z); - ctt = cos(tta); - phi = atan2(y, x); - /* Set up matrix equation */ M = gsl_matrix_alloc(3, 3); v = gsl_vector_alloc(3); @@ -73,9 +67,9 @@ static int locate_peak_on_panel(double x, double y, double z, double k, return 0; } - gsl_vector_set(t, 0, sin(tta)*cos(phi)); - gsl_vector_set(t, 1, sin(tta)*sin(phi)); - gsl_vector_set(t, 2, ctt); + gsl_vector_set(t, 0, x); + gsl_vector_set(t, 1, y); + gsl_vector_set(t, 2, k+z); gsl_matrix_set(M, 0, 0, p->cnx+(det_shift_x/p->pixel_pitch)); gsl_matrix_set(M, 0, 1, p->fsx); |