muMECH  1.0
Public Member Functions | Static Public Member Functions | Static Private Member Functions | List of all members
mumech::MesoFace Class Reference

Class of the interface functions for libraries meso2d and meso3d. More...

#include <mesoface.h>

Public Member Functions

 MesoFace ()
 Constructor. More...
 
virtual ~MesoFace ()
 Destructor. More...
 

Static Public Member Functions

static int ellipsoids_overlap (const Inclusion *inc1, const Inclusion *inc2)
 
static bool ellipses_overlap (const Inclusion *inc1, const Inclusion *inc2)
 
static void rotate_point_by_euler_angles_in_313_notation (const double *eAngles, meso3d::point_rec &point)
 

Static Private Member Functions

static void fill_ellipsoid_rec (const Inclusion *inc, meso3d::ellipsoid_rec &L)
 
static void fill_ellipse_rec (const Inclusion *inc, meso2d::ellipse_rec &L)
 
static void rotate_point_about_X_axis (const double alpha, meso3d::point_rec &point, rotation r)
 
static void rotate_point_about_Y_axis (const double alpha, meso3d::point_rec &point, rotation r)
 
static void rotate_point_about_Z_axis (const double alpha, meso3d::point_rec &point, rotation r)
 

Detailed Description

Class of the interface functions for libraries meso2d and meso3d.

Knihovny MESO pouzivame na detekci pruniku elipsoidu a elips. Funguje to. Je to postavene na slozite logice, ktera postupne zkouma standardni pripady, jako ze opsane kruznice se neprotinaji, tj. inkluze jsou hodne daleko od sebe. Pak se to zkouma pres jednotlive oktanty elipsoidu. V hranicnich pripadech, kdyz jsou k dobe inkluze ortogonalne, tj. maji k sobe blizko v oblasti vrcholu inkluze, tj. v miste kraju oktantu vykazuje algoritmus slabiny.

  1. Kdyz je cosinus blizko nule, tj. blizko nebo uplne 90 stupnu, tak se to vyrazne sere, ve 2d i 3d. Toto se vyresilo tim, ze pokud dava cos i sin vysledek blizky -1.0, 0.0 nebo 1.0 tak je na tuto hodnotu zaokrouhlen. Pak problemy prestanou.
  2. Ve 3d - pokud lokalni osa x jednoho elipsoidu miri do stredu druheho, a elipsoidy se dotykaji v bode tak to obcas nedokonverguje. Toto se bude asi dit tak vzacne, ze tam proste hodim error natvrdo a uvidime jestli se to v realnych mikrostrukturach vubec projevi.
  3. Ve 2d kdyz je velky EPSILON_T, tak to najde nepresny pnt1 a nenajde to prekryti elips Epsilon jsem zmensil na 1.e-12, snad to bude stacit.

V MESO je transformacni matice ulozena v poradi a1, a3, a2, v muMechu je to a1, a2, a3. Kdyby to bylo stejne, tak by bylo jednoduche nacpat matici incluze->T primo do popisu elipsoidu jdouciho do meso3d. Takhle je by se to muselo udelat opatrne, v mistech komentaru "TADY".

Na webu je knihovnicka CDEllipsoid, ktera resi pouze prunik elipsoidu. Mozna by to stalo za to ji naimplementovat.

Definition at line 68 of file mesoface.h.

Constructor & Destructor Documentation

mumech::MesoFace::MesoFace ( )
inline

Constructor.

Definition at line 72 of file mesoface.h.

virtual mumech::MesoFace::~MesoFace ( )
inlinevirtual

Member Function Documentation

bool mumech::MesoFace::ellipses_overlap ( const Inclusion inc1,
const Inclusion inc2 
)
static
int mumech::MesoFace::ellipsoids_overlap ( const Inclusion inc1,
const Inclusion inc2 
)
static
void mumech::MesoFace::fill_ellipse_rec ( const Inclusion inc,
meso2d::ellipse_rec L 
)
staticprivate
void mumech::MesoFace::fill_ellipsoid_rec ( const Inclusion inc,
meso3d::ellipsoid_rec L 
)
staticprivate
void mumech::MesoFace::rotate_point_about_X_axis ( const double  alpha,
meso3d::point_rec point,
rotation  r 
)
staticprivate
void mumech::MesoFace::rotate_point_about_Y_axis ( const double  alpha,
meso3d::point_rec point,
rotation  r 
)
staticprivate
void mumech::MesoFace::rotate_point_about_Z_axis ( const double  alpha,
meso3d::point_rec point,
rotation  r 
)
staticprivate
void mumech::MesoFace::rotate_point_by_euler_angles_in_313_notation ( const double *  eAngles,
meso3d::point_rec point 
)
static

The documentation for this class was generated from the following files: