13 #ifndef INCLUDE_MOLASSEMBLER_SHAPES_DATA_H
14 #define INCLUDE_MOLASSEMBLER_SHAPES_DATA_H
16 #include "boost/optional/optional_fwd.hpp"
27 namespace Molassembler {
31 struct vertex_index_tag;
32 using Vertex = Temple::StrongIndex<vertex_index_tag, unsigned>;
70 template<
size_t ... Inds>
71 constexpr
auto makeAllShapes(std::index_sequence<Inds...> ) {
72 return std::array<Shape, nShapes> {{
static_cast<Shape>(Inds)... }};
77 constexpr std::array<Shape, nShapes>
allShapes = Detail::makeAllShapes(
78 std::make_index_sequence<nShapes>()
bool threeDimensional(const Shape shape)
Returns whether a shape is three dimensional.
Shape nameFromString(const std::string &shapeNameString)
Fetch the shape name from its string.
std::array< boost::optional< Vertex >, 4 > Tetrahedron
This is a four-vertex tetrahedron definition.
Definition: Data.h:58
PointGroup pointGroup(const Shape shape)
Get a shape's point group.
Helper class to create strongly typed indices.
ShapeResult shape(const PositionCollection &normalizedPositions, Shape shape)
Forwarding function to calculate the continuous shape measure.
Eigen::Matrix< double, 3, Eigen::Dynamic > Coordinates
Representation of idealized shape coordinates (does not include centroid)
Definition: Data.h:67
std::vector< Tetrahedron > TetrahedronList
Definition: Data.h:64
PointGroup
Point groups.
Definition: PointGroups.h:20
const TetrahedronList & tetrahedra(const Shape shape)
Fetches the list of tetrahedra defined in a shape.
std::string spaceFreeName(Shape shape)
Fetch a space-free string of a shape for file naming.
const RotationsList & rotations(const Shape shape)
Fetches a shape's list of rotations.
std::vector< Vertex > Permutation
Representation of a shape vertex permutation.
Definition: Data.h:35
Defines a set of useful preprocessor macros.
std::function< > AngleFunction
Function returning angle between vertices.
Definition: Data.h:51
const Permutation & mirror(const Shape shape)
Fetches the mirror index mapping for a particular shape.
unsigned size(const Shape shape)
Fetch the number of vertices of a shape.
std::vector< Permutation > RotationsList
The type to store shape rotations.
Definition: Data.h:39
AngleFunction angleFunction(const Shape shape)
Gets a shape's angle function.
Defines symmetry names and total count.
unsigned nameIndex(Shape shape)
Returns the index of a shape within allShapes.
Shape
Enumeration of all contained symmetry names.
Definition: Shapes.h:28
Coordinates coordinates(const Shape shape)
Fetch a shape's idealized coordiantes.
const std::string & name(const Shape shape)
Fetch the string name of a shape.
constexpr std::array< Shape, nShapes > allShapes
A list of all the enum class values.
Definition: Data.h:77