8 #ifndef COVISE_GRIDMETHODS_H 9 #define COVISE_GRIDMETHODS_H 15 #define PI 3.14159265358979323846 22 #define rintf(dval) ((_isnan(dval)) ? (dval) : (((((dval)-floor(dval)) >= 0.5f) ? (ceil(dval)) : (floor(dval))))) 36 static int isin_triangle(
const float *point,
41 static void interpolateInTriangle(
float *v_interp,
const float *point,
42 int no_arrays,
int array_dim,
43 const float *
const *velo,
int c0,
int c1,
int c2,
44 const float *p0,
const float *p1,
const float *p2);
45 static void ExtractNormal(
float *normal,
int base,
int second,
int third,
46 const float *x_in,
const float *y_in,
const float *z_in);
47 static void ProjectPoint(
float *proj_point,
const float *point,
48 const int *conn,
int elem_cell,
int num_of_vert,
49 const float *x_in,
const float *y_in,
const float *z_in);
50 static float tri_surf(
float *surf,
const float *p0,
51 const float *p1,
const float *p2);
59 static void interpElem(
float fem_c[3],
float *
interp,
60 int array_len,
const float *velos);
63 static int asc_compar_fp(
const void *key,
const void *fp);
64 static int desc_compar_fp(
const void *key,
const void *fp);
77 static void getBoundBox(
BoundBox &bbox,
int no_v,
const int *v_l,
78 const float *x_in,
const float *y_in,
const float *z_in);
80 static float getMaxVel(
int no_v,
const int *v_l,
81 const float *u,
const float *
v,
const float *
w);
93 static void hex2tet(
int ind,
const int *el,
const int *cl,
int i,
int *tel,
int *tcl);
94 static void prism2tet(
int ind,
const int *el,
const int *cl,
int i,
int *tel,
int *tcl);
95 static void pyra2tet(
int ind,
const int *el,
const int *cl,
int i,
int *tel,
int *tcl);
98 static float tetra_vol(
const float p0[3],
const float p1[3],
99 const float p2[3],
const float p3[3]);
101 static int isin_tetra(
const float px[3],
const float p0[3],
const float p1[3],
102 const float p2[3],
const float p3[3],
float rel_tol);
106 static void interpolateInTetra(
float *v_interp,
const float *point,
107 int no_arrays,
int array_dim,
const float *
const *velo,
108 int c0,
int c1,
int c2,
int c3,
109 const float *p0,
const float *p1,
const float *p2,
const float *p3);
113 static int interpolateVInHexa(
float *v_interp,
const float *point,
114 const float *
const *velo,
const int *connl,
115 const float *x_in,
const float *y_in,
const float *z_in);
117 static int interpolateInHexa(
float *v_interp,
const float *point,
118 int no_arrays,
int array_dim,
const float *
const *velo,
120 const float *x_in,
const float *y_in,
const float *z_in);
147 static void TesselatePolyhedron(
TESSELATION &triangulated_polyhedron,
int num_elem_in,
int *elem_in,
int num_conn_in,
int *conn_in,
float *xcoord_in,
float *ycoord_in,
float *zcoord_in);
148 static void ComputeBoundingBox(
int num_coord_in,
float *x_coord_in,
float *y_coord_in,
float *z_coord_in,
POINT3D &box_min,
POINT3D &box_max,
int &radius );
153 static void RandomRay(
POINT3D &end_point,
int radius);
155 static int PlaneCoeff(
float *triangle_x,
float *triangle_y,
float *triangle_z,
POINT3D &normal,
double &
distance);
156 static char RayPlaneIntersection(
float *triangle_x,
float *triangle_y,
float *triangle_z,
POINT3D query_point,
POINT3D end_point,
POINT3D &int_point,
int &component_index);
159 static char InTri3D(
float *triangle_x,
float *triangle_y,
float *triangle_z,
int component_index,
POINT3D int_point);
160 static char InPlane();
162 static char RayTriangleCrossing(
float *triangle_x,
float *triangle_y,
float *triangle_z,
POINT3D query_point,
POINT3D end_point);
163 static char RayTriangleIntersection(
float *triangle_x,
float *triangle_y,
float *triangle_z,
POINT3D query_point,
POINT3D end_point,
POINT3D &int_point);
164 static char InPolyhedron(
float *x_coord_in,
float *y_coord_in,
float *z_coord_in,
POINT3D box_min,
POINT3D box_max,
POINT3D query_point,
POINT3D &end_point,
int radius,
TESSELATION triangulated_polyhedron);
169 static double InterpolateCellData(
int num_coord_in,
float *x_coord_in,
float *y_coord_in,
float *z_coord_in,
float *data_in,
POINT3D query_point);
174 static int derivativesAtCenter(
float **v_interp[3],
175 int no_points,
int no_arrays,
const float *
const *velo,
176 int no_el,
int no_vert,
177 const int *tl,
const int *el,
const int *connl,
178 const float *x_in,
const float *y_in,
const float *z_in);
219 unsigned char *son_share);
220 int maxOfCountSons(
int *);
223 octTree(
int num_grid_cells,
const int *keyBBoxes);
225 unsigned char *son_share,
int *count_sons);
226 void ModifyLists(
int num,
int *elements,
int offset);
227 void DivideOctTree(
oct_tree_key MacroCell,
int *list_cells,
239 static void cell3(
int idim,
int jdim,
int kdim,
240 float *x_in,
float *y_in,
float *z_in,
241 int *i,
int *j,
int *k,
242 float *
a,
float *
b,
float *
g,
243 float x[3],
float amat[3][3],
float bmat[3][3],
246 static void intp3(
int idim,
int jdim,
int kdim,
247 float *u_in,
float *v_in,
float *w_in,
249 float a,
float b,
float g,
252 static void metr3(
int idim,
int jdim,
int kdim,
253 float *x_in,
float *y_in,
float *z_in,
255 float a,
float b,
float g,
256 float amat[3][3],
float bmat[3][3],
257 int *idegen,
int *status);
259 static void padv3(
int *
first,
float cellfr,
int direction,
260 int idim,
int jdim,
int kdim,
261 float *x_in,
float *y_in,
float *z_in,
262 float *u_in,
float *v_in,
float *w_in,
263 int *i,
int *j,
int *k,
264 float *
a,
float *
b,
float *
g,
float x[4],
265 float min_velo,
int *status,
float *ovel,
float *nvel);
267 static void ssvdc(
float *
x,
int n,
int p,
float *
s,
float *e,
268 float *u,
float *
v,
float *work,
271 static void srot(
int n,
float *sx,
int incx,
float *sy,
272 int incy,
float c,
float s);
273 static void srotg(
float sa,
float sb,
float c,
float s);
274 static void sscal(
int n,
float sa,
float *sx,
int incx);
275 static void sswap(
int n,
float *sx,
int incx,
float *sy,
int incy);
276 static void saxpy(
int n,
float sa,
float *sx,
int incx,
float *sy,
int incy);
277 static float sdot(
int n,
float *sx,
int incx,
float *sy,
int incy);
278 static float snrm2(
int n,
float *sx,
int incx);
279 static void ptran3(
float amat[3][3],
float v[3],
float vv[3]);
280 static void inv3x3(
float a[3][3],
float ainv[3][3],
int *status);
Definition: covise_gridmethods.h:126
std::vector< int > POLYGON
Definition: covise_gridmethods.h:141
double x
Definition: covise_gridmethods.h:128
Definition: covise_gridmethods.h:187
float x_max_
Definition: covise_gridmethods.h:71
oct_tree_key min_
Definition: covise_gridmethods.h:189
int oct_tree_key
Definition: covise_gridmethods.h:185
const GLubyte * c
Definition: khronos-glext.h:9864
GLboolean GLboolean g
Definition: khronos-glext.h:6895
double dot_product(EDGE_VECTOR &vector1, EDGE_VECTOR &vector2)
Definition: CuttingSurfaceGPMUtil.h:54
int vertex1
Definition: covise_gridmethods.h:135
GLdouble s
Definition: khronos-glext.h:6441
Definition: covise_gridmethods.h:208
static const int NO_OF_BITS
Definition: covise_gridmethods.h:195
GLsizei GLsizei GLfloat distance
Definition: khronos-glext.h:13024
EDGE_VECTOR cross_product(EDGE_VECTOR &vector1, EDGE_VECTOR &vector2)
Definition: CuttingSurfaceGPMUtil.h:59
lists * lists_
Definition: covise_gridmethods.h:215
float z_min_
Definition: covise_gridmethods.h:70
GLuint interp
Definition: khronos-glext.h:10487
const GLint * first
Definition: khronos-glext.h:6529
int vertex3
Definition: covise_gridmethods.h:137
int num_grid_cells_
Definition: covise_gridmethods.h:216
double y
Definition: covise_gridmethods.h:129
GLuint GLuint num
Definition: khronos-glext.h:10593
float z_max_
Definition: covise_gridmethods.h:73
oct_tree_key max_
Definition: covise_gridmethods.h:190
Definition: covise_gridmethods.h:193
double z
Definition: covise_gridmethods.h:130
float y_max_
Definition: covise_gridmethods.h:72
GLubyte GLubyte GLubyte GLubyte w
Definition: khronos-glext.h:6793
double length(EDGE_VECTOR &vector)
Definition: CuttingSurfaceGPMUtil.h:70
Definition: covise_gridmethods.h:66
GLdouble n
Definition: khronos-glext.h:8447
const int * keyBBoxes_
Definition: covise_gridmethods.h:217
std::vector< TRIANGLE > TESSELATION
Definition: covise_gridmethods.h:140
QTextStream & operator<<(QTextStream &out, const coConfigEntryStringList list)
Definition: coConfigEntryString.cpp:159
GLint GLint GLint GLint GLint x
Definition: khronos-glext.h:6346
const GLdouble * v
Definition: khronos-glext.h:6442
float x_min_
Definition: covise_gridmethods.h:68
#define DOEXPORT
Definition: coExport.h:331
std::vector< int >::iterator POLYGON_ITERATOR
Definition: covise_gridmethods.h:142
int vertex2
Definition: covise_gridmethods.h:136
GLint level
Definition: khronos-glext.h:6344
static const int out_of_domain
Definition: covise_gridmethods.h:196
GLfloat GLfloat p
Definition: khronos-glext.h:9861
GLboolean GLboolean GLboolean GLboolean a
Definition: khronos-glext.h:6895
float y_min_
Definition: covise_gridmethods.h:69
list of all chemical elements
Definition: coConfig.h:26
Definition: covise_gridmethods.h:133
Definition: covise_gridmethods.h:33
GLintptr offset
Definition: khronos-glext.h:6611
GLboolean GLboolean GLboolean b
Definition: khronos-glext.h:6895