26 if (count == 0u || !(spacing > 0.0)) {
30 const double center = 0.5 *
static_cast<double>(count - 1u);
31 const double floatingIndex = coordinate / spacing + center;
32 const double clamped = std::max(0.0,
33 std::min(
static_cast<double>(count - 1u), floatingIndex));
34 return static_cast<std::size_t
>(std::llround(clamped));
47 return (
static_cast<double>(index) -
48 0.5 *
static_cast<double>(count - 1u)) * spacing;
61 const double re =
static_cast<double>(value.real());
62 const double im =
static_cast<double>(value.imag());
67 out.
phase.push_back(std::atan2(im, re));
86 const std::size_t y = nearestIndex(position,
88 static_cast<double>(field.
dy()));
91 static_cast<double>(field.
dy()));
97 for (std::size_t x = 0u; x < field.
width(); ++x) {
98 appendSample(field(x, y),
101 static_cast<double>(field.
dx())),
105 const std::size_t x = nearestIndex(position,
107 static_cast<double>(field.
dx()));
110 static_cast<double>(field.
dx()));
116 for (std::size_t y = 0u; y < field.
height(); ++y) {
117 appendSample(field(x, y),
118 physicalCoordinate(y,
120 static_cast<double>(field.
dy())),
Owning Cartesian grid of complex scalar samples.
bool empty() const noexcept
Returns whether the field contains no samples.
float dx() const noexcept
Returns the X grid spacing.
std::size_t height() const noexcept
Returns the number of samples along Y.
std::complex< float > Value
float dy() const noexcept
Returns the Y grid spacing.
std::size_t width() const noexcept
Returns the number of samples along X.
static WaveFunctionCrossSection2DData sample(const ComplexField2D &field, CrossSectionAxis axis, double position)
Performs sample.
Declares the complex scalar field container representing two-dimensional wave functions.
double physicalCoordinate(std::size_t index, std::size_t count, double spacing)
Performs physical coordinate.
std::size_t nearestIndex(double coordinate, std::size_t count, double spacing)
CrossSectionAxis
Enumerates the supported Cross Section Axis values.
Data structure used by the Wave Function Cross Section2D Data component.
std::vector< double > phase
std::vector< double > probability
std::vector< double > imaginaryPart
std::vector< double > realPart
std::vector< double > coordinate
Declares the wavefunctioncrosssection2d physics/numerical component used by QPE experiments.