COVISE Core
coIsoSurface.h
Go to the documentation of this file.
1/* This file is part of COVISE.
2
3 You can use it under the terms of the GNU Lesser General Public License
4 version 2.1 or later, see lgpl-2.1.txt.
5
6 * License: LGPL 2+ */
7
8#ifndef _PLANE_KRAMM_H
9#define _PLANE_KRAMM_H
10
11#include <util/coTypes.h>
12#include <cstdlib>
14
15namespace covise
16{
17
18class coOutputPort;
19
20typedef struct NodeInfo_s
21{
22 float dist;
23 int side;
24 int targets[12];
25 int vertice_list[12];
26} NodeInfo;
27
28typedef struct cutting_info_s
29{
30 int node_pairs[12];
31 int nvert;
33
35{
36 friend class STR_IsoPlane;
37 friend class UNI_IsoPlane;
38 friend class RECT_IsoPlane;
39 friend class POLYHEDRON_IsoPlane;
40
41protected:
42 const int *el, *cl, *tl;
43 const float *x_in;
44 const float *y_in;
45 const float *z_in;
46 const float *s_in; // mapped scalar data
47 const float *i_in; // isodata
48 const float *u_in; // mapped vector data
49 const float *v_in; // mapped vector data
50 const float *w_in; // mapped vector data
51
52private:
59 int *vertex;
65 float *coords_x;
66 float *coords_y;
67 float *coords_z;
68 float *coord_x;
69 float *coord_y;
70 float *coord_z;
71 float *V_Data_U;
72 float *V_Data_V;
73 float *V_Data_W;
74 float *S_Data;
75 float *V_Data_U_p;
76 float *V_Data_V_p;
77 float *V_Data_W_p;
78 float *S_Data_p;
79 float *Normals_U;
80 float *Normals_V;
81 float *Normals_W;
84 float _isovalue;
86 char *iblank;
87
88 // Maximal number of triangles attached to one Vertex.
89 // configure at IsoSurface.MAX_TRI_PER_VERT
90 // starting value for
91 static int maxTriPerVertex;
92
93 // This variable represents the current state. Set when
94 // a neighbour list is built. Might be increased if the
95 // list was not built successfully with the given default
97
98protected:
99 bool add_vertex(int n1, int n2);
100 void add_vertex(int n1, int n2, int x, int y, int z, int u, int v, int w);
101
102public:
104
105 IsoPlane();
106 IsoPlane(int n_elem, int n_nodes, int Type, float cutVertexRatio,
107 const int *el, const int *cl, const int *tl,
108 const float *x_in, const float *y_in, const float *z_in,
109 const float *s_in, const float *i_in,
110 const float *u_in, const float *v_in, const float *w_in, float isovalue,
111 bool isConnected, char *ib);
112 IsoPlane(int n_elem, int n_nodes, int Type, /*float cutVertexRatio,*/
113 const int *el, const int *cl, const int *tl,
114 const float *x_in, const float *y_in, const float *z_in,
115 const float *s_in, const float *i_in,
116 const float *u_in, const float *v_in, const float *w_in, float isovalue,
117 bool isConnected, char *ib);
118 virtual ~IsoPlane();
119 void createNormals(int genstrips);
120 void createStrips(int gennormals);
121 void createcoDistributedObjects(coOutputPort *, coOutputPort *, coOutputPort *,
122 int gennormals, int genstrips,
123 const char *colorn);
124 bool createIsoPlane();
125 void createNeighbourList();
126
127 // access to output fields
129 {
130 return num_coords;
131 };
133 {
134 return (int)(vertex - vertice_list);
135 };
137 {
138 return num_triangles;
139 }
140 float *getXout()
141 {
142 return coords_x;
143 };
144 float *getYout()
145 {
146 return coords_y;
147 };
148 float *getZout()
149 {
150 return coords_z;
151 };
153 {
154 return vertice_list;
155 };
156};
157
159{
160
161public:
162 STR_IsoPlane(int n_elem, int n_nodes, int Type,
163 int xsiz, int ysiz, int zsiz,
164 const float *x_in, const float *y_in, const float *z_in,
165 const float *s_in, const float *i_in,
166 const float *u_in, const float *v_in, const float *w_in, float isovalue,
167 bool isConnected, char *ib)
168 : IsoPlane(n_elem, n_nodes, Type, -1, NULL, NULL, NULL, x_in, y_in, z_in,
169 s_in, i_in, u_in, v_in, w_in, isovalue, isConnected, ib)
170 , x_size(xsiz)
171 , y_size(ysiz)
172 , z_size(zsiz)
173 {
174 }
175 bool createIsoPlane();
176
177private:
181};
182
184{
185
186public:
187 UNI_IsoPlane(int n_elem, int n_nodes, int Type,
188 float x_min, float x_max, float y_min,
189 float y_max, float z_min, float z_max,
190 int xsiz, int ysiz, int zsiz,
191 const float *sin, const float *iin,
192 const float *uin, const float *vin, const float *win, float isovalue,
193 bool isConnected, char *ib);
194 virtual ~UNI_IsoPlane();
195 void createIsoPlane();
196
197private:
201};
202
204{
205
206public:
207 RECT_IsoPlane(int n_elem, int n_nodes, int Type,
208 int xsiz, int ysiz, int zsiz,
209 const float *xin, const float *yin, const float *zin,
210 const float *sin, const float *iin,
211 const float *uin, const float *vin, const float *win, float isovalue,
212 bool isConnected, char *ib);
213 void createIsoPlane();
214
215private:
219};
220
222{
223private:
225
226 /***************/
227 /* Output Data */
228 /***************/
229
233
236
240 float *sdata_out;
241 float *udata_out;
242 float *vdata_out;
243 float *wdata_out;
244
245public:
246 POLYHEDRON_IsoPlane(int n_elem, int n_conn, int n_nodes, int Type,
247 const int *el, const int *cl, const int *tl,
248 const float *x_in, const float *y_in, const float *z_in,
249 const float *s_in, const float *i_in,
250 const float *u_in, const float *v_in, const float *w_in, float isovalue,
251 bool isConnected, char *ib);
252
254
255 void create_isocontour(int num_elem_in, int *elem_in, int num_conn_in, int *conn_in,
256 int num_coord_in, float *x_coord_in, float *y_coord_in, float *z_coord_in,
257 int *polygon_list, int *index_list, float *isodata_in, float *sdata_in, float *udata_in, float *vdata_in, float *wdata_in,
258 float isovalue, ISOSURFACE_EDGE_INTERSECTION_VECTOR &intsec_vector, CONTOUR &contour, TESSELATION &triangulation);
259
260 bool createIsoPlane();
261
262 void createcoDistributedObjects(coOutputPort *p_GridOut, coOutputPort *p_DataOut);
263};
264}
265#endif
#define ALGEXPORT
Definition: coExport.h:337
#define NULL
Definition: covise_list.h:22
GLdouble GLdouble z
Definition: khronos-glext.h:6565
const GLdouble * v
Definition: khronos-glext.h:6442
GLint GLint GLint GLint GLint GLint y
Definition: khronos-glext.h:6346
GLubyte GLubyte GLubyte GLubyte w
Definition: khronos-glext.h:6793
GLint GLint GLint GLint GLint x
Definition: khronos-glext.h:6346
list of all chemical elements
Definition: coConfig.h:27
std::vector< ISOSURFACE_EDGE_INTERSECTION > ISOSURFACE_EDGE_INTERSECTION_VECTOR
Definition: IsoSurfaceGPMUtil.h:73
std::vector< TRIANGLE > TESSELATION
Definition: IsoSurfaceGPMUtil.h:75
struct covise::NodeInfo_s NodeInfo
struct covise::cutting_info_s cutting_info
Definition: coCuttingSurface.h:38
float dist
Definition: coCuttingSurface.h:39
int vertice_list[12]
Definition: coCuttingSurface.h:42
int targets[12]
Definition: coCuttingSurface.h:41
int side
Definition: coCuttingSurface.h:40
int node_pairs[12]
Definition: coCuttingSurface.h:47
int nvert
Definition: coCuttingSurface.h:48
Definition: coIsoSurface.h:35
bool polyhedral_cells_found
Definition: coIsoSurface.h:103
const float * w_in
Definition: coIsoSurface.h:50
float * V_Data_V_p
Definition: coIsoSurface.h:76
int * ts_vertice_list
Definition: coIsoSurface.h:62
int num_strips
Definition: coIsoSurface.h:57
const float * v_in
Definition: coIsoSurface.h:49
int getNumTriangles()
Definition: coIsoSurface.h:136
float _isovalue
Definition: coIsoSurface.h:84
static int maxTriPerVertex
Definition: coIsoSurface.h:91
float * coords_x
Definition: coIsoSurface.h:65
float * coords_y
Definition: coIsoSurface.h:66
int Datatype
Definition: coIsoSurface.h:83
float * S_Data_p
Definition: coIsoSurface.h:78
const float * z_in
Definition: coIsoSurface.h:45
float * getXout()
Definition: coIsoSurface.h:140
int num_nodes
Definition: coIsoSurface.h:53
float * V_Data_W_p
Definition: coIsoSurface.h:77
float * coord_z
Definition: coIsoSurface.h:70
const float * i_in
Definition: coIsoSurface.h:47
int * ts_line_list
Definition: coIsoSurface.h:63
float * V_Data_V
Definition: coIsoSurface.h:72
int * vertice_list
Definition: coIsoSurface.h:58
float * coord_y
Definition: coIsoSurface.h:69
int max_coords
Definition: coIsoSurface.h:61
int num_coords
Definition: coIsoSurface.h:60
float * Normals_V
Definition: coIsoSurface.h:80
float * coord_x
Definition: coIsoSurface.h:68
NodeInfo * node_table
Definition: coIsoSurface.h:82
int getNumVertices()
Definition: coIsoSurface.h:132
float * getZout()
Definition: coIsoSurface.h:148
float * V_Data_U
Definition: coIsoSurface.h:71
int num_triangles
Definition: coIsoSurface.h:55
float * Normals_U
Definition: coIsoSurface.h:79
int * getVerticeList()
Definition: coIsoSurface.h:152
float * V_Data_W
Definition: coIsoSurface.h:73
int * neighbors
Definition: coIsoSurface.h:64
float * coords_z
Definition: coIsoSurface.h:67
const float * s_in
Definition: coIsoSurface.h:46
int getNumCoords()
Definition: coIsoSurface.h:128
float * V_Data_U_p
Definition: coIsoSurface.h:75
char * iblank
Definition: coIsoSurface.h:86
float * S_Data
Definition: coIsoSurface.h:74
int num_vertices
Definition: coIsoSurface.h:56
const float * u_in
Definition: coIsoSurface.h:48
bool _isConnected
Definition: coIsoSurface.h:85
float * Normals_W
Definition: coIsoSurface.h:81
const float * x_in
Definition: coIsoSurface.h:43
int triPerVertex
Definition: coIsoSurface.h:96
int * vertex
Definition: coIsoSurface.h:59
const int * cl
Definition: coIsoSurface.h:42
int num_elem
Definition: coIsoSurface.h:54
float * getYout()
Definition: coIsoSurface.h:144
const float * y_in
Definition: coIsoSurface.h:44
Definition: coIsoSurface.h:159
int y_size
Definition: coIsoSurface.h:179
int x_size
Definition: coIsoSurface.h:178
STR_IsoPlane(int n_elem, int n_nodes, int Type, int xsiz, int ysiz, int zsiz, const float *x_in, const float *y_in, const float *z_in, const float *s_in, const float *i_in, const float *u_in, const float *v_in, const float *w_in, float isovalue, bool isConnected, char *ib)
Definition: coIsoSurface.h:162
int z_size
Definition: coIsoSurface.h:180
Definition: coIsoSurface.h:184
int z_size
Definition: coIsoSurface.h:200
int x_size
Definition: coIsoSurface.h:198
int y_size
Definition: coIsoSurface.h:199
Definition: coIsoSurface.h:204
int x_size
Definition: coIsoSurface.h:216
int y_size
Definition: coIsoSurface.h:217
int z_size
Definition: coIsoSurface.h:218
Definition: coIsoSurface.h:222
float * z_coord_out
Definition: coIsoSurface.h:239
int num_conn
Definition: coIsoSurface.h:224
float * udata_out
Definition: coIsoSurface.h:241
int * elem_out
Definition: coIsoSurface.h:234
float * x_coord_out
Definition: coIsoSurface.h:237
float * sdata_out
Definition: coIsoSurface.h:240
float * y_coord_out
Definition: coIsoSurface.h:238
int num_coord_out
Definition: coIsoSurface.h:232
int num_elem_out
Definition: coIsoSurface.h:230
float * vdata_out
Definition: coIsoSurface.h:242
int num_conn_out
Definition: coIsoSurface.h:231
float * wdata_out
Definition: coIsoSurface.h:243
int * conn_out
Definition: coIsoSurface.h:235
Definition: CuttingSurfaceGPMUtil.h:38
Definition: coOutputPort.h:27