EMAN2
EMAN::OctahedralSym Class Reference

An encapsulation of octahedral symmetry Doctor Phil has this to say about the octahedral symmetry: "Each Platonic Solid has 2E symmetry elements. More...

`#include <symmetry.h>`

Inheritance diagram for EMAN::OctahedralSym:
[legend]
Collaboration diagram for EMAN::OctahedralSym:
[legend]

List of all members.

## Public Member Functions

OctahedralSym ()
Constructor calls PlatonicSym::init.
virtual ~OctahedralSym ()
virtual string get_name () const
Return OctahedralSym::NAME.
virtual string get_desc () const
Get a description.
virtual int get_max_csym () const
Gets the maximum symmetry of this object.
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 octahedral symmetry this is 24.

## Static Public Member Functions

static Symmetry3DNEW ()
Factory support function NEW.

## Static Public Attributes

static const string NAME = "oct"
The name of this class - used to access it from factories etc. Should be "oct".

## Private Member Functions

OctahedralSym (const OctahedralSym &)
Disallow copy construction.
OctahedralSymoperator= (const OctahedralSym &)
Disallow assignment.

## Detailed Description

An encapsulation of octahedral symmetry Doctor Phil has this to say about the octahedral symmetry: "Each Platonic Solid has 2E symmetry elements.

"A cube has m=3, n=4, F=6 E=12=nF/2, V=8=nF/m,since vertices shared by 3 squares; It is composed of 6 squares. An octahedron has m=4, n=3, F=8 E=12=nF/2, V=6=nF/m,since vertices shared by 4 triangles"

Date:
Feb 2008

Definition at line 779 of file symmetry.h.

## Constructor & Destructor Documentation

 EMAN::OctahedralSym::OctahedralSym ( ) ` [inline]`

Constructor calls PlatonicSym::init.

Definition at line 784 of file symmetry.h.

References EMAN::PlatonicSym::init().

Referenced by NEW().

```{init();}
```
 virtual EMAN::OctahedralSym::~OctahedralSym ( ) ` [inline, virtual]`

Definition at line 785 of file symmetry.h.

```{}
```
 EMAN::OctahedralSym::OctahedralSym ( const OctahedralSym & ) ` [private]`

Disallow copy construction.

## Member Function Documentation

 virtual string EMAN::OctahedralSym::get_desc ( ) const` [inline, virtual]`

Get a description.

Returns:
a clear desciption of this class

Implements EMAN::FactoryBase.

Definition at line 803 of file symmetry.h.

```{ return "Octahedral symmetry support"; }
```
 virtual int EMAN::OctahedralSym::get_max_csym ( ) const` [inline, virtual]`

Gets the maximum symmetry of this object.

This is used by OrientationGenerators, and is probably not something a general user would utilize.

Returns:
for octahedral symmetry, this number is 4

Implements EMAN::Symmetry3D.

Definition at line 809 of file symmetry.h.

```{ return 4; }
```
 virtual string EMAN::OctahedralSym::get_name ( ) const` [inline, virtual]`

Return OctahedralSym::NAME.

Returns:
the unique name of this class

Implements EMAN::FactoryBase.

Definition at line 798 of file symmetry.h.

References NAME.

```{ return NAME; };
```
 virtual int EMAN::OctahedralSym::get_nsym ( ) const` [inline, virtual]`

Gets the total number of unique roational symmetry operations associated with this symmetry For octahedral symmetry this is 24.

Returns:
24

Implements EMAN::Symmetry3D.

Definition at line 834 of file symmetry.h.

```{ return 24; };
```
 Transform OctahedralSym::get_sym ( const int n ) const` [virtual]`

This function provides access to the unique rotational symmetries of an octahedron.

We have placed the octahedral symmetry group with a face along the z-axis. In all, there are 24 (accessed by get_nysm) unique rotational symmetric operations for the octahedron. In the terminology defined Append A (titled Symmetry Elements) in the manuscript Baldwin and Penczek, 2007. The Transform Class in SPARX and EMAN2. JSB 157(250-261), Doctor Phil has this to say: "B^4=A^3=1; BABA=1; implies AA=BAB, ABA=B^3 , AB^2A = BBBABBB and 20 words with at most a single A 1 B BB BBB A BA AB BBA BAB ABB BBBA BBAB BABB ABBB BBBAB BBABB BABBB BBBABB BBABBB BBBABBB also ABBBA is distinct yields 4 more words ABBBA BABBBA BBABBBA BBBABBBA for a total of 24 words Note A BBB A BBB A reduces to BBABB and B A BBB A is the same as A BBB A BBB etc."

Parameters:
 n the symmetric operation number.
Returns:
a transform containing the correct rotational symmetry operation.

Implements EMAN::Symmetry3D.

Definition at line 1915 of file symmetry.cpp.

```{
// These rotations courtesy of Phil Baldwin
// We have placed the OCT symmetry group with a face along the z-axis
static double lvl0=0.;
static double lvl1=90.;
static double lvl2=180.;

static double OCT[72] = {// This is with a face of a cube along z
0,lvl0,0,   0,lvl0,90,    0,lvl0,180,    0,lvl0,270,
0,lvl1,0,   0,lvl1,90,    0,lvl1,180,    0,lvl1,270,
90,lvl1,0,  90,lvl1,90,   90,lvl1,180,   90,lvl1,270,
180,lvl1,0, 180,lvl1,90,  180,lvl1,180,  180,lvl1,270,
270,lvl1,0, 270,lvl1,90,  270,lvl1,180,  270,lvl1,270,
0,lvl2,0,   0,lvl2,90,    0,lvl2,180,    0,lvl2,270
};

int idx = n % 24;
//      Transform3D ret;
//      ret.set_rotation((float)OCT[idx * 3 ],(float)OCT[idx * 3 + 1], (float)OCT[idx * 3 + 2] );
Dict d("type","eman");
d["az"] = (float)OCT[idx * 3 ];
d["alt"] = (float)OCT[idx * 3 + 1];
d["phi"] = (float)OCT[idx * 3 + 2];
return Transform(d);

}
```
 static Symmetry3D* EMAN::OctahedralSym::NEW ( ) ` [inline, static]`

Factory support function NEW.

Returns:
a newly instantiated class of this type

Definition at line 790 of file symmetry.h.

References OctahedralSym().

```                {
return new OctahedralSym();
}
```
 OctahedralSym& EMAN::OctahedralSym::operator= ( const OctahedralSym & ) ` [private]`

Disallow assignment.

## Member Data Documentation

 const string OctahedralSym::NAME = "oct"` [static]`

The name of this class - used to access it from factories etc. Should be "oct".

Definition at line 834 of file symmetry.h.

Referenced by EMAN::PlatonicSym::get_delimiters(), and get_name().

The documentation for this class was generated from the following files: