FourierPixelInserter3DMode10 - encapsulates "method 10" for inserting a 2D Fourier slice into a 3D volume See comments in FourierPixelInserter3D for explanations.
More...
#include <reconstructor_tools.h>
|
static const string | NAME = "kaiser_bessel_derived" |
|
FourierPixelInserter3DMode10 - encapsulates "method 10" for inserting a 2D Fourier slice into a 3D volume See comments in FourierPixelInserter3D for explanations.
Definition at line 495 of file reconstructor_tools.h.
◆ FourierInserter3DMode10() [1/2]
EMAN::FourierInserter3DMode10::FourierInserter3DMode10 |
( |
| ) |
|
|
inline |
◆ ~FourierInserter3DMode10()
virtual EMAN::FourierInserter3DMode10::~FourierInserter3DMode10 |
( |
| ) |
|
|
inlinevirtual |
◆ FourierInserter3DMode10() [2/2]
◆ get_desc()
virtual string EMAN::FourierInserter3DMode10::get_desc |
( |
| ) |
const |
|
inlinevirtual |
Get a clear, concise description of this class.
- Returns
- a clear, concise description of this class
Implements EMAN::FactoryBase.
Definition at line 513 of file reconstructor_tools.h.
515 return "(imprecise) Kaiser-bessel derived (KBD) kernel 8x8x8";
◆ get_name()
virtual string EMAN::FourierInserter3DMode10::get_name |
( |
| ) |
const |
|
inlinevirtual |
◆ insert_pixel()
bool FourierInserter3DMode10::insert_pixel |
( |
const float & |
xx, |
|
|
const float & |
yy, |
|
|
const float & |
zz, |
|
|
const std::complex< float > |
dt, |
|
|
const float & |
weight = 1.0 |
|
) |
| |
|
virtual |
Insert a complex pixel [dt[0]+dt[1]i] at (float) coordinate [xx,yy,zz] with weighting into a discrete 3D volume.
- Parameters
-
xx | the floating point x coordinate |
yy | the floating point y coordinate |
zz | the floating point z coordinate |
dt | the complex pixel value (dt[0] is real, dt[1] is imaginary) |
weight | the weight to given to this complex pixel |
- Returns
- A boolean that indicates the pixel has been inserted (or not)
Implements EMAN::FourierPixelInserter3D.
Definition at line 760 of file reconstructor_tools.cpp.
764 int x0 = (int) floor(xx-N/2);
765 int y0 = (int) floor(yy-N/2);
766 int z0 = (int) floor(zz-N/2);
769 if (x0<-
nx2-7 || y0<-
ny2-7 || z0<-nz2-7 || x0>
nx2+6 || y0>
ny2+6 || z0>
nz2+6 )
return false;
784 float ws [ N/2 + 1 ];
789 for (
int p = 0; p <= N/2; p++) {
790 double tmp = gsl_sf_bessel_i0_scaled(M_PI * alpha *
sqrt(1.0f -
Util::square((((N/2)+p)/(N-1))-1))) / gsl_sf_bessel_i0_scaled(M_PI * alpha);
796 for (
int k = z0 ; k <= z1; k++) {
797 for (
int j = y0 ; j <= y1; j++) {
798 for (
int i = x0; i <= x1; i ++) {
806 size_t off =
data->add_complex_at_fast(i,j,k,dt*dn*w);
813 printf(
"region writing not supported in mode 10\n");
EMData * data
A pointer to the constructor argument real_data.
float * norm
A pointer to the constructor argument normalize_values.
static int hypot3sq(int x, int y, int z)
Euclidean distance function squared in 3D: f(x,y,z) = (x*x + y*y + z*z);.
static int square(int n)
Calculate a number's square.
static int get_min(int f1, int f2)
Get the minimum of 2 numbers.
EMData * sqrt() const
return square root of current image
References EMAN::FourierPixelInserter3D::data, EMAN::Util::get_min(), EMAN::Util::hypot3sq(), EMAN::FourierPixelInserter3D::norm, EMAN::FourierPixelInserter3D::nx2, EMAN::FourierPixelInserter3D::ny2, EMAN::FourierPixelInserter3D::nz2, sqrt(), EMAN::Util::square(), and EMAN::FourierPixelInserter3D::subx0.
◆ NEW()
◆ operator=()
◆ NAME
const string FourierInserter3DMode10::NAME = "kaiser_bessel_derived" |
|
static |
The documentation for this class was generated from the following files: