3 #ifndef __u3d_model_hpp
4 #define __u3d_model_hpp
6 #include "u3d_body.hpp"
7 #include "u3d_bound.hpp"
8 #include "u3d_grid.hpp"
9 #include <mix/u3d_progress.hpp>
18 friend void U3dModelSaveUnivers(
const U3dModel*,
const char*,
const char*)
throw();
19 friend U3dModel* U3dModelLoadUnivers(
const char*,
const char* )
throw();
25 U3dBoundInfoAr bounds, U3dBodyInfoAr bodies,
U3dProgress* prg=0x0);
41 bool getVelGrad(
U3dPoint point,
int bodyId,
double &v,
double &vf,
double &vaz, U3D_WAVE_TYPE wt) ;
99 std::vector<int> getCommonBoundsIds(
int bodyId_0,
int bodyId_1);
131 void getNeighbours(
U3dBox box, U3dGridCellsArray &cell_array, U3dGridCellsArray &neighbour_cells);
156 double &iA0,
double &iAz0,
double &iA1,
double &iAz1);
162 int &p0_ind,
int &p1_ind);
166 double iA0,
double iAz0,
double iA1,
double iAz1,
167 double &iA,
double &iAz);
184 U3dBodiesAr m_bodies;
185 U3dBoundsAr m_bounds;
void defineNearestIntPoints(U3dPoint p, int bodyId, U3dPointsAr intersection_ps, std::vector< int > intersected_bounds_ind, int &p0_ind, int &p1_ind)
U3dModAreaPos getModelAreaPos() const
void addDescription(const char *description)
Definition: u3d_body.hpp:13
void intersectCellTriangles(U3dPoint *p0, U3dPoint *p1, U3dGridCell *goal_cell, std::vector< int > &int_trIds, U3dPointsAr &int_points)
int getBodyIdFromCell(U3dPoint p, U3dGridCell *cell)
void getCommonCells(U3dGridCellsArray *common_cells, U3dBox *surfBox, U3dGridCell *root)
double getVel(U3dPoint p, U3D_WAVE_TYPE wt, int bId=-1)
int getBodiesNum() const
Definition: u3d_model.hpp:63
void getNeighbours(U3dBox box, U3dGridCellsArray &cell_array, U3dGridCellsArray &neighbour_cells)
U3dBox getModelBox() const
Definition: u3d_model.hpp:66
friend bool U3dModelExport(char *, U3dModel *, char *, U3dProgress *)
Definition: u3d_model_defines.hpp:20
int getBoundsNum() const
Definition: u3d_model.hpp:83
Definition: u3d_box.hpp:24
Definition: u3d_bound.hpp:21
void fillGridInfoSimple()
U3dModel(U3dModAreaPos modAreaPos, U3dBox modelBox, U3dBoundInfoAr bounds, U3dBodyInfoAr bodies, U3dProgress *prg=0x0)
bool getFBNormal(U3dPoint p, double &iA, double &iAz)
Definition: geometry.H:16
U3dGridCell * getBodyIdFromGrid(U3dPoint p, int &body_id)
Definition: u3d_point.hpp:16
U3dBound * getBound(int boundId)
U3dBody * getBody(int bodyId)
bool getVelGrad(U3dPoint point, double &v, double &vf, double &vaz, U3D_WAVE_TYPE wt)
Definition: u3d_model.hpp:15
void fillGridInfoComplex()
void recursiveDivideCell(int boundId, std::set< int > &trianglesId_ar, U3dGridCell *cell)
Definition: u3d_progress.hpp:10
bool getReady()
Definition: u3d_model.hpp:94
U3dGrid * getGrid()
Definition: u3d_model.hpp:69
Definition: u3d_grid.hpp:25
Definition: u3d_grid_cell.hpp:32
void fillBoundCellsInfo()
int getBodyIdDummy(U3dPoint p)
void gridCrusher(int boundId)
void recursiveFillCellInfo(U3dGridCell *cell)
const U3dGrid * getGrid() const
Definition: u3d_model.hpp:72
bool getNormalLimPoints(U3dPoint p, U3dPoint *&p0, U3dPoint *&p1, double &iA0, double &iAz0, double &iA1, double &iAz1)
void interpolateNormals(U3dPoint p, U3dPoint *p0, U3dPoint *p1, double iA0, double iAz0, double iA1, double iAz1, double &iA, double &iAz)
void constructGrid(bool plane_surf_model)