Changes in sasmodels/kernel_header.c [1e7b0db0:b00a646] in sasmodels
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/kernel_header.c
r1e7b0db0 rb00a646 148 148 inline double sas_sinx_x(double x) { return x==0 ? 1.0 : sin(x)/x; } 149 149 150 // To rotate from the canonical position to theta, phi, psi, first rotate by 151 // psi about the major axis, oriented along z, which is a rotation in the 152 // detector plane xy. Next rotate by theta about the y axis, aligning the major 153 // axis in the xz plane. Finally, rotate by phi in the detector plane xy. 154 // To compute the scattering, undo these rotations in reverse order: 155 // rotate in xy by -phi, rotate in xz by -theta, rotate in xy by -psi 156 // The returned q is the length of the q vector and (xhat, yhat, zhat) is a unit 157 // vector in the q direction. 158 // To change between counterclockwise and clockwise rotation, change the 159 // sign of phi and psi. 160 150 161 #if 1 162 //think cos(theta) should be sin(theta) in new coords, RKH 11Jan2017 151 163 #define ORIENT_SYMMETRIC(qx, qy, theta, phi, q, sn, cn) do { \ 152 164 SINCOS(phi*M_PI_180, sn, cn); \ 153 165 q = sqrt(qx*qx + qy*qy); \ 154 cn = (q==0. ? 1.0 : (cn*qx + sn*qy)/q * cos(theta*M_PI_180)); \166 cn = (q==0. ? 1.0 : (cn*qx + sn*qy)/q * sin(theta*M_PI_180)); \ 155 167 sn = sqrt(1 - cn*cn); \ 156 168 } while (0) … … 165 177 #endif 166 178 179 #if 1 180 #define ORIENT_ASYMMETRIC(qx, qy, theta, phi, psi, q, xhat, yhat, zhat) do { \ 181 q = sqrt(qx*qx + qy*qy); \ 182 const double qxhat = qx/q; \ 183 const double qyhat = qy/q; \ 184 double sin_theta, cos_theta; \ 185 double sin_phi, cos_phi; \ 186 double sin_psi, cos_psi; \ 187 SINCOS(theta*M_PI_180, sin_theta, cos_theta); \ 188 SINCOS(phi*M_PI_180, sin_phi, cos_phi); \ 189 SINCOS(psi*M_PI_180, sin_psi, cos_psi); \ 190 xhat = qxhat*(-sin_phi*sin_psi + cos_theta*cos_phi*cos_psi) \ 191 + qyhat*( cos_phi*sin_psi + cos_theta*sin_phi*cos_psi); \ 192 yhat = qxhat*(-sin_phi*cos_psi - cos_theta*cos_phi*sin_psi) \ 193 + qyhat*( cos_phi*cos_psi - cos_theta*sin_phi*sin_psi); \ 194 zhat = qxhat*(-sin_theta*cos_phi) \ 195 + qyhat*(-sin_theta*sin_phi); \ 196 } while (0) 197 #else 198 // SasView 3.x definition of orientation 167 199 #define ORIENT_ASYMMETRIC(qx, qy, theta, phi, psi, q, cos_alpha, cos_mu, cos_nu) do { \ 168 200 q = sqrt(qx*qx + qy*qy); \ … … 179 211 cos_nu = (-cos_phi*sin_psi*sin_theta + sin_phi*cos_psi)*qxhat + sin_psi*cos_theta*qyhat; \ 180 212 } while (0) 213 #endif
Note: See TracChangeset
for help on using the changeset viewer.