|
FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
|
The UniGridMapper Maps a cell in a uniform grid to curvilinear cells, which are contained or intersect a unicell. More...
#include <UniGridMapper.hpp>
Public Member Functions | |
| UniGridMapper (const RefPtr< CoordsArray_t > &_CurviCoords, const double res_scale=1.0, const double prec_scale=1.0) | |
| Initializes the Mapper. | |
| int | MaximalCurvicellPerUnicell () const |
| MultiIndex< 3 > | Size () const |
| return the size of the curvi linear index list (Thats not a helpful comment, is it?) | |
| point | operator[] (const MultiIndex< 3 > &m) const |
| return point at a given uni-grid index | |
| IndexList_t & | operator() (const MultiIndex< 3 > &m) const |
| return list of curvi-cell indices at a given uni-grid index | |
| RefPtr< CoordsArray_t > | getCurviCoords () const |
| RefPtr< UniformCartesianArray > | getUniCoords () const |
| point | getMin () |
| Get the minimum coord of the bounding box of the UniGridMapper. | |
| point | getMax () |
| Get the maximum coord of the bounding box of the UniGridMapper. | |
| bool | add (MultiIndex< 3 > &curvi_i) |
| add (map) curvi cell to all uni grid cells it is contained, or intersecting | |
| bool | inUniCell (const point &p, MultiIndex< 3 > &index) |
| Given a world point return true and the index of the unigrid cell, in which the point is contained, return false otherwise. | |
| bool | curviCells (const point &p, IndexList_t &list) |
| Given a world point return true and the list of all curvi-cell that are mapped to the unigrid-cell, in which the point is located, return false if point is not located in a uni-cell of the UniGridMapper. | |
| unsigned | localCellCoordinatesFromCurviGrid (const point &p, point &uvw, double grid_epsilon=0.0) |
| This should be called as a 'user' of UniGridMapper. | |
| bool | localCellCoordinatesFromCell (point &uvw, const point &P, MultiIndex< 3 > &it, const CoordsArray_t &Data, const MultiIndex< 3 > &max, const double prec) |
| This function is the heart of the mapper. | |
| unsigned | localCellCoordinatesFromCurviGridProjective (const point &p, point &uvw, const double &grid_epsilon) |
Static Public Member Functions | |
| static double | avg (const double a, const double b) |
| static void | clampRange (point &p, const double min, const double max) |
| static bool | uvwInRange2 (point &u, const MultiIndex< 3 > &it, const MultiIndex< 3 > &max, const double prec) |
| static bool | localPointToIndex (const point &p, MultiIndex< 3 > &cc) |
The UniGridMapper Maps a cell in a uniform grid to curvilinear cells, which are contained or intersect a unicell.
This is useful for fast choosing certain candidates of a curvilinear coordinategrid. It is by now a special solution for the 3-dimensional case. Initialisation of the UniGridMapper traverses all cells of the curvi coords grid for each uni cell to build the lookup structure. UniGridMapper is Ref-Pointer-able.
| UniGridMapper::UniGridMapper | ( | const RefPtr< CoordsArray_t > & | _CurviCoords, |
| const double | res_scale = 1.0, |
||
| const double | prec_scale = 1.0 |
||
| ) |
Initializes the Mapper.
It tries to choose a similar number of cubish cells as the curvilinear source.
| _CurviCoords | the curvi linear coordinate grid, the uni grid mapper shalld operate on |
| res_scale | relative scale for the number of cells. Higher scale means more cells in the uni grid. |
| prec_scale | relative scale for the precision for the newton iteration. Initial precision is 1/100 of the average of all edges of the curvi cells. |
References add(), floor(), max(), Eagle::norm2(), and std::sqrt().
| bool UniGridMapper::localCellCoordinatesFromCell | ( | point & | uvw, |
| const point & | P, | ||
| MultiIndex< 3 > & | it, | ||
| const CoordsArray_t & | Data, | ||
| const MultiIndex< 3 > & | max, | ||
| const double | prec | ||
| ) |
This function is the heart of the mapper.
It does an initial guess in the cell. Then it does a taylor approximation and iterates with newton in direction of the given point to calculate the local coordinates. vgl Stalling p.
| uvw | returns the local index |
| P | specifies the world point |
| prec | specify the precision until the newton continues |
References std::cout, std::endl(), max(), and Eagle::norm2().
Referenced by localCellCoordinatesFromCurviGrid().
| unsigned UniGridMapper::localCellCoordinatesFromCurviGrid | ( | const point & | p, |
| point & | uvw, | ||
| double | grid_epsilon = 0.0 |
||
| ) |
This should be called as a 'user' of UniGridMapper.
Given a world point return the local curvi-cell coordinate.
| p | world point |
| uvw | returns the local index of the curvi-grid |
References curviCells(), std::fabs(), localCellCoordinatesFromCell(), and max().