Ignore:
Timestamp:
Aug 3, 2009, 2:48:42 PM (16 years ago)
Author:
Frederik Heber <heber@…>
Children:
d8fce3, e78824
Parents:
4e4940
Message:

Huge refactoring of Tesselation routines, but not finished yet.

  • new file tesselation.cpp with all of classes tesselation, Boundary..Set and CandidatesForTesselationOB
  • new file tesselationhelper.cpp with all auxiliary functions.
  • boundary.cpp just contains super functions, combininb molecule and Tesselation pointers
  • new pointer molecule::TesselStruct
  • PointMap, LineMap, TriangleMap DistanceMap have been moved from molecules.hpp to tesselation.hpp
  • new abstract class PointCloud and TesselPoint
  • atom inherits TesselPoint
  • molecule inherits PointCloud (i.e. a set of TesselPoints) and implements all virtual functions for the chained list
  • TriangleFilesWritten is thrown out, intermediate steps are written in find_nonconvex_border and not in find_next_triangle()
  • LinkedCell class uses TesselPoint as its nodes, i.e. as long as any class inherits TesselPoint, it may make use of LinkedCell as well and a PointCloud is used to initialize
  • class atom and bond definitions have been moved to own header files

NOTE: This is not bugfree yet. Tesselation of heptan produces way too many triangles, but runs without faults or leaks.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/linkedcell.hpp

    r4e4940 r834ff3  
     1/*
     2 * linkedcell.hpp
     3 *
     4 *  If the linked cell should be usable, the class has to inherit LCNodeSet and the nodes (containing the Vectors) have to inherit LCNode. This works well
     5 *  for molecule and atom classes.
     6 *
     7 *  Created on: Aug 3, 2009
     8 *      Author: heber
     9 */
     10
    111#ifndef LINKEDCELL_HPP_
    212#define LINKEDCELL_HPP_
     13
     14using namespace std;
    315
    416// include config.h
     
    719#endif
    820
    9 #include "molecules.hpp"
     21#include <list>
    1022
    11 #define LinkedAtoms list <atom *>
     23#include "defs.hpp"
     24#include "helpers.hpp"
     25#include "vector.hpp"
    1226
    13 class LinkedCell{
     27class TesselPoint;
     28class PointCloud;
     29
     30#define LinkedNodes list<TesselPoint *>
     31
     32/** Linked Cell class for containing Vectors in real space efficiently.
     33 */
     34class LinkedCell {
    1435  public:
    1536    Vector max;       // upper boundary
    1637    Vector min;       // lower boundary
    17     LinkedAtoms *LC;  // linked cell list
     38    LinkedNodes *LC;  // linked cell list
    1839    double RADIUS;    // cell edge length
    1940    int N[NDIM];      // number of cells per axis
     
    2243
    2344    LinkedCell();
    24     LinkedCell(molecule *mol, double RADIUS);
     45    LinkedCell(PointCloud *set, double RADIUS);
    2546    ~LinkedCell();
    26     LinkedAtoms* GetCurrentCell();
    27     bool SetIndexToAtom(atom *Walker);
     47    LinkedNodes* GetCurrentCell();
     48    bool SetIndexToNode(TesselPoint *Walker);
    2849    bool SetIndexToVector(Vector *x);
    2950    bool CheckBounds();
    3051
    3152    // not implemented yet
    32     bool AddAtom(atom *Walker);
    33     bool DeleteAtom(atom *Walker);
    34     bool MoveAtom(atom *Walker);
     53    bool AddNode(Vector *Walker);
     54    bool DeleteNode(Vector *Walker);
     55    bool MoveNode(Vector *Walker);
    3556};
    3657
Note: See TracChangeset for help on using the changeset viewer.