1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
class structure_cristal
{
...
public :
/*si tirage "spacial*/
virtual const atome& getNearestAtome(double x,double y,double z) = 0;
/*si tirage aléatoire sur le nombre d'atome du cristal*/
virtual long cardinality() = 0;
virtual const atome& getAtome(long atomeNumber) = 0;
...
}
class structure_cubique_simple : public structure_cristal
{
...
long m_sizeX;
long m_sizeY;
long m_sizeZ;
std::vector<Atome> grid;
...
public :
structure_cubique_simple(long sizeX,long sizeY,long sizeZ):m_sizeX(sizeX),m_sizeY(sizeY),m_sizeZ(sizeZ),grid(sizeX*sizeY*sizeZ){};
const atome& getNearestAtome(double x,double y,double z) override {return grid[std::round(x) + m_sizeX*std::round(y) + m_sizeX*m_sizeY*std::round(z)];}
const atome& getAtome(long atomeNumber) override { return grid[atomeNumber];};
long cardinality() override { return grid.size();}
}
class structure_cubique_centre : public structure_cristal
{
...
public :
...
}
class structure_cubique_faces_centreese : public structure_cristal
{
...
public :
...
} |
Partager