symbol += boost::lexical_cast<std::string>(operation.order());

  int translation =
      static_cast<int>(static_cast<double>(operation.order()) *
                       Kernel::V3D(determineTranslation(operation)).norm());

  if (translation != 0) {
    symbol += boost::lexical_cast<std::string>(translation);
  }

  return symbol;
}

std::map<V3R, std::string> SymmetryElementMirrorGenerator::g_glideSymbolMap =
    boost::assign::map_list_of(V3R(0, 0, 0), "m")(V3R(1, 0, 0) / 2,
                                                  "a")(V3R(0, 1, 0) / 2, "b")(
        V3R(0, 0, 1) / 2, "c")(V3R(1, 1, 0) / 2, "n")(V3R(1, 0, 1) / 2, "n")(
        V3R(0, 1, 1) / 2, "n")(V3R(1, 1, 1) / 2, "n")(V3R(1, 1, 0) / 4, "d")(
        V3R(1, 0, 1) / 4, "d")(V3R(0, 1, 1) / 4, "d")(V3R(1, 1, 1) / 4, "d");

/// Generates an instance of SymmetryElementMirror with the corresponding
/// symbol, axis and translation vector.
SymmetryElement_sptr SymmetryElementMirrorGenerator::generateElement(
    const SymmetryOperation &operation) const {
  const Kernel::IntMatrix &matrix = operation.matrix();

  V3R axis = determineAxis(matrix);
  V3R translation = determineTranslation(operation);
  std::string symbol = determineSymbol(operation);
Beispiel #2
0
/// Negates all components of the vector
V3R V3R::operator-() const { return V3R(-m_x, -m_y, -m_z); }
  symbol += std::to_string(operation.order());

  int translation =
      static_cast<int>(static_cast<double>(operation.order()) *
                       Kernel::V3D(determineTranslation(operation)).norm());

  if (translation != 0) {
    symbol += std::to_string(translation);
  }

  return symbol;
}

std::map<V3R, std::string> SymmetryElementMirrorGenerator::g_glideSymbolMap = {
    {V3R(0, 0, 0), "m"},
    {V3R(1, 0, 0) / 2, "a"},
    {V3R(0, 1, 0) / 2, "b"},
    {V3R(0, 0, 1) / 2, "c"},
    {V3R(1, 1, 0) / 2, "n"},
    {V3R(1, 0, 1) / 2, "n"},
    {V3R(0, 1, 1) / 2, "n"},
    {V3R(1, 1, 1) / 2, "n"},
    {V3R(1, 1, 0) / 4, "d"},
    {V3R(1, 0, 1) / 4, "d"},
    {V3R(0, 1, 1) / 4, "d"},
    {V3R(1, 1, 1) / 4, "d"}};

/// Generates an instance of SymmetryElementMirror with the corresponding
/// symbol, axis and translation vector.
SymmetryElement_sptr SymmetryElementMirrorGenerator::generateElement(
Beispiel #4
0
/// Returns a V3R with absolute components.
V3R V3R::getPositiveVector() const {
  return V3R(boost::abs(m_x), boost::abs(m_y), boost::abs(m_z));
}