/* * Project: MoleCuilder * Description: creates and alters molecular systems * Copyright (C) 2010 University of Bonn. All rights reserved. * Please see the LICENSE file or "Copyright notice" in builder.cpp for details. */ /** * \file shaperegistry.dox * * Created on: Jan 28, 2013 * Author: ankele */ /** \page shaperegistry ShapeRegistry * * \section shape-registry-basics Basics * * Instances of \ref shapes with unique names can be stored inside the * ShapeRegistry. They can be selected via actions. * * There are special action to manipulate the currently selected shapes: * - CombineShapesAction * - RemoveShapeAction * - RotateShapeAction * - StretchShapeAction * - TranslateShapeAction * * Some actions on the world (like selecting all atoms within a shape or * filling a shape with molecules) use the currently selected shapes in * the ShapeRegistry. * * GLWorldView is an observer to the ShapeRegistry. It always renders the * currently selected shapes into the scene. * * To do so, the shapes need to be tesselated (i.e. we need a triangle mesh). * Currently we find a number of points on the shape and then use the * Tesselation class. This happens when the shape is added to the registry. * GLWorldView caches the triangulation as long as the shape is inside the * registry. * * It is planned to create a more specialized ShapeTesselation class. Basic * shapes (sphere, cube, etc.) would have predefined meshes. For combined * shaped these basic meshes could then be intersected. That would be faster * and allow correct rendering of topologically nontrivial shapes. * * \date 2013-02-22 * */