aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel/src/geometry.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2023-07-11 11:01:23 +0200
committerThomas White <taw@physics.org>2023-07-28 13:22:05 +0200
commite2fe7137e7994b11bfce1f3a74af8f5ec9025b48 (patch)
tree8c2a6acc56ea1a8ba41684db2e55f079ecb8b349 /libcrystfel/src/geometry.c
parent25a59996689f0285f23e6c5d8221af80e8e06125 (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.c12
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);