#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 1562 of file symmetry.cpp. References b, get_delimiters(), EMAN::Dict::set_default(), and EMAN::Vec3f. 01563 { 01564 vector<Vec3f> ret; 01565 01566 Dict delim = get_delimiters(inc_mirror); 01567 int nsym = params.set_default("nsym",1); 01568 float az = -(float)delim["az_max"]; 01569 01570 01571 bool tracing_arcs = false; 01572 01573 01574 if ( !tracing_arcs) { 01575 Vec3f a(0,-1,0); 01576 ret.push_back(a); 01577 01578 if ( nsym > 2 ) { 01579 Dict d("type","eman"); 01580 d["phi"] = 0.0f; 01581 d["alt"] = 0.0f; 01582 d["az"] = az; 01583 Vec3f b = Transform(d)*a; 01584 ret.push_back(b); 01585 } 01586 else 01587 { 01588 ret.push_back(Vec3f(1,0,0)); 01589 01590 ret.push_back(Vec3f(0,1,0)); 01591 01592 if ( nsym == 1 ) { 01593 ret.push_back(Vec3f(-1,0,0)); 01594 ret.push_back(a); 01595 } 01596 } 01597 } 01598 return ret; 01599 01600 }
|
|
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 1556 of file symmetry.cpp. 01556 {
01557
01558 vector<vector<Vec3f> > ret;
01559 return ret;
01560 }
|
|
Get the altitude and phi angle of the d symmetry, which depends on nysm. The "alt_max" is always 90 The "alt_min" 90-maxtilt 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 "Helical symmetry, with support for N-start, pitch and limited tilt range. Specify as H<nsym>,<nstart>,<daz>,<tz in pix>[,<maxtilt>]"; }
|
|
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 530 of file symmetry.h. 00530 { return (int)params["nstart"]; } // may not be
|
|
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. For helical symmetries this is provided by the user as a parameter when setting up the helical symmetry. Generally a multiple of nstart.
Implements EMAN::Symmetry3D. Definition at line 519 of file symmetry.h. 00519 { return (int)params["nsym"]; };
|
|
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 number of asymmetric units to generate. This could be infinite for helical symmetry. Normally a multiple of nstart."); 00480 d.put("nstart", EMObject::INT, "The Cn symmetry of a single Z-slice of the helix."); 00481 d.put("tz", EMObject::FLOAT, "The translational distance (along z) between successive identical subunits in angstroms (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, "Angstroms per pixel, default is 1.0, used only for tz"); 00484 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."); 00485 return d; 00486 }
|
|
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 1602 of file symmetry.cpp. References EMAN::Dict::set_default(), and EMAN::Transform::set_trans(). 01603 { 01604 int nstart=params["nstart"]; 01605 //int nsym=params["nsym"]; 01606 float apix = params.set_default("apix",1.0f); 01607 float daz= params["daz"]; 01608 float tz=params["tz"]; 01609 float dz=tz/apix; 01610 Dict d("type","eman"); 01611 01612 // courtesy of Phil Baldwin 01613 //d["az"] = (n%nsym) * 360.0f / nsym; 01614 //d["az"]=(((int) n/hsym)%nstart)*360.f/nstart+(n%hsym)*daz; 01615 //d["az"] = n * daz; 01616 d["az"]=(n%nstart)*(360.0/nstart)+floor(float(n)/nstart)*daz; // corrected by steve, 7/21/11. No dependency on nsym 01617 d["alt"] = 0.0f; 01618 d["phi"] = 0.0f; 01619 Transform ret(d); 01620 ret.set_trans(0,0,(n/nstart)*dz); 01621 return ret; 01622 }
|
|
Determines whether or not this Symmetry3D is the helical type - returns true.
Reimplemented from EMAN::Symmetry3D. Definition at line 538 of file symmetry.h. 00538 { 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 1539 of file symmetry.cpp. References get_delimiters(), and EMAN::Dict::set_default(). 01540 { 01541 Dict d = get_delimiters(inc_mirror); 01542 float alt_max = d["alt_max"]; 01543 float alt_min = d["alt_min"]; 01544 01545 if (inc_mirror) { 01546 float e = params.set_default("maxtilt",5.0f); 01547 alt_min -= e; 01548 } 01549 01550 float az_max = d["az_max"]; 01551 01552 if ( altitude >=alt_min && altitude <= alt_max && azimuth <= az_max && azimuth >= 0 ) return true; 01553 return false; 01554 }
|
|
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. |