UNIVERS
15.3
UNIVERS base processing software API
|
#include <u3d_model.hpp>
Public Member Functions | |
U3dModel (U3dModAreaPos modAreaPos, U3dBox modelBox, U3dBoundInfoAr bounds, U3dBodyInfoAr bodies, U3dProgress *prg=0x0) | |
U3dModel (U3dModAreaPos modAreaPos, U3dBox modelBox, U3d1dModBodyInfoAr mod1dBodies, U3dProgress *prg=0x0) | |
U3dModel (U3dModel *, U3dProgress *prg=0x0) | |
double | getVel (U3dPoint p, U3D_WAVE_TYPE wt, int bId=-1) |
bool | getVelGrad (U3dPoint point, double &v, double &vf, double &vaz, U3D_WAVE_TYPE wt) |
bool | getVelGrad (U3dPoint point, int bodyId, double &v, double &vf, double &vaz, U3D_WAVE_TYPE wt) |
int | getBodyId (U3dPoint) |
U3dBody * | getBody (int bodyId) |
const U3dBody * | getBody (int bodyId) const |
int | getBodiesNum () const |
U3dBox | getModelBox () const |
U3dGrid * | getGrid () |
const U3dGrid * | getGrid () const |
U3dBound * | getBound (int boundId) |
const U3dBound * | getBound (int boundId) const |
int | getBoundsNum () const |
U3dModAreaPos | getModelAreaPos () const |
void | setModelAreaPos (U3dModAreaPos MAP) |
bool | getFBNormal (U3dPoint p, double &iA, double &iAz) |
bool | getReady () |
void | addDescription (const char *description) |
std::vector< int > | getCommonBoundsIds (int bodyId_0, int bodyId_1) |
void | constructGrid (bool plane_surf_model) |
void | gridCrusher (int boundId) |
void | getCommonCells (U3dGridCellsArray *common_cells, U3dBox *surfBox, U3dGridCell *root) |
void | recursiveDivideCell (int boundId, std::set< int > &trianglesId_ar, U3dGridCell *cell) |
void | fillGridInfoSimple () |
void | recursiveFillCellInfo (U3dGridCell *cell) |
void | fillGridInfoComplex () |
void | getNeighbours (U3dBox box, U3dGridCellsArray &cell_array, U3dGridCellsArray &neighbour_cells) |
void | fillBoundCellsInfo () |
void | fillBoundCellsInfo (std::vector< int > bodies, int boundId, U3dGridCell *cell, U3D_COLOR b_color) |
U3dGridCell * | getBodyIdFromGrid (U3dPoint p, int &body_id) |
int | getBodyIdFromCell (U3dPoint p, U3dGridCell *cell) |
int | getBodyIdDummy (U3dPoint p) |
bool | getNormalLimPoints (U3dPoint p, U3dPoint *&p0, U3dPoint *&p1, double &iA0, double &iAz0, double &iA1, double &iAz1) |
void | defineNearestIntPoints (U3dPoint p, int bodyId, U3dPointsAr intersection_ps, std::vector< int > intersected_bounds_ind, int &p0_ind, int &p1_ind) |
void | interpolateNormals (U3dPoint p, U3dPoint *p0, U3dPoint *p1, double iA0, double iAz0, double iA1, double iAz1, double &iA, double &iAz) |
void | intersectCellTriangles (U3dPoint *p0, U3dPoint *p1, U3dGridCell *goal_cell, std::vector< int > &int_trIds, U3dPointsAr &int_points) |
void | clearOnStop () |
U3dModel (U3dModAreaPos modAreaPos, U3dBox modelBox, U3dBoundInfoAr bounds, U3dBodyInfoAr bodies, U3dProgress *prg=0x0) | |
U3dModel (U3dModAreaPos modAreaPos, U3dBox modelBox, U3d1dModBodyInfoAr mod1dBodies, U3dProgress *prg=0x0) | |
U3dModel (U3dModel *, U3dProgress *prg=0x0) | |
double | getVel (U3dPoint p, U3D_WAVE_TYPE wt, int bId=-1) |
bool | getVelGrad (U3dPoint point, double &v, double &vf, double &vaz, U3D_WAVE_TYPE wt) |
bool | getVelGrad (U3dPoint point, int bodyId, double &v, double &vf, double &vaz, U3D_WAVE_TYPE wt) |
int | getBodyId (U3dPoint) |
U3dBody * | getBody (int bodyId) |
const U3dBody * | getBody (int bodyId) const |
int | getBodiesNum () const |
U3dBox | getModelBox () const |
U3dGrid * | getGrid () |
const U3dGrid * | getGrid () const |
U3dBound * | getBound (int boundId) const |
int | getBoundsNum () const |
U3dModAreaPos | getModelAreaPos () const |
void | setModelAreaPos (U3dModAreaPos MAP) |
bool | getFBNormal (U3dPoint p, double &iA, double &iAz) |
bool | getReady () |
void | addDescription (const char *description) |
std::vector< int > | getCommonBoundsIds (int bodyId_0, int bodyId_1) |
void | constructGrid (bool plane_surf_model) |
void | gridCrusher (int boundId) |
void | getCommonCells (U3dGridCellsArray *common_cells, U3dBox *surfBox, U3dGridCell *root) |
void | recursiveDivideCell (int boundId, int_set &trianglesId_ar, U3dGridCell *cell) |
void | fillGridInfoSimple () |
void | recursiveFillCellInfo (U3dGridCell *cell) |
void | fillGridInfoComplex () |
void | getNeighbours (U3dBox box, U3dGridCellsArray &cell_array, U3dGridCellsArray &neighbour_cells) |
void | fillBoundCellsInfo () |
void | fillBoundCellsInfo (std::vector< int > bodies, int boundId, U3dGridCell *cell, U3D_COLOR b_color) |
U3dGridCell * | getBodyIdFromGrid (U3dPoint p, int &body_id) |
int | getBodyIdFromCell (U3dPoint p, U3dGridCell *cell) |
int | getBodyIdDummy (U3dPoint p) |
bool | getNormalLimPoints (U3dPoint p, U3dPoint *&p0, U3dPoint *&p1, double &iA0, double &iAz0, double &iA1, double &iAz1) |
void | defineNearestIntPoints (U3dPoint p, int bodyId, U3dPointsAr intersection_ps, std::vector< int > intersected_bounds_ind, int &p0_ind, int &p1_ind) |
void | interpolateNormals (U3dPoint p, U3dPoint *p0, U3dPoint *p1, double iA0, double iAz0, double iA1, double iAz1, double &iA, double &iAz) |
void | intersectCellTriangles (U3dPoint *p0, U3dPoint *p1, U3dGridCell *goal_cell, std::vector< int > &int_trIds, U3dPointsAr &int_points) |
void | clearOnStop () |
void | checkInternalData (std::string &errstr) |
Public Attributes | |
char * | m_desc |
Friends | |
bool | U3dModelExport (char *, U3dModel *, char *, U3dProgress *) |
void | U3dModelSaveUnivers (const U3dModel *, const char *, const char *) throw () |
U3dModel * | U3dModelLoadUnivers (const char *, const char *) throw () |
bool | U3dModelExport (char *, U3dModel *, char *, U3dProgress *) |
3d velocity model object
U3dModel::U3dModel | ( | U3dModAreaPos | modAreaPos, |
U3dBox | modelBox, | ||
U3dBoundInfoAr | bounds, | ||
U3dBodyInfoAr | bodies, | ||
U3dProgress * | prg = 0x0 |
||
) |
Constructor for model defined arbitrary
U3dModel::U3dModel | ( | U3dModAreaPos | modAreaPos, |
U3dBox | modelBox, | ||
U3d1dModBodyInfoAr | mod1dBodies, | ||
U3dProgress * | prg = 0x0 |
||
) |
Constructor for 1d to 3d model importing
U3dModel::U3dModel | ( | U3dModel * | , |
U3dProgress * | prg = 0x0 |
||
) |
Copy constructor
U3dModel::U3dModel | ( | U3dModAreaPos | modAreaPos, |
U3dBox | modelBox, | ||
U3dBoundInfoAr | bounds, | ||
U3dBodyInfoAr | bodies, | ||
U3dProgress * | prg = 0x0 |
||
) |
Constructor for model defined arbitrary
U3dModel::U3dModel | ( | U3dModAreaPos | modAreaPos, |
U3dBox | modelBox, | ||
U3d1dModBodyInfoAr | mod1dBodies, | ||
U3dProgress * | prg = 0x0 |
||
) |
Constructor for 1d to 3d model importing
U3dModel::U3dModel | ( | U3dModel * | , |
U3dProgress * | prg = 0x0 |
||
) |
Copy constructor
void U3dModel::addDescription | ( | const char * | description | ) |
Adds description.
void U3dModel::addDescription | ( | const char * | description | ) |
Adds description.
void U3dModel::checkInternalData | ( | std::string & | errstr | ) |
Check internal parameters for various incompatibilities. Errstr to be empty if all good, otherwise it will contain detected error description.
void U3dModel::constructGrid | ( | bool | plane_surf_model | ) |
Create model grid
void U3dModel::constructGrid | ( | bool | plane_surf_model | ) |
Create model grid
void U3dModel::defineNearestIntPoints | ( | U3dPoint | p, |
int | bodyId, | ||
U3dPointsAr | intersection_ps, | ||
std::vector< int > | intersected_bounds_ind, | ||
int & | p0_ind, | ||
int & | p1_ind | ||
) |
Returns indexes of two (if it is possible) points in intersection_ps, nearest to the point p; Attention: p lies on the different (black/white) sides from the bounds, on which these two points selected
void U3dModel::defineNearestIntPoints | ( | U3dPoint | p, |
int | bodyId, | ||
U3dPointsAr | intersection_ps, | ||
std::vector< int > | intersected_bounds_ind, | ||
int & | p0_ind, | ||
int & | p1_ind | ||
) |
Returns indexes of two (if it is possible) points in intersection_ps, nearest to the point p; Attention: p lies on the different (black/white) sides from the bounds, on which these two points selected
void U3dModel::fillBoundCellsInfo | ( | ) |
Fill cells, containing bounds, with information about contained bodies numbers
void U3dModel::fillBoundCellsInfo | ( | std::vector< int > | bodies, |
int | boundId, | ||
U3dGridCell * | cell, | ||
U3D_COLOR | b_color | ||
) |
Service procedure for fillBoundCellsInfo() : for the case of intersecting bounds
void U3dModel::fillBoundCellsInfo | ( | ) |
Fill cells, containing bounds, with information about contained bodies numbers
void U3dModel::fillBoundCellsInfo | ( | std::vector< int > | bodies, |
int | boundId, | ||
U3dGridCell * | cell, | ||
U3D_COLOR | b_color | ||
) |
Service procedure for fillBoundCellsInfo() : for the case of intersecting bounds
void U3dModel::fillGridInfoComplex | ( | ) |
Fills empty grid cells (do not contain bounds) with information about contained body. Complex method (work fast for curved bounds)
void U3dModel::fillGridInfoComplex | ( | ) |
Fills empty grid cells (do not contain bounds) with information about contained body. Complex method (work fast for curved bounds)
void U3dModel::fillGridInfoSimple | ( | ) |
Fills empty grid cells (do not contain bounds) with information about contained body. Simple method (work fast for plane bounds)
void U3dModel::fillGridInfoSimple | ( | ) |
Fills empty grid cells (do not contain bounds) with information about contained body. Simple method (work fast for plane bounds)
|
inline |
Returns model bodies number
|
inline |
Returns model bodies number
U3dBody* U3dModel::getBody | ( | int | bodyId | ) |
Returns body, the given point belongs to [Was bogus!]
U3dBody* getBody(U3dPoint);Returns body by it's ID
U3dBody* U3dModel::getBody | ( | int | bodyId | ) |
Returns body, the given point belongs to [Was bogus!]
U3dBody* getBody(U3dPoint);Returns body by it's ID
|
inline |
Returns body by it's ID (const variant)
const U3dBody* U3dModel::getBody | ( | int | bodyId | ) | const |
Returns body by it's ID (const variant)
int U3dModel::getBodyId | ( | U3dPoint | ) |
Returns density in given point Returns body number, the given point belongs to
int U3dModel::getBodyId | ( | U3dPoint | ) |
Returns density in given point Returns body number, the given point belongs to
int U3dModel::getBodyIdDummy | ( | U3dPoint | p | ) |
Get body number, the given point belongs to (model grid is not used)
int U3dModel::getBodyIdDummy | ( | U3dPoint | p | ) |
Get body number, the given point belongs to (model grid is not used)
int U3dModel::getBodyIdFromCell | ( | U3dPoint | p, |
U3dGridCell * | cell | ||
) |
Service procedure for getBodyIdFromGrid()
int U3dModel::getBodyIdFromCell | ( | U3dPoint | p, |
U3dGridCell * | cell | ||
) |
Service procedure for getBodyIdFromGrid()
U3dGridCell* U3dModel::getBodyIdFromGrid | ( | U3dPoint | p, |
int & | body_id | ||
) |
Uses model grid to get body number, the given point belongs to
U3dGridCell* U3dModel::getBodyIdFromGrid | ( | U3dPoint | p, |
int & | body_id | ||
) |
Uses model grid to get body number, the given point belongs to
U3dBound* U3dModel::getBound | ( | int | boundId | ) | const |
Returns bound by it's ID
U3dBound* U3dModel::getBound | ( | int | boundId | ) |
Returns bound by it's ID
const U3dBound* U3dModel::getBound | ( | int | boundId | ) | const |
Returns bound by it's ID (const version)
|
inline |
Returns model bounds number
|
inline |
Returns model bounds number
void U3dModel::getCommonCells | ( | U3dGridCellsArray * | common_cells, |
U3dBox * | surfBox, | ||
U3dGridCell * | root | ||
) |
Returns array of model grid cells, which intersect with 3d box of given surface
void U3dModel::getCommonCells | ( | U3dGridCellsArray * | common_cells, |
U3dBox * | surfBox, | ||
U3dGridCell * | root | ||
) |
Returns array of model grid cells, which intersect with 3d box of given surface
bool U3dModel::getFBNormal | ( | U3dPoint | p, |
double & | iA, | ||
double & | iAz | ||
) |
Returns the angles of fictive bound direction in given point
bool U3dModel::getFBNormal | ( | U3dPoint | p, |
double & | iA, | ||
double & | iAz | ||
) |
Returns the angles of fictive bound direction in given point
|
inline |
Returns pointer to model grid
|
inline |
Returns pointer to model grid
|
inline |
Returns pointer to model grid (const variant)
|
inline |
Returns pointer to model grid (const variant)
U3dModAreaPos U3dModel::getModelAreaPos | ( | ) | const |
Returns origin point of local model area coordinate system (in survey coordinate system)
U3dModAreaPos U3dModel::getModelAreaPos | ( | ) | const |
Returns origin point of local model area coordinate system (in survey coordinate system)
|
inline |
Returns model area 3d box
|
inline |
Returns model area 3d box
void U3dModel::getNeighbours | ( | U3dBox | box, |
U3dGridCellsArray & | cell_array, | ||
U3dGridCellsArray & | neighbour_cells | ||
) |
For given box the neighbour cells are found and replaced from initial array to the array of neighbours (service procedure for FillGridInfoComplex())
void U3dModel::getNeighbours | ( | U3dBox | box, |
U3dGridCellsArray & | cell_array, | ||
U3dGridCellsArray & | neighbour_cells | ||
) |
For given box the neighbour cells are found and replaced from initial array to the array of neighbours (service procedure for FillGridInfoComplex())
bool U3dModel::getNormalLimPoints | ( | U3dPoint | p, |
U3dPoint *& | p0, | ||
U3dPoint *& | p1, | ||
double & | iA0, | ||
double & | iAz0, | ||
double & | iA1, | ||
double & | iAz1 | ||
) |
Returns two points (and respective normal angles) for fictitious bound normal calculation
bool U3dModel::getNormalLimPoints | ( | U3dPoint | p, |
U3dPoint *& | p0, | ||
U3dPoint *& | p1, | ||
double & | iA0, | ||
double & | iAz0, | ||
double & | iA1, | ||
double & | iAz1 | ||
) |
Returns two points (and respective normal angles) for fictitious bound normal calculation
|
inline |
Returns model object status
|
inline |
Returns model object status
double U3dModel::getVel | ( | U3dPoint | p, |
U3D_WAVE_TYPE | wt, | ||
int | bId = -1 |
||
) |
Returns wave velocity of type wt in given point
double U3dModel::getVel | ( | U3dPoint | p, |
U3D_WAVE_TYPE | wt, | ||
int | bId = -1 |
||
) |
Returns wave velocity of type wt in given point
bool U3dModel::getVelGrad | ( | U3dPoint | point, |
double & | v, | ||
double & | vf, | ||
double & | vaz, | ||
U3D_WAVE_TYPE | wt | ||
) |
Returns wave velocity gradient in given point
bool U3dModel::getVelGrad | ( | U3dPoint | point, |
double & | v, | ||
double & | vf, | ||
double & | vaz, | ||
U3D_WAVE_TYPE | wt | ||
) |
Returns wave velocity gradient in given point
bool U3dModel::getVelGrad | ( | U3dPoint | point, |
int | bodyId, | ||
double & | v, | ||
double & | vf, | ||
double & | vaz, | ||
U3D_WAVE_TYPE | wt | ||
) |
Returns wave velocity gradient in given point of body #bodyId
bool U3dModel::getVelGrad | ( | U3dPoint | point, |
int | bodyId, | ||
double & | v, | ||
double & | vf, | ||
double & | vaz, | ||
U3D_WAVE_TYPE | wt | ||
) |
Returns wave velocity gradient in given point of body #bodyId
void U3dModel::gridCrusher | ( | int | boundId | ) |
Update existing model grid in presence of bound #boundsId
void U3dModel::gridCrusher | ( | int | boundId | ) |
Update existing model grid in presence of bound #boundsId
void U3dModel::interpolateNormals | ( | U3dPoint | p, |
U3dPoint * | p0, | ||
U3dPoint * | p1, | ||
double | iA0, | ||
double | iAz0, | ||
double | iA1, | ||
double | iAz1, | ||
double & | iA, | ||
double & | iAz | ||
) |
Interpolates lineary the normal angles (information from two bounds points used)
void U3dModel::interpolateNormals | ( | U3dPoint | p, |
U3dPoint * | p0, | ||
U3dPoint * | p1, | ||
double | iA0, | ||
double | iAz0, | ||
double | iA1, | ||
double | iAz1, | ||
double & | iA, | ||
double & | iAz | ||
) |
Interpolates lineary the normal angles (information from two bounds points used)
void U3dModel::intersectCellTriangles | ( | U3dPoint * | p0, |
U3dPoint * | p1, | ||
U3dGridCell * | goal_cell, | ||
std::vector< int > & | int_trIds, | ||
U3dPointsAr & | int_points | ||
) |
Intersect triangles, contained in the cell, by the segment p0-p1. Returns arrays of triangles numbers and intersection points
void U3dModel::intersectCellTriangles | ( | U3dPoint * | p0, |
U3dPoint * | p1, | ||
U3dGridCell * | goal_cell, | ||
std::vector< int > & | int_trIds, | ||
U3dPointsAr & | int_points | ||
) |
Intersect triangles, contained in the cell, by the segment p0-p1. Returns arrays of triangles numbers and intersection points
void U3dModel::recursiveDivideCell | ( | int | boundId, |
int_set & | trianglesId_ar, | ||
U3dGridCell * | cell | ||
) |
Recursive procedure for dividing grid cell
void U3dModel::recursiveDivideCell | ( | int | boundId, |
std::set< int > & | trianglesId_ar, | ||
U3dGridCell * | cell | ||
) |
Recursive procedure for dividing grid cell
void U3dModel::recursiveFillCellInfo | ( | U3dGridCell * | cell | ) |
Service procedure for FillGridInfoSimple()
void U3dModel::recursiveFillCellInfo | ( | U3dGridCell * | cell | ) |
Service procedure for FillGridInfoSimple()
|
friend |
Exporting model to text file. Returns false, when export fails.
file | file's name |
model | model to save |
model_name | model's name in text file |
prg | pointer to progress object |
|
friend |
Exporting model to text file. Returns false, when export fails.
file | file's name |
model | model to save |
model_name | model's name in text file |
prg | pointer to progress object |