ESyS-Particle  4.0.1
FaultedBlock2d.h
00001 
00002 //                                                         //
00003 // Copyright (c) 2003-2011 by The University of Queensland //
00004 // Earth Systems Science Computational Centre (ESSCC)      //
00005 // http://www.uq.edu.au/esscc                              //
00006 //                                                         //
00007 // Primary Business: Brisbane, Queensland, Australia       //
00008 // Licensed under the Open Software License version 3.0    //
00009 // http://www.opensource.org/licenses/osl-3.0.php          //
00010 //                                                         //
00012 
00013 #ifndef __FAULTEDBLOCK2D_H
00014 #define __FAULTEDBLOCK2D_H
00015 
00016 //--- STL includes ---
00017 #include <vector>
00018 #include <utility>
00019 
00020 using std::vector;
00021 using std::pair;
00022 
00023 //-- project includes --
00024 #include "Geometry/RandomBlock.h"
00025 #include "Geometry/LineSegment.h"
00026 
00035 class FaultedBlock2D : public CRandomBlock2D
00036 {
00037  protected:
00038   vector<pair<double,LineSegment> > m_fault;
00039   vector<LineSegment> m_f2;
00040   virtual Line *getClosestPlane(const SimpleParticle&);
00041   double m_pad_size;
00042 
00043   virtual Vec3 getAPoint();
00044 
00045  public:
00046   FaultedBlock2D(double,double,double,double,double,double,double,bool circ_x=false);
00047   virtual ~FaultedBlock2D();
00048 
00049   void addSegment(const Vec3&,const Vec3&,double);
00050   virtual bool checkAFit(const SimpleParticle&) ;
00051   virtual void generate(int,unsigned int);
00052   virtual void tagSplit(int,int,double);
00053 };
00054 
00055 #endif // __FAULTEDBLOCK2D_H