#include <FlowGeometry.h>
Public Member Functions | |
FlowGeometry () | |
~FlowGeometry () | |
deletes the allocated geometry storage | |
bool | getInterpolationAt (vec3 pos, int *vtxID, float *coef) |
Returns true if inside. Stores the vertex indices and interpolation weights for the given position in the arrays. | |
bool | readFromFile (char *header, FILE *fp, bool bigEndian) |
reads the geometry gris data from a file | |
int | getDimX () |
returns the number of vertices in X dimension | |
int | getDimY () |
returns the number of vertices in Y dimension | |
int | getDimZ () |
returns the number of vertices in Z dimension, is always 1 | |
float | getMinX () |
returns the minimum in the X dimension | |
float | getMaxX () |
returns the maximum in the X dimension | |
float | getMinY () |
returns the minimum in the Y dimension | |
float | getMaxY () |
returns the maximum in the Y dimension | |
int | getRightNeigh (int vtxID) |
returns the vertex ID of the neighbour on its right | |
int | getTopNeigh (int vtxID) |
returns the vertex ID of the neighbour on its top | |
int | getLeftNeigh (int vtxID) |
returns the vertex ID of the neighbour on its left | |
int | getBottomNeigh (int vtxID) |
returns the vertex ID of the neighbour on its bottom | |
vec3 | normalizeCoords (vec3 pos) |
compression of coordinates in each dimension separately, returns values scaled to <0,1> | |
vec3 | unNormalizeCoords (vec3 pos) |
inverts the compression. From values of <0,1> it restores the real geometrical coordinates | |
Private Member Functions | |
int | getVtx (int x, int y) |
returns general vtxID for the vertex array indexes | |
int | getVtxX (int vtxID) |
returns X index for the general vtxID | |
int | getVtxY (int vtxID) |
returns Y index for the general vtxID | |
int | getXYvtx (vec3 pos) |
returns X index of the last vertex lying left to the position x and the Y index of the last vertex lying under the position y | |
vec3 | getPos (int vtxID) |
returns the position of the vertex | |
float | getPosX (int vtxID) |
returns the x position of the vertex | |
float | getPosY (int vtxID) |
returns the y position of the vertex | |
int | getNearestVtx (vec3 pos) |
a very slow and dumb routine, that finds the nearest vertex to the given position | |
Private Attributes | |
int | dim [2] |
resolution of the data for the dimensions X, Y | |
vec3 | boundaryMin |
minimum boundary values for the dataset geometry sotred as {minX, minY) | |
vec3 | boundaryMax |
maximum boundary values for the dataset geometry sotred as (maxX, maxY) | |
vec3 | boundarySize |
boundary sizes for the dataset geometry sotred as (maX - minX, maxY - minY) | |
vec3 * | geometryData |
Storage for the geometry. | |
bool | isFlipped |
indicates whether the x and y axes have to be swaped | |
int | counter |
Friends | |
class | FlowData |
FlowGeometry::FlowGeometry | ( | ) |
FlowGeometry::~FlowGeometry | ( | ) |
deletes the allocated geometry storage
int FlowGeometry::getBottomNeigh | ( | int | vtxID | ) |
returns the vertex ID of the neighbour on its bottom
int FlowGeometry::getDimX | ( | ) | [inline] |
returns the number of vertices in X dimension
int FlowGeometry::getDimY | ( | ) | [inline] |
returns the number of vertices in Y dimension
int FlowGeometry::getDimZ | ( | ) | [inline] |
returns the number of vertices in Z dimension, is always 1
bool FlowGeometry::getInterpolationAt | ( | vec3 | pos, | |
int * | vtxID, | |||
float * | coef | |||
) |
Returns true if inside. Stores the vertex indices and interpolation weights for the given position in the arrays.
Interpolates the value for a point using its four neighbor vertices.
Stores the indexes and weights of vertices surrounding the given position. This information can be used later on for interpolation of channel values.
pos | geometrical position for the lookup | |
vtxID | list of surrounding vertices (given by vertex ID) | |
coef | list of surrounding vertex weights (sum == 1.0) |
int FlowGeometry::getLeftNeigh | ( | int | vtxID | ) |
returns the vertex ID of the neighbour on its left
float FlowGeometry::getMaxX | ( | ) | [inline] |
returns the maximum in the X dimension
float FlowGeometry::getMaxY | ( | ) | [inline] |
returns the maximum in the Y dimension
float FlowGeometry::getMinX | ( | ) | [inline] |
returns the minimum in the X dimension
float FlowGeometry::getMinY | ( | ) | [inline] |
returns the minimum in the Y dimension
int FlowGeometry::getNearestVtx | ( | vec3 | pos | ) | [private] |
a very slow and dumb routine, that finds the nearest vertex to the given position
Improved version of getNearestVtx(). Compares the distance only to the four surrounding neighbor vertices and returns the closest.
vec3 FlowGeometry::getPos | ( | int | vtxID | ) | [inline, private] |
returns the position of the vertex
float FlowGeometry::getPosX | ( | int | vtxID | ) | [inline, private] |
returns the x position of the vertex
float FlowGeometry::getPosY | ( | int | vtxID | ) | [inline, private] |
returns the y position of the vertex
int FlowGeometry::getRightNeigh | ( | int | vtxID | ) |
returns the vertex ID of the neighbour on its right
int FlowGeometry::getTopNeigh | ( | int | vtxID | ) |
returns the vertex ID of the neighbour on its top
int FlowGeometry::getVtx | ( | int | x, | |
int | y | |||
) | [private] |
returns general vtxID for the vertex array indexes
int FlowGeometry::getVtxX | ( | int | vtxID | ) | [private] |
returns X index for the general vtxID
int FlowGeometry::getVtxY | ( | int | vtxID | ) | [private] |
returns Y index for the general vtxID
int FlowGeometry::getXYvtx | ( | vec3 | pos | ) | [private] |
returns X index of the last vertex lying left to the position x and the Y index of the last vertex lying under the position y
compression of coordinates in each dimension separately, returns values scaled to <0,1>
bool FlowGeometry::readFromFile | ( | char * | header, | |
FILE * | fp, | |||
bool | bigEndian | |||
) |
reads the geometry gris data from a file
inverts the compression. From values of <0,1> it restores the real geometrical coordinates
friend class FlowData [friend] |
vec3 FlowGeometry::boundaryMax [private] |
maximum boundary values for the dataset geometry sotred as (maxX, maxY)
vec3 FlowGeometry::boundaryMin [private] |
minimum boundary values for the dataset geometry sotred as {minX, minY)
vec3 FlowGeometry::boundarySize [private] |
boundary sizes for the dataset geometry sotred as (maX - minX, maxY - minY)
int FlowGeometry::counter [private] |
int FlowGeometry::dim[2] [private] |
resolution of the data for the dimensions X, Y
vec3* FlowGeometry::geometryData [private] |
Storage for the geometry.
bool FlowGeometry::isFlipped [private] |
indicates whether the x and y axes have to be swaped