32#ifndef eman__symmetry_h__
33#define eman__symmetry_h__ 1
59 typedef vector<vector<Vec3f> >::const_iterator
cit;
60 typedef vector<vector<Vec3f> >::iterator
ncit;
154 virtual bool is_in_asym_unit(
const float& altitude,
const float& azimuth,
const bool inc_mirror)
const = 0;
202 virtual vector<Transform>
get_syms()
const;
255 virtual string get_desc()
const {
return "C symmetry support"; }
315 virtual bool is_in_asym_unit(
const float& altitude,
const float& azimuth,
const bool inc_mirror)
const;
362 virtual string get_desc()
const {
return "D symmetry support"; }
420 virtual bool is_in_asym_unit(
const float& altitude,
const float& azimuth,
const bool inc_mirror)
const;
468 virtual string get_desc()
const {
return "Helical symmetry, with support for N-start, pitch and limited tilt range. Specify as H[nsym]:[nstart]:[daz]:[tz in pix](:[maxtilt])"; }
479 d.
put(
"nsym",
EMObject::INT,
"The number of asymmetric units to generate. This could be infinite for helical symmetry. Normally a multiple of nstart.");
480 d.
put(
"nstart",
EMObject::INT,
"The Cn symmetry of a single Z-slice of the helix.");
481 d.
put(
"tz",
EMObject::FLOAT,
"The translational distance (along z) between successive identical subunits in angstroms (default A/pix is 1)");
482 d.
put(
"daz",
EMObject::FLOAT,
"The rotational angle (about z) between successive identical subunits in degrees");
483 d.
put(
"apix",
EMObject::FLOAT,
"Angstroms per pixel, default is 1.0, used only for tz");
484 d.
put(
"maxtilt",
EMObject::FLOAT,
"When generating projections, normally only 'side views' are created (3-D Z along Y in 2-D). This is the maximum out of plane tilt in degrees.");
548 virtual bool is_in_asym_unit(
const float& altitude,
const float& azimuth,
const bool inc_mirror)
const;
622 virtual bool is_in_asym_unit(
const float& altitude,
const float& azimuth,
const bool inc_mirror)
const;
700 virtual string get_desc()
const {
return "Tetrahedral symmetry support"; }
730 virtual bool is_in_asym_unit(
const float& altitude,
const float& azimuth,
const bool inc_mirror)
const;
803 virtual string get_desc()
const {
return "Octahedral symmetry support"; }
879 virtual string get_desc()
const {
return "Icosahedral symmetry support"; }
943 virtual string get_desc()
const {
return "Icosahedral 2 symmetry support"; }
1014 d.
put(
"phitoo",
EMObject::FLOAT,
"Specifying a non zero value for this argument will cause phi rotations to be included. The value specified is the angular spacing of the phi rotations in degrees. The default for this value is 0, causing no extra phi rotations to be included.");
1015 d.
put(
"random_phi",
EMObject::BOOL,
"Causes the orientations to have a random phi. This occurs before the phitoo parameter is considered.");
1035 bool add_orientation(vector<Transform>& v,
const float& az,
const float& alt)
const;
1063 void get_az_max(
const Symmetry3D*
const sym,
const float& altmax,
const bool inc_mirror,
const float& alt_iterator,
const float& h,
bool& d_odd_mirror_flag,
float& azmax_adjusted)
const;
1105 virtual string get_desc()
const {
return "Generate orientations distributed quasi-uniformaly over the asymmetric unit using an altitude-proportional strategy"; }
1114 d.
put(
"delta",
EMObject::FLOAT,
"The angular separation of orientations in degrees. This option is mutually exclusively of the n argument.");
1115 d.
put(
"perturb",
EMObject::BOOL,
"Whether or not to perturb the generated orientations in a small local area, default is true.");
1116 d.
put(
"n",
EMObject::INT,
"The number of orientations to generate. This option is mutually exclusively of the delta argument.Will attempt to get as close to the number specified as possible.");
1117 d.
put(
"inc_mirror",
EMObject::BOOL,
"Indicates whether or not to include the mirror portion of the asymmetric unit. Default is false.");
1118 d.
put(
"alt_min",
EMObject::FLOAT,
"Minimum altitude value to include (alt=0 is Z axis). Default=0");
1119 d.
put(
"alt_max",
EMObject::FLOAT,
"Maximum altitude value to include (alt=90 is X-Y plane). Default=no limit");
1120 d.
put(
"breaksym",
EMObject::BOOL,
"If specified, still generates orientations filling the unit (hemi)sphere, but does it by filling one asymmetric unit, then generating all symmetric equivalents.");
1121 d.
put(
"breaksym_real",
EMObject::BOOL,
"Same as breaksym, but do not use inc_mirror.");
1156 float get_az_delta(
const float& delta,
const float& altitude,
const int maxcsym)
const;
1186 virtual string get_desc()
const {
return "Generate a single orientation with the specified EMAN style Euler angles. Symmetry is ignored."; }
1198 d.
put(
"phitoo",
EMObject::INT,
"This option is ignored for the single orientation generator");
1199 d.
put(
"randomphi",
EMObject::INT,
"This option is ignored for the single orientation generator");
1256 virtual string get_desc()
const {
return "Generate random orientations within an asymmetric unit"; }
1266 d.
put(
"inc_mirror",
EMObject::BOOL,
"Indicates whether or not to include the mirror portion of the asymmetric unit. Default is false.");
1322 virtual string get_desc()
const {
return "Generate quasi-evenly distributed orientations within an asymmetric unit using Penczek's (94) approach"; }
1331 d.
put(
"delta",
EMObject::FLOAT,
"The angular separation of orientations in degrees. This option is mutually exclusively of the n argument.");
1332 d.
put(
"inc_mirror",
EMObject::BOOL,
"Indicates whether or not to include the mirror portion of the asymmetric unit. Default is false.");
1333 d.
put(
"n",
EMObject::INT,
"The number of orientations to generate. This option is mutually exclusively of the delta argument.Will attempt to get as close to the number specified as possible.");
1387 virtual string get_desc()
const {
return "Generate quasi-evenly distributed orientations within an asymmetric unit using a spiraling method attributed to Saff"; }
1396 d.
put(
"n",
EMObject::INT,
"The number of orientations to generate. This option is mutually exclusively of the delta argument.Will attempt to get as close to the number specified as possible.");
1397 d.
put(
"inc_mirror",
EMObject::BOOL,
"Indicates whether or not to include the mirror portion of the asymmetric unit. Default is false.");
1398 d.
put(
"delta",
EMObject::FLOAT,
"The angular separation of orientations in degrees. This option is mutually exclusively of the n argument.");
1460 virtual string get_desc()
const {
return "Generate optimally distributed orientations within an asymmetric using a basic optimization technique"; }
1469 d.
put(
"n",
EMObject::INT,
"The number of orientations to generate. This option is mutually exclusively of the delta argument.Will attempt to get as close to the number specified as possible.");
1470 d.
put(
"inc_mirror",
EMObject::BOOL,
"Indicates whether or not to include the mirror portion of the asymmetric unit. Default is false.");
1471 d.
put(
"delta",
EMObject::FLOAT,
"The angular separation of orientations in degrees. This option is mutually exclusively of the n argument.");
1472 d.
put(
"use",
EMObject::STRING,
"The orientation generation technique used to generate the initial distribution on the unit sphere.");
An encapsulation of cyclic 3D symmetry.
virtual Dict get_delimiters(const bool inc_mirror=false) const
Get the altitude and phi angle of the c symmetry, which depends on nysm.
virtual string get_name() const
Return CSym::NAME.
virtual bool is_in_asym_unit(const float &altitude, const float &azimuth, const bool inc_mirror) const
A function to be used when generating orientations over portion of the unit sphere defined by paramet...
virtual string get_desc() const
Get a description.
static Symmetry3D * NEW()
Factory support function NEW.
virtual int get_nsym() const
Gets the total number of unique roational symmetry operations associated with this symmetry For C sym...
virtual vector< vector< Vec3f > > get_asym_unit_triangles(bool inc_mirror) const
Get triangles that precisely occlude the projection area of the default asymmetric unit.
virtual bool is_c_sym() const
Returns true - this is indeed a c symmetry object.
virtual vector< Vec3f > get_asym_unit_points(bool inc_mirror=false) const
to demarcate the asymmetric unit.
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class.
CSym(const CSym &)
Disallow copy construction.
virtual int get_max_csym() const
Gets the maximum symmetry of this object.
static const string NAME
The name of this class - used to access it from factories etc. Should be "c".
CSym & operator=(const CSym &)
Disallow assignment.
virtual Transform get_sym(const int n) const
Provides access to the complete set of rotational symmetry operations associated with this symmetry.
An encapsulation of dihedral 3D symmetry.
static const string NAME
The name of this class - used to access it from factories etc. Should be "d".
DSym & operator=(const DSym &)
Disallow assignment.
static Symmetry3D * NEW()
Factory support function NEW.
virtual bool is_in_asym_unit(const float &altitude, const float &azimuth, const bool inc_mirror) const
A function to be used when generating orientations over portion of the unit sphere defined by paramet...
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class.
virtual int get_max_csym() const
Gets the maximum symmetry of this object.
virtual bool is_d_sym() const
Returns true - this is indeed a c symmetry object.
virtual vector< vector< Vec3f > > get_asym_unit_triangles(bool inc_mirror) const
Get triangles that precisely occlude the projection area of the default asymmetric unit.
DSym(const DSym &)
Disallow copy construction.
virtual string get_name() const
Return DSym::NAME.
virtual vector< Vec3f > get_asym_unit_points(bool inc_mirror=false) const
virtual string get_desc() const
Get a description.
virtual Dict get_delimiters(const bool inc_mirror=false) const
Get the altitude and phi angle of the d symmetry, which depends on nysm.
virtual Transform get_sym(const int n) const
Provides access to the complete set of rotational symmetry operations associated with this symmetry.
virtual int get_nsym() const
Gets the total number of unique roational symmetry operations associated with this symmetry For D sym...
Dict is a dictionary to store <string, EMObject> pair.
EmanOrientationGenerator generates orientations quasi-evenly distributed in the asymmetric unit.
static const string NAME
The name of this class - used to access it from factories etc. Should be "icos".
EmanOrientationGenerator()
virtual string get_name() const
Return "eman".
float get_az_delta(const float &delta, const float &altitude, const int maxcsym) const
Gets the optimum azimuth delta (angular step) for a given altitude, delta and maximum symmetry.
EmanOrientationGenerator(const EmanOrientationGenerator &)
Disallow copy construction.
virtual string get_desc() const
Get a description.
EmanOrientationGenerator & operator=(const EmanOrientationGenerator &)
Disallow assignment.
virtual int get_orientations_tally(const Symmetry3D *const sym, const float &delta) const
This function returns how many orientations will be generated for a given delta (angular spacing) It ...
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class.
static OrientationGenerator * NEW()
Factory support function NEW.
virtual vector< Transform > gen_orientations(const Symmetry3D *const sym) const
generate orientations given some symmetry type
virtual ~EmanOrientationGenerator()
Sparx even orientation generator - see util_sparx.cpp - Util::even_angles(...) This orientation gener...
EvenOrientationGenerator & operator=(const EvenOrientationGenerator &)
Disallow assignment.
virtual string get_desc() const
Get a description.
virtual vector< Transform > gen_orientations(const Symmetry3D *const sym) const
Generate even distributed orientations in the asymmetric unit of the symmetry.
static const string NAME
The name of this class - used to access it from factories etc. Should be "icos".
virtual int get_orientations_tally(const Symmetry3D *const sym, const float &delta) const
This function returns how many orientations will be generated for a given delta (angular spacing) It ...
virtual ~EvenOrientationGenerator()
EvenOrientationGenerator(const EvenOrientationGenerator &)
Disallow copy construction.
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class.
EvenOrientationGenerator()
static OrientationGenerator * NEW()
Factory support function NEW.
virtual string get_name() const
Return "even".
A class one may inherit from to ensure that the responsibilities of being incorporated into an EMAN2:...
Dict params
This is the dictionary the stores the parameters of the object.
Factory is used to store objects to create new instances.
An encapsulation of helical 3D symmetry.
virtual Dict get_delimiters(const bool inc_mirror=false) const
Get the altitude and phi angle of the d symmetry, which depends on nysm.
virtual string get_name() const
Return HSym::NAME.
virtual vector< vector< Vec3f > > get_asym_unit_triangles(bool inc_mirror) const
Get triangles that precisely occlude the projection area of the default asymmetric unit.
HSym & operator=(const HSym &)
Disallow assignment.
static Symmetry3D * NEW()
Factory support function NEW.
virtual Transform get_sym(const int n) const
Provides access to the complete set of rotational and translational symmetry operations associated wi...
virtual int get_nsym() const
For symmetries in general this function is supposed to return the number of unique symmetric operatio...
virtual string get_desc() const
Get a description.
HSym(const HSym &)
Disallow copy construction.
virtual bool is_h_sym() const
Determines whether or not this Symmetry3D is the helical type - returns true.
virtual int get_max_csym() const
Gets the maximum cylcic symmetry exhibited by this object.
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class Of all the symmetries,...
virtual vector< Vec3f > get_asym_unit_points(bool inc_mirror=false) const
virtual bool is_in_asym_unit(const float &altitude, const float &azimuth, const bool inc_mirror) const
A function to be used when generating orientations over portion of the unit sphere defined by paramet...
static const string NAME
The name of this class - used to access it from factories etc. Should be "h".
An encapsulation of icosahedral symmetry 222.
virtual string get_desc() const
Get a description.
static const string NAME
The name of this class - used to access it from factories etc. Should be "icos2".
virtual string get_name() const
Return IcosahedralSym::NAME.
virtual int get_max_csym() const
Gets the maximum symmetry of this object.
Icosahedral2Sym(const Icosahedral2Sym &)
Disallow copy construction.
virtual ~Icosahedral2Sym()
virtual int get_nsym() const
Gets the total number of unique roational symmetry operations associated with this symmetry For icosa...
Icosahedral2Sym()
Constructor calls PlatonicSym::init.
static Symmetry3D * NEW()
Factory support function NEW.
virtual Transform get_sym(const int n) const
This function provides access to the unique rotational symmetries of an icosahedron.
virtual float get_az_alignment_offset() const
Get the azimuth alignment offset required to ensure that orientations align correctly with symmetric ...
Icosahedral2Sym & operator=(const Icosahedral2Sym &)
Disallow assignment.
An encapsulation of icosahedral symmetry Doctor Phil has this to say about icosahedral symmetry: "Eac...
static Symmetry3D * NEW()
Factory support function NEW.
IcosahedralSym()
Constructor calls PlatonicSym::init.
static const string NAME
The name of this class - used to access it from factories etc. Should be "icos".
IcosahedralSym(const IcosahedralSym &)
Disallow copy construction.
virtual string get_desc() const
Get a description.
virtual string get_name() const
Return IcosahedralSym::NAME.
virtual Transform get_sym(const int n) const
This function provides access to the unique rotational symmetries of an icosahedron.
virtual int get_nsym() const
Gets the total number of unique rotational symmetry operations associated with this symmetry For icos...
virtual float get_az_alignment_offset() const
Get the azimuth alignment offset required to ensure that orientations align correctly with symmetric ...
virtual ~IcosahedralSym()
IcosahedralSym & operator=(const IcosahedralSym &)
Disallow assignment.
virtual int get_max_csym() const
Gets the maximum symmetry of this object.
An encapsulation of octahedral symmetry Doctor Phil has this to say about the octahedral symmetry: "E...
static Symmetry3D * NEW()
Factory support function NEW.
virtual Transform get_sym(const int n) const
This function provides access to the unique rotational symmetries of an octahedron.
virtual int get_nsym() const
Gets the total number of unique roational symmetry operations associated with this symmetry For octah...
OctahedralSym & operator=(const OctahedralSym &)
Disallow assignment.
virtual string get_name() const
Return OctahedralSym::NAME.
virtual string get_desc() const
Get a description.
OctahedralSym(const OctahedralSym &)
Disallow copy construction.
virtual int get_max_csym() const
Gets the maximum symmetry of this object.
OctahedralSym()
Constructor calls PlatonicSym::init.
static const string NAME
The name of this class - used to access it from factories etc. Should be "oct".
Optimum orientation generator.
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class.
OptimumOrientationGenerator()
virtual int get_orientations_tally(const Symmetry3D *const sym, const float &delta) const
This function returns how many orientations will be generated for a given delta (angular spacing) It ...
virtual vector< Transform > gen_orientations(const Symmetry3D *const sym) const
Generate Saff orientations in the asymmetric unit of the symmetry.
virtual string get_desc() const
Get a description.
static const string NAME
The name of this class - used to access it from factories etc. Should be "icos".
virtual string get_name() const
Return "opt".
OptimumOrientationGenerator & operator=(const OptimumOrientationGenerator &)
Disallow assignment.
OptimumOrientationGenerator(const OptimumOrientationGenerator &)
Disallow copy construction.
virtual ~OptimumOrientationGenerator()
static OrientationGenerator * NEW()
Factory support function NEW.
vector< Vec3f > optimize_distances(const vector< Transform > &v) const
Optimize the distances in separating points on the unit sphere, as described by the the rotations in ...
An orientation generator is a kind of class that will generate orientations for a given symmetry If o...
bool add_orientation(vector< Transform > &v, const float &az, const float &alt) const
This functions adds one or more Transform objects to the vector v, depending on the parameters stored...
virtual vector< Transform > gen_orientations(const Symmetry3D *const sym) const =0
generate orientations given some symmetry type
float get_optimal_delta(const Symmetry3D *const sym, const int &n) const
This function gets the optimal value of the delta (or angular spacing) of the orientations based on a...
OrientationGenerator(const OrientationGenerator &)
Disallow copy construction.
virtual int get_orientations_tally(const Symmetry3D *const sym, const float &delta) const =0
This function returns how many orientations will be generated for a given delta (angular spacing) It ...
void get_az_max(const Symmetry3D *const sym, const float &altmax, const bool inc_mirror, const float &alt_iterator, const float &h, bool &d_odd_mirror_flag, float &azmax_adjusted) const
virtual TypeDict get_param_types() const
OrientationGenerator & operator=(const OrientationGenerator &)
Disallow assignment.
virtual ~OrientationGenerator()
A base (or parent) class for the Platonic symmetries.
float platonic_alt_lower_bound(const float &azimuth, const float &alpha) const
Returns the lower bound of the asymmetric unit, as dependent on azimuth, and on alpha - alpha is alt_...
virtual vector< vector< Vec3f > > get_asym_unit_triangles(bool inc_mirror) const
Get triangles that precisely occlude the projection area of the default asymmetric unit.
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class Platonic symmetries actually hav...
virtual vector< Vec3f > get_asym_unit_points(bool inc_mirror=false) const
void init()
Init - Called to initialize platonic_params, should be called in the constructor of all Platonic soli...
PlatonicSym(const PlatonicSym &)
Disallow copy construction.
virtual Dict get_delimiters(const bool inc_mirror=false) const
Returns the range of altitude and azimuth angles which encompass the asymmetric unit of the Platonic ...
virtual bool is_in_asym_unit(const float &altitude, const float &azimuth, const bool inc_mirror) const
A function to be used when generating orientations over portion of the unit sphere defined by paramet...
Dict platonic_params
A dictionary that stores important angles, in radians.
PlatonicSym & operator=(const PlatonicSym &)
Disallow assignment.
virtual bool is_platonic_sym() const
Determines whether or not this Symmetry3D is the platonic type - returns true.
Random Orientation Generator - carefully generates uniformly random orientations in any asymmetric un...
virtual int get_orientations_tally(const Symmetry3D *const sym, const float &delta) const
This function returns how many orientations will be generated for a given delta (angular spacing) It ...
RandomOrientationGenerator & operator=(const RandomOrientationGenerator &)
Disallow assignment.
virtual string get_name() const
Return "random".
virtual ~RandomOrientationGenerator()
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class.
static const string NAME
The name of this class - used to access it from factories etc.
virtual vector< Transform > gen_orientations(const Symmetry3D *const sym) const
Generate random orientations in the asymmetric unit of the symmetry.
virtual string get_desc() const
Get a description.
RandomOrientationGenerator(const RandomOrientationGenerator &)
Disallow copy construction.
static OrientationGenerator * NEW()
Factory support function NEW.
RandomOrientationGenerator()
Saff orientation generator - based on the work of Saff and Kuijlaars, 1997 E.B.
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class.
SaffOrientationGenerator(const SaffOrientationGenerator &)
Disallow copy construction.
virtual int get_orientations_tally(const Symmetry3D *const sym, const float &delta) const
This function returns how many orientations will be generated for a given delta (angular spacing) It ...
virtual vector< Transform > gen_orientations(const Symmetry3D *const sym) const
Generate Saff orientations in the asymmetric unit of the symmetry.
SaffOrientationGenerator()
virtual string get_name() const
Return "saff".
SaffOrientationGenerator & operator=(const SaffOrientationGenerator &)
Disallow assignment.
virtual string get_desc() const
Get a description.
virtual ~SaffOrientationGenerator()
static OrientationGenerator * NEW()
Factory support function NEW.
static const string NAME
The name of this class - used to access it from factories etc. Should be "icos".
SingleOrientationGenerator generates a single orientation with the specified EMAN-style Euler angles.
virtual ~SingleOrientationGenerator()
virtual vector< Transform > gen_orientations(const Symmetry3D *const sym) const
generate orientations given some symmetry type
SingleOrientationGenerator(const SingleOrientationGenerator &)
Disallow copy construction.
SingleOrientationGenerator()
SingleOrientationGenerator & operator=(const SingleOrientationGenerator &)
Disallow assignment.
virtual int get_orientations_tally(const Symmetry3D *const sym, const float &delta) const
This function returns how many orientations will be generated for a given delta (angular spacing) It ...
virtual string get_name() const
Return "eman".
static const string NAME
The name of this class - used to access it from factories etc. Should be "icos".
virtual TypeDict get_param_types() const
Get a dictionary containing the permissable parameters of this class.
virtual string get_desc() const
Get a description.
static OrientationGenerator * NEW()
Factory support function NEW.
Symmetry3D - A base class for 3D Symmetry objects.
int num_triangles
This is stores the number of triangles returned by get_asym_unit_triangles(true)
vector< vector< Vec3f > > au_sym_triangles
This cache is of size cache_size.
void cache_au_planes() const
Establish the asymmetric unit planes cache.
virtual bool is_c_sym() const
A function that is used to determine if this is a c symmetry object This function is only virtually o...
virtual bool is_h_sym() const
A function that is used to determine if this is a Helical symmetry object This function is only virtu...
virtual int get_max_csym() const =0
The Symmetry3D object must return the maximum degree of symmetry it exhibits about any one axis.
virtual bool is_tet_sym() const
A function that is used to determine if this is the tetrahedral symmetry object This function is only...
virtual vector< Transform > get_touching_au_transforms(bool inc_mirror=true) const
Gets a vector of Transform objects that define the set of asymmetric units that touch the default asy...
virtual int get_nsym() const =0
The total number of unique symmetry operations that will be return by this object when a calling prog...
virtual vector< vector< Vec3f > > get_asym_unit_triangles(bool inc_mirror) const =0
Get triangles that precisely occlude the projection area of the default asymmetric unit.
vector< vector< Vec3f > >::const_iterator cit
static vector< Transform > get_symmetries(const string &symmetry)
virtual int in_which_asym_unit(const Transform &t3d) const
A function that will determine in which asymmetric unit a given orientation resides The asymmetric un...
int cache_size
Have to remember the cache size.
virtual bool is_platonic_sym() const
A function that is used to determine if this is a platonic symmetry object This function is only virt...
void delete_au_planes()
Clear the asymmetric unit planes cache.
virtual vector< Vec3f > get_asym_unit_points(bool inc_mirror) const =0
The Symmetry3D object must be capable of returning an ordered list of points on the unit sphere that ...
virtual int point_in_which_asym_unit(const Vec3f &v) const
A function that will determine in which asymmetric unit a given vector resides The asymmetric unit 'n...
virtual vector< Transform > get_syms() const
virtual bool is_in_asym_unit(const float &altitude, const float &azimuth, const bool inc_mirror) const =0
A function to be used when generating orientations over portion of the unit sphere defined by paramet...
float ** cached_au_planes
The asymmetric unit planes are cached to provide a great speed up the point_in_which_asym_unit functi...
vector< Transform > gen_orientations(const string &generatorname="eman", const Dict &parms=Dict())
Ask the Symmetry3D object to generate a set of orientations in its asymmetric unit using an Orientati...
virtual Transform get_sym(const int n) const =0
Every Symmetry3D object must provide access to the full set of its symmetry operators via this functi...
vector< vector< Vec3f > >::iterator ncit
virtual Dict get_delimiters(const bool inc_mirror=false) const =0
Every Symmetry3D object must return a dictionary containing the delimiters that define its asymmetric...
virtual float get_az_alignment_offset() const
This functionality is only relevant to platonic symmetries.
virtual bool is_d_sym() const
A function that is used to determine if this is a d symmetry object This function is only virtually o...
Symmetry3D & operator=(const Symmetry3D &)
Disallow assignment.
Symmetry3D(const Symmetry3D &)
Disallow copy construction.
An encapsulation of tetrahedral symmetry Doctor Phil has this to say about tetrahedral symmetry: " Ea...
virtual ~TetrahedralSym()
TetrahedralSym & operator=(const TetrahedralSym &)
Disallow assignment.
virtual vector< Vec3f > get_asym_unit_points(bool inc_mirror=false) const
virtual bool is_tet_sym() const
A function that is used to determine if this is the tetrahedral symmetry object.
TetrahedralSym(const TetrahedralSym &)
Disallow copy construction.
static Symmetry3D * NEW()
Factory support function NEW.
static const string NAME
The name of this class - used to access it from factories etc. Should be "tet".
virtual string get_name() const
Return TetrahedralSym::NAME.
TetrahedralSym()
Constructor calls PlatonicSym::init.
virtual int get_nsym() const
Gets the total number of unique roational symmetry operations associated with this symmetry For tetra...
virtual float get_az_alignment_offset() const
Get the azimuth alignment offset required to ensure that orientations align correctly with symmetric ...
virtual string get_desc() const
Get a description.
virtual Transform get_sym(const int n) const
This function provides access to the unique rotational symmetries of a tetrahedron.
virtual bool is_in_asym_unit(const float &altitude, const float &azimuth, const bool inc_mirror) const
In tetrahedral symmetry special consideration must be taken when generating orientations in the asymm...
virtual int get_max_csym() const
Gets the maximum symmetry of this object.
TypeDict is a dictionary to store <string, EMObject::ObjectType> pair.
void put(const string &key, EMObject::ObjectType o, const string &desc="")
virtual Transform reduce(const Transform &t3d, int n=0) const
A function that will reduce an orientation, as characterized by Euler anges, into a specific asymmetr...
void dump_orientgens()
Dumps useful information about the OrientationGenerator factory.
map< string, vector< string > > dump_symmetries_list()
dump_symmetries_list, useful for obtaining symmetry information
map< string, vector< string > > dump_orientgens_list()
Can be used to get useful information about the OrientationGenerator factory.
void dump_symmetries()
dump symmetries, useful for obtaining symmetry information