#include <symmetry.h>
Inheritance diagram for EMAN::HSym:
Public Member Functions | |
HSym () | |
virtual | ~HSym () |
virtual string | get_name () const |
Return HSym::NAME. | |
virtual string | get_desc () const |
Get a description. | |
virtual TypeDict | get_param_types () const |
Get a dictionary containing the permissable parameters of this class Of all the symmetries, helical has the most options. | |
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 and translational symmetry operations associated with helical symmetry. | |
virtual int | get_nsym () const |
For symmetries in general this function is supposed to return the number of unique symmetric operations that can be applied for the given Symmetry3D object. | |
virtual int | get_max_csym () const |
Gets the maximum cylcic symmetry exhibited by this object. | |
virtual bool | is_h_sym () const |
Determines whether or not this Symmetry3D is the helical type - returns true. | |
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 parameters returned by get_delimiters. | |
virtual vector< Vec3f > | get_asym_unit_points (bool inc_mirror=false) const |
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. | |
Static Public Member Functions | |
Symmetry3D * | NEW () |
Factory support function NEW. | |
Static Public Attributes | |
const string | NAME = "h" |
The name of this class - used to access it from factories etc. Should be "h". | |
Private Member Functions | |
HSym (const HSym &) | |
Disallow copy construction. | |
HSym & | operator= (const HSym &) |
Disallow assignment. |
Definition at line 446 of file symmetry.h.
|
Definition at line 449 of file symmetry.h. 00449 {};
|
|
Definition at line 450 of file symmetry.h. 00450 {};
|
|
Disallow copy construction.
|
|
Implements EMAN::Symmetry3D. Definition at line 1508 of file symmetry.cpp. References b, get_delimiters(), EMAN::Dict::set_default(), and EMAN::Vec3f. 01509 { 01510 vector<Vec3f> ret; 01511 01512 Dict delim = get_delimiters(inc_mirror); 01513 int nsym = params.set_default("nsym",0); 01514 float az = -(float)delim["az_max"]; 01515 01516 01517 bool tracing_arcs = false; 01518 01519 01520 if ( !tracing_arcs) { 01521 Vec3f a(0,-1,0); 01522 ret.push_back(a); 01523 01524 if ( nsym > 2 ) { 01525 Dict d("type","eman"); 01526 d["phi"] = 0.0f; 01527 d["alt"] = 0.0f; 01528 d["az"] = az; 01529 Vec3f b = Transform(d)*a; 01530 ret.push_back(b); 01531 } 01532 else 01533 { 01534 ret.push_back(Vec3f(1,0,0)); 01535 01536 ret.push_back(Vec3f(0,1,0)); 01537 01538 if ( nsym == 1 ) { 01539 ret.push_back(Vec3f(-1,0,0)); 01540 ret.push_back(a); 01541 } 01542 } 01543 } 01544 return ret; 01545 01546 }
|
|
Get triangles that precisely occlude the projection area of the default asymmetric unit. This is used for collision detection in Symmetry3D::reduce
Implements EMAN::Symmetry3D. Definition at line 1502 of file symmetry.cpp. 01502 {
01503
01504 vector<vector<Vec3f> > ret;
01505 return ret;
01506 }
|
|
Get the altitude and phi angle of the d symmetry, which depends on nysm. The "alt_max" is always 90 + the "equator_range" variable in the internally stored params The "alt_min" veriable is always 90. The "az_max" is always 360/nsym degrees Helical symmetry argument is the only symmetry not to act on the inc_mirror argument. The current policy is the orientation generator using this symmetry should make its own accomodation for the inclusion of mirror orientations if the symmetry is helical (hence the presence of the is_h_sym function in the Symmetry3D class).
Implements EMAN::Symmetry3D. Referenced by get_asym_unit_points(), and is_in_asym_unit(). |
|
Get a description.
Implements EMAN::FactoryBase. Definition at line 468 of file symmetry.h. 00468 { return "H symmetry support"; }
|
|
Gets the maximum cylcic symmetry exhibited by this object. This is used by OrientationGenerators, and is probably not something a general user would utilize.
Implements EMAN::Symmetry3D. Definition at line 531 of file symmetry.h. 00531 { return params["nsym"]; }
|
|
Return HSym::NAME.
Implements EMAN::FactoryBase. Definition at line 463 of file symmetry.h. 00463 { return NAME; }
|
|
For symmetries in general this function is supposed to return the number of unique symmetric operations that can be applied for the given Symmetry3D object. However, for helical symmetry it is possible that the there are infinitely many symmetric operations. So there is no general answer to return here. So, as a hack, the answer returned is the number of rotional steps (as specified by the "d_az" paramater) that can be applied before surpassing 360 degrees.
Implements EMAN::Symmetry3D. Definition at line 521 of file symmetry.h. References InvalidValueException. 00521 { 00522 float daz = params.set_default("daz",0.0f); 00523 if ( daz <= 0 ) throw InvalidValueException(daz,"Error, you must specify a positive non zero d_az"); 00524 return static_cast<int>(360.0/daz); 00525 };
|
|
Get a dictionary containing the permissable parameters of this class Of all the symmetries, helical has the most options. This is because different approaches have to taken in regard to defining an asymmetric unit and to returning the set of rotational and translational symmetry operations
Implements EMAN::FactoryBase. Definition at line 476 of file symmetry.h. References EMAN::TypeDict::put(). 00477 { 00478 TypeDict d; 00479 d.put("nsym", EMObject::INT, "The symmetry number of the helix, around the equator."); 00480 d.put("equator_range", EMObject::FLOAT, "The amount altitude angles are allowed to vary above and below the equator. Default is 5"); 00481 d.put("tz", EMObject::FLOAT, "The translational distance (along z) between succesive identical subunits in angstrom (default a/pix is 1)"); 00482 d.put("daz", EMObject::FLOAT, "The rotational angle (about z) between successive identical subunits in degrees"); 00483 d.put("apix", EMObject::FLOAT, "Angstrom per pixel, default is one."); 00484 return d; 00485 }
|
|
Provides access to the complete set of rotational and translational symmetry operations associated with helical symmetry. This symmetry operations are generated in a straightforward way from the parameters of this class, specifically the return Transform object has an azimuth of n times the "d_az" (as specified in the parameters of this class), and has a post translation of "tz" in the z direction.
Implements EMAN::Symmetry3D. Definition at line 1548 of file symmetry.cpp. References EMAN::Dict::set_default(), and EMAN::Transform::set_trans(). 01549 { 01550 float daz = params.set_default("daz",0.0f); 01551 float apix = params.set_default("apix",1.0f); 01552 float dz = params.set_default("tz", 0)/apix; 01553 01554 Dict d("type","eman"); 01555 // courtesy of Phil Baldwin 01556 d["az"] = n * daz; 01557 d["alt"] = 0.0f; 01558 d["phi"] = 0.0f; 01559 Transform ret(d); 01560 ret.set_trans(0,0,n*dz); 01561 return ret; 01562 }
|
|
Determines whether or not this Symmetry3D is the helical type - returns true.
Reimplemented from EMAN::Symmetry3D. Definition at line 539 of file symmetry.h. 00539 { return true; }
|
|
A function to be used when generating orientations over portion of the unit sphere defined by parameters returned by get_delimiters. In platonic symmetry altitude and azimuth alone are not enough to correctly demarcate the asymmetric unit. See the get_delimiters comments.
Implements EMAN::Symmetry3D. Definition at line 1485 of file symmetry.cpp. References get_delimiters(), and EMAN::Dict::set_default(). 01486 { 01487 Dict d = get_delimiters(inc_mirror); 01488 float alt_max = d["alt_max"]; 01489 float alt_min = d["alt_min"]; 01490 01491 if (inc_mirror) { 01492 float e = params.set_default("equator_range",5.0f); 01493 alt_min -= e; 01494 } 01495 01496 float az_max = d["az_max"]; 01497 01498 if ( altitude >=alt_min && altitude <= alt_max && azimuth <= az_max && azimuth >= 0 ) return true; 01499 return false; 01500 }
|
|
Factory support function NEW.
Definition at line 455 of file symmetry.h. 00456 { 00457 return new HSym(); 00458 }
|
|
Disallow assignment.
|
|
The name of this class - used to access it from factories etc. Should be "h".
Definition at line 42 of file symmetry.cpp. |