248 #define ENLARGE_MODE 1 249 #define SPHERE_MODE 2 285 virtual double volume()
const = 0;
369 void shift(
double shiftX,
double shiftY,
double shiftZ);
406 virtual void read_specific(
const std::vector<double> &vector) = 0;
442 void prepare_Euler();
514 return 4 / 3*
PI*radius*radius*radius;
540 double minradius,
double maxradius,
541 double minden = 1.0,
double maxden = 1.0,
542 double minx0 = 0,
double maxx0 = 0,
543 double miny0 = 0,
double maxy0 = 0,
544 double minz0 = 0,
double maxz0 = 0);
637 double minradius,
double maxradius,
638 double minalpha,
double maxalpha,
639 double minorder,
double maxorder,
640 double minden = 1.0,
double maxden = 1.0,
641 double minx0 = 0,
double maxx0 = 0,
642 double miny0 = 0,
double maxy0 = 0,
643 double minz0 = 0,
double maxz0 = 0);
731 double minsigma,
double maxsigma,
732 double minden = 1.0,
double maxden = 1.0,
733 double minx0 = 0,
double maxx0 = 0,
734 double miny0 = 0,
double maxy0 = 0,
735 double minz0 = 0,
double maxz0 = 0);
817 return 4 / 3*
PI*xradius*yradius*height;
842 double minxradius,
double maxxradius,
843 double minyradius,
double maxyradius,
844 double minheight,
double maxheight,
845 double minden = 1.0,
double maxden = 1.0,
846 double minx0 = 0,
double maxx0 = 0,
847 double miny0 = 0,
double maxy0 = 0,
848 double minz0 = 0,
double maxz0 = 0,
849 double minrot = 0,
double maxrot = 360,
850 double mintilt = 0,
double maxtilt = 180,
851 double minpsi = 0,
double maxpsi = 360);
948 return 2* 4 / 3*
PI*radius*radius*height;
974 double minradius,
double maxradius,
975 double minheight,
double maxheight,
976 double minsep,
double maxsep,
977 double minden = 1.0,
double maxden = 1.0,
978 double minx0 = 0,
double maxx0 = 0,
979 double miny0 = 0,
double maxy0 = 0,
980 double minz0 = 0,
double maxz0 = 0,
981 double minrot = 0,
double maxrot = 360,
982 double mintilt = 0,
double maxtilt = 180,
983 double minpsi = 0,
double maxpsi = 360);
1065 return xdim*ydim*zdim;
1091 double minXdim,
double maxXdim,
1092 double minYdim = 0,
double maxYdim = 0,
1093 double minZdim = 0,
double maxZdim = 0,
1094 double minden = 1.0,
double maxden = 1.0,
1095 double minx0 = 0,
double maxx0 = 0,
1096 double miny0 = 0,
double maxy0 = 0,
1097 double minz0 = 0,
double maxz0 = 0,
1098 double minrot = 0,
double maxrot = 360,
1099 double mintilt = 0,
double maxtilt = 180,
1100 double minpsi = 0,
double maxpsi = 360);
1182 return 4 / 3*
PI*xradius*yradius*zradius;
1207 double minXradius,
double maxXradius,
1208 double minYradius,
double maxYradius,
1209 double minZradius,
double maxZradius,
1210 double minden = 1.0,
double maxden = 1.0,
1211 double minx0 = 0,
double maxx0 = 0,
1212 double miny0 = 0,
double maxy0 = 0,
1213 double minz0 = 0,
double maxz0 = 0,
1214 double minrot = 0,
double maxrot = 360,
1215 double mintilt = 0,
double maxtilt = 180,
1216 double minpsi = 0,
double maxpsi = 360);
1297 return 1 / 3*
PI*radius*radius*height;
1322 double minradius,
double maxradius,
1323 double minheight,
double maxheight,
1324 double minden = 1.0,
double maxden = 1.0,
1325 double minx0 = 0,
double maxx0 = 0,
1326 double miny0 = 0,
double maxy0 = 0,
1327 double minz0 = 0,
double maxz0 = 0,
1328 double minrot = 0,
double maxrot = 360,
1329 double mintilt = 0,
double maxtilt = 180,
1330 double minpsi = 0,
double maxpsi = 360);
1380 std::vector<Feature*>
VF;
1467 void read(
const FileName &fn_phantom,
bool apply_scale =
true);
1499 return voxel_inside_any_feat(r, aux1, aux2);
1508 int any_feature_intersects_sphere(
const Matrix1D<double> &r,
double radius,
1516 double radius)
const 1521 return any_feature_intersects_sphere(r, radius, aux1, aux2, aux3);
1539 #define DONT_CLEAN 0 1554 void shift(
double shiftX,
double shiftY,
double shiftZ);
Phantom(const FileName &fn_phantom)
friend std::ostream & operator<<(std::ostream &o, const Feature *F)
double height
Each cylinder height.
int voxel_inside_any_feat(const Matrix1D< double > &r) const
Matrix2D< double > eulert
Inverse Euler matrix.
double phantom_scale
Param file scale.
int ydim
Final volume Y dimension.
double radius
Sphere radius.
void write(std::ostream &os, const datablock &db)
void readCommon(char *line)
void corners(const MultidimArray< double > &V, Matrix1D< double > &corner1, Matrix1D< double > &corner2)
double voxel_inside_by_normalized_density(const Matrix1D< double > &r, Matrix1D< double > &aux1, Matrix1D< double > &aux2) const
double tilt
Second Euler angle.
void project_to(Projection &P, const Matrix2D< double > &VP, const Matrix2D< double > &PV) const
double xradius
X radius before rotating.
int intersects_sphere(const Matrix1D< double > &r, double radius) const
Matrix2D< double > euler
Euler matrix.
void draw_in(MultidimArray< double > &V, int color_mode=INTERNAL, double colour=-1)
void sketch_in(MultidimArray< double > &V, double colour=2)
int intersects_sphere(const Matrix1D< double > &r, double radius, Matrix1D< double > &aux1, Matrix1D< double > &aux2, Matrix1D< double > &aux3) const
Matrix1D< double > center
virtual int point_inside(const Matrix1D< double > &r, Matrix1D< double > &aux) const =0
const __attribute__((weak)) mrsrc const __attribute__((weak)) char gResourceData[]
int point_inside(const Matrix1D< double > &r) const
void shift(double shiftX, double shiftY, double shiftZ)
virtual void rotate_center(const Matrix2D< double > &E)
int voxel_inside(const Matrix1D< double > &r, Matrix1D< double > &aux1, Matrix1D< double > &aux2) const
double radius
Blob radius.
double density_inside(const Matrix1D< double > &r, Matrix1D< double > &aux) const
double intersection(const Matrix1D< double > &direction, const Matrix1D< double > &passing_point) const
virtual void feat_printf(FILE *fh) const =0
virtual double intersection(const Matrix1D< double > &direction, const Matrix1D< double > &passing_point, Matrix1D< double > &r, Matrix1D< double > &u) const =0
virtual void rotate(const Matrix2D< double > &E)
int voxel_inside(const Matrix1D< double > &r) const
double height
Cone height.
virtual Feature * scale(double factor) const =0
double density_inside(const Matrix1D< double > &r, Matrix1D< double > &aux) const
double param_file_scale
Param file scale.
double height
Cylinder height.
double Background_Density
Final volume background density.
double density_inside(const Matrix1D< double > &r, Matrix1D< double > &aux) const
virtual void feat_printm(MetaData &MD, size_t id)=0
virtual double volume() const =0
int any_feature_intersects_sphere(const Matrix1D< double > &r, double radius) const
void direction(const MultidimArray< double > &orMap, MultidimArray< double > &qualityMap, double lambda, int size, MultidimArray< double > &dirMap, int x, int y)
double separation
Separation between cylinders.
double ydim
Y dimension before rotating.
double density_inside(const Matrix1D< double > &r, Matrix1D< double > &aux) const
double density_inside(const Matrix1D< double > &r, Matrix1D< double > &aux) const
virtual double density_inside(const Matrix1D< double > &r, Matrix1D< double > &aux) const =0
Feature * operator()(int i)
double yradius
Cylinder Y radius.
int zdim
Final volume Z dimension.
const Feature * operator()(int i) const
Feature * background(int back_mode, double back_param) const
double rot
First Euler angle.
double psi(const double x)
double zdim
Z dimension before rotating.
int xdim
Final volume X dimension.
double current_scale
Has been the scale applied?
double radius
Cylinder radius.
void mean_variance_in_plane(Image< double > *V, double z, double &mean, double &var)
double psi
Third Euler angle.
double density_inside(const Matrix1D< double > &r, Matrix1D< double > &aux) const
void assign(const Feature &F)
double zradius
Z radius before rotating.
double yradius
Y radius before rotating.
virtual void read_specific(const std::vector< double > &vector)=0
double radius
Cone base radius.
double xradius
Cylinder X radius.
std::vector< Feature * > VF
List with the features.
Feature * encircle(double radius=0) const
double xdim
X dimension before rotating.
void selfApplyGeometry(const Matrix2D< double > &A)