Skip to content
Snippets Groups Projects
Commit d38b734e authored by Van Herck, Walter's avatar Van Herck, Walter
Browse files

Added principal axes orientation angles to FTDistribution2D

parent b8dce937
No related branches found
No related tags found
No related merge requests found
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
//! @author Scientific Computing Group at FRM II //! @author Scientific Computing Group at FRM II
//! @date Oct 26, 2012 //! @date Oct 26, 2012
#include <cmath>
class IFTDistribution1D class IFTDistribution1D
{ {
public: public:
...@@ -28,15 +30,20 @@ protected: ...@@ -28,15 +30,20 @@ protected:
class IFTDistribution2D class IFTDistribution2D
{ {
public: public:
IFTDistribution2D(double omega_x, double omega_y) : m_omega_x(omega_x), m_omega_y(omega_y) {} IFTDistribution2D(double omega_x, double omega_y) : m_omega_x(omega_x), m_omega_y(omega_y),
m_gamma(0.0), m_delta(M_PI/2.0) {}
virtual ~IFTDistribution2D() {} virtual ~IFTDistribution2D() {}
virtual IFTDistribution2D *clone() const=0; virtual IFTDistribution2D *clone() const=0;
double getGamma() { return m_gamma; }
double getDelta() { return m_delta; }
virtual double evaluate(double qx, double qy) const=0; virtual double evaluate(double qx, double qy) const=0;
protected: protected:
double m_omega_x; double m_omega_x;
double m_omega_y; double m_omega_y;
double m_gamma;
double m_delta;
}; };
class FTDistribution2DCauchy : public IFTDistribution2D class FTDistribution2DCauchy : public IFTDistribution2D
......
#include "FTDistributions.h" #include "FTDistributions.h"
#include <cmath>
FTDistribution2DCauchy::FTDistribution2DCauchy(double omega_x, double omega_y) FTDistribution2DCauchy::FTDistribution2DCauchy(double omega_x, double omega_y)
: IFTDistribution2D(omega_x, omega_y) : IFTDistribution2D(omega_x, omega_y)
......
...@@ -131,7 +131,9 @@ complex_t InterferenceFunction2DParaCrystal::FTPDF(double qx, double qy, double ...@@ -131,7 +131,9 @@ complex_t InterferenceFunction2DParaCrystal::FTPDF(double qx, double qy, double
complex_t phase = std::exp(complex_t(0.0, 1.0)*qa); complex_t phase = std::exp(complex_t(0.0, 1.0)*qa);
// transform q to principal axes: // transform q to principal axes:
double qp1, qp2; double qp1, qp2;
transformToPrincipalAxes(qx, qy, xi, M_PI/2, qp1, qp2); double gamma = xi + m_pdfs[index]->getGamma();
double delta = m_pdfs[index]->getDelta();
transformToPrincipalAxes(qx, qy, gamma, delta, qp1, qp2);
double amplitude = m_pdfs[index]->evaluate(qp1, qp2); double amplitude = m_pdfs[index]->evaluate(qp1, qp2);
complex_t result = phase*amplitude; complex_t result = phase*amplitude;
if (m_use_corr_length) { if (m_use_corr_length) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment