# gcu::CrystalAtom Class Reference

`#include <gcu/crystalatom.h>`

Inheritance diagram for gcu::CrystalAtom:

List of all members.

## Public Member Functions
| CrystalAtom (CrystalAtom &caAtom)
void | Draw ()
void | SetColor (float red, float green, float blue, float alpha)
void | SetDefaultColor ()
bool | HasCustomColor ()
void | GetColor (double *red, double *green, double *blue, double *alpha)
void | SetSize (double r)
double | GetSize ()
bool | operator== (CrystalAtom &caAtom)
void | Cleave ()
double | ScalProd (int h, int k, int l)
void | NetToCartesian (double a, double b, double c, double alpha, double beta, double gamma)
double | Distance (double x, double y, double z, bool bFixed)
double | r ()
const GcuAtomicRadius & | GetRadius ()
void | SetRadius (const GcuAtomicRadius &r)
bool | IsCleaved ()
virtual bool | SaveNode (xmlDocPtr xml, xmlNodePtr node)
virtual bool | LoadNode (xmlNodePtr node)
## Protected Attributes
float | m_fBlue
float | m_fRed
float | m_fGreen
float | m_fAlpha
bool | m_bCustomColor
GcuAtomicRadius | m_Radius
int | m_nCleave

## Detailed Description

Used to represent atoms in a crystal.

Definition at line 43 of file crystalatom.h.

## Constructor & Destructor Documentation

gcu::CrystalAtom::CrystalAtom | ( | CrystalAtom & | caAtom | ) |

Parameters:

  | caAtom,: | the CrystalAtom to duplicate.

Creates a new CrystalAtom identical to caAtom.

## Member Function Documentation

void gcu::CrystalAtom::Draw | ( |  | ) |

Draws the atom inside the active OpenGL window.

void gcu::CrystalAtom::SetColor | ( | float | red,
|  | float | green,
|  | float | blue,
|  | float | alpha |
| ) |  |  |

Parameters:

  | red,: | the red component of the color.
  | green,: | the green component of the color.
  | blue,: | the blue component of the color.
  | alpha,: | the alpha component of the color.

Sets a custom color to the atom.

void gcu::CrystalAtom::SetDefaultColor | ( |  | ) |

Gives the atom the default color.

bool gcu::CrystalAtom::HasCustomColor | ( |  | ) | `[inline]`

Returns:
  : true if the color is user defined and false if it is the default color.

Definition at line 98 of file crystalatom.h.

References m_bCustomColor.

void gcu::CrystalAtom::GetColor | ( | double * | red,
|  | double * | green,
|  | double * | blue,
|  | double * | alpha |
| ) |  |  |

Parameters:

  | red,: | a pointer to the red component.
  | green,: | a pointer to the green component.
  | blue,: | a pointer to the blue component.
  | alpha,: | a pointer to the alpha component.

Used to retreive the color used in the representation of the atom. Mainly useful for user defined colors.

void gcu::CrystalAtom::SetSize | ( | double | r | ) |

Parameters:

  | r,: | the new value of the atomic radius.

Sets the value of the radius (in pm).

double gcu::CrystalAtom::GetSize | ( |  | ) |

Returns:
  the value of the radius (in pm).

bool gcu::CrystalAtom::operator== | ( | CrystalAtom & | caAtom | ) |

Parameters:

  | caAtom,: | a CrystalAtom instance.

Returns:
  true if the atoms are at the same position and false if their positions are different.

void gcu::CrystalAtom::Cleave | ( |  | ) | `[inline]`

Method used to cleave an atom. The inverse operation does not exist since the whole crystal must be recalculated after a change in the definition.

Definition at line 128 of file crystalatom.h.

References m_nCleave.

double gcu::CrystalAtom::ScalProd | ( | int | h,
|  | int | k,
|  | int | l |
| ) |  |  |

Parameters:

  | h,: | the h Miller index of a plane.
  | k,: | the k Miller index of a plane.
  | l,: | the l Miller index of a plane.

Returns:
  the product hx+ky+lz where x, y and z are the coordinates of the atom. This makes sense only if coordinates are related to the net and are not the cartesian coordinates. This method should not be called after NetToCartesian().

void gcu::CrystalAtom::NetToCartesian | ( | double | a,
|  | double | b,
|  | double | c,
|  | double | alpha,
|  | double | beta,
|  | double | gamma |
| ) |  |  |

Parameters:

  | a,: | the a parameter of the unit cell.
  | b,: | the b parameter of the unit cell.
  | c,: | the c parameter of the unit cell.
  | alpha,: | the alpha angle of the unit cell.
  | beta,: | the beta angle of the unit cell.
  | gamma,: | the gamma angle of the unit cell.

Converts the coordinates of the atom from net related ones to cartesian. Initially, atoms are defined by their position relative to the unit cell and the coordinates must be transformed to the cartesian ones before displaying the atom.

double gcu::CrystalAtom::Distance | ( | double | x,
|  | double | y,
|  | double | z,
|  | bool | bFixed |
| ) |  |  |

Parameters:

  | x,: | the x coordinate of the center.
  | y,: | the y coordinate of the center.
  | z,: | the z coordinate of the center.
  | bFixed,: | tells if cleaved atoms are taken into account.

This helper method is called when searching for the size of the crystal. When some cleavages are defined, the procedure cn take into account atoms cleaved to get the same position in the view for the cleaved crystal than for the whole crystal. If bFixed is true, all atoms are taken into account.

Returns:
  the distance of the atom to the center of the view or 0 if bFixed is false and the atom cleaved.

double gcu::CrystalAtom::r | ( |  | ) | `[inline]`

Returns:
  the value of the radius (in pm).

Definition at line 167 of file crystalatom.h.

References m_Radius, GcuDimensionalValue::value, and GcuAtomicRadius::value.

const GcuAtomicRadius& gcu::CrystalAtom::GetRadius | ( |  | ) | `[inline]`

Returns:
  the GcuAtomicRadius containing the caracteristics of the atom radius.

Definition at line 171 of file crystalatom.h.

References m_Radius.

void gcu::CrystalAtom::SetRadius | ( | const GcuAtomicRadius & | r | ) |

Parameters:

  | r,: | a GcuAtomicRadius with the caracteristics of the atom radius.

bool gcu::CrystalAtom::IsCleaved | ( |  | ) | `[inline]`

Returns:
  true if the atom is cleaved by at least one cleavage or false if the atom is not cleaved at all.

Definition at line 179 of file crystalatom.h.

References m_nCleave.

virtual bool gcu::CrystalAtom::SaveNode | ( | xmlDocPtr | xml,
|  | xmlNodePtr | node |
| ) |  |  | `[virtual]`

Parameters:

  | xml,: | the xmlDoc used to save the document.
  | node,: | a pointer to the xmlNode to which this Atom is serialized.

Saves the color and the radius of the atom.

Reimplemented from gcu::Atom.

virtual bool gcu::CrystalAtom::LoadNode | ( | xmlNodePtr | node | ) | `[virtual]`

Parameters:

  | node,: | a pointer to the xmlNode containing the serialized Atom.

Loads the color and the radius of the atom.

Reimplemented from gcu::Atom.

## Member Data Documentation

float gcu::CrystalAtom::m_fBlue`[protected]`

The blue component of the color of the sphere representing the atom.

Definition at line 198 of file crystalatom.h.

float gcu::CrystalAtom::m_fRed`[protected]`

The red component of the color of the sphere representing the atom.

Definition at line 202 of file crystalatom.h.

float gcu::CrystalAtom::m_fGreen`[protected]`

The green component of the color of the sphere representing the atom.

Definition at line 206 of file crystalatom.h.

float gcu::CrystalAtom::m_fAlpha`[protected]`

The alpha component of the color of the sphere representing the atom.

Definition at line 210 of file crystalatom.h.

bool gcu::CrystalAtom::m_bCustomColor`[protected]`

False if the color used is the default color and true if it is a user defined color.

Definition at line 214 of file crystalatom.h.

Referenced by HasCustomColor().

GcuAtomicRadius gcu::CrystalAtom::m_Radius`[protected]`

The GcuAtomicRadius containing the radius caracteristics of the atom.

Definition at line 218 of file crystalatom.h.

Referenced by GetRadius(), and r().

int gcu::CrystalAtom::m_nCleave`[protected]`

When cleavages (see CrystalCleavage class documentation) are defined, the atom might be cleaved. m_nCleave is the number of CrystalCleavage instances which remove the atom. If this member is not 0, the atom will not be displayed.

Definition at line 224 of file crystalatom.h.

Referenced by Cleave(), and IsCleaved().

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

- crystalatom.h