fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1
2
3
|
#ifndef STIM_GL_SPIDER_H
#define STIM_GL_SPIDER_H
|
98eecaa9
David Mayerich
VS and win32 updates
|
4
|
//#include <GL/glew.h>
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
5
|
#include <GL/glut.h>
|
a9b45efe
Pavel Govyadinov
changes to spider
|
6
7
8
|
#include <cuda.h>
#include <cuda_gl_interop.h>
#include <cudaGL.h>
|
1a456186
Pavel Govyadinov
Added directional...
|
9
|
#include <math.h>
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
10
11
12
13
14
15
16
17
|
#include <stim/gl/gl_texture.h>
#include <stim/visualization/camera.h>
#include <stim/gl/error.h>
#include <stim/math/vector.h>
#include <stim/math/vec3.h>
#include <stim/math/rect.h>
#include <stim/math/matrix.h>
#include <stim/cuda/spider_cost.cuh>
|
7d1d153a
Pavel Govyadinov
fixed the include...
|
18
|
#include <stim/cuda/cudatools/glbind.h>
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
19
|
#include <stim/cuda/arraymath.cuh>
|
c37611a6
Pavel Govyadinov
removed the time ...
|
20
|
#include <stim/cuda/cuda_texture.cuh>
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
21
22
23
|
#include <stim/cuda/cudatools.h>
#include <stim/cuda/ivote.cuh>
#include <stim/visualization/glObj.h>
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
24
|
#include <vector>
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
25
|
#include <stim/cuda/branch_detection.cuh>
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
26
|
#include "../../../volume-spider/fiber.h"
|
23af8e36
Pavel Govyadinov
modified spider t...
|
27
|
#include "../../../volume-spider/glnetwork.h"
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
28
|
#include <stim/visualization/cylinder.h>
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
29
|
#include <stim/cuda/testKernel.cuh>
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
30
31
|
//#include <stim/cuda/testKernel.cuh>
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
32
|
|
42145f38
Pavel Govyadinov
Fixed the issues ...
|
33
34
|
#include <iostream>
#include <fstream>
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
35
36
37
38
39
|
#ifdef TIMING
#include <ctime>
#include <cstdio>
#endif
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
40
41
42
43
44
|
#ifdef TESTING
#include <iostream>
#include <cstdio>
#include <ctime>
#endif
|
42145f38
Pavel Govyadinov
Fixed the issues ...
|
45
|
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
46
|
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
47
48
49
50
|
namespace stim
{
template<typename T>
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
51
|
class gl_spider : public virtual gl_texture<T>
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
52
53
|
{
//doen't use gl_texture really, just needs the GLuint id.
|
4cefeb6d
Pavel Govyadinov
Changes to the re...
|
54
|
//doesn't even need the texture iD really.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
55
|
private:
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
56
|
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
57
|
#ifdef TIMING
|
98eecaa9
David Mayerich
VS and win32 updates
|
58
59
60
61
62
63
64
|
double branch_time;// = 0;
double direction_time;// = 0;
double position_time;// = 0;
double size_time;// = 0;
double cost_time;// = 0;
double network_time;// = 0;
double hit_time;// = 0;
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
65
66
|
#endif
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
67
|
//
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
68
69
|
stim::vec3<float> p; //vector designating the position of the spider.
stim::vec3<float> d; //vector designating the orientation of the spider
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
70
|
//always a unit vector.
|
4fa3f483
Pavel Govyadinov
Fixed the memory ...
|
71
|
stim::vec<float> m; //magnitude of the spider vector.
|
4cefeb6d
Pavel Govyadinov
Changes to the re...
|
72
73
|
//mag[0] = length.
//mag[1] = width.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
74
75
76
|
std::vector<stim::vec3<float> > dV; //A list of all the direction vectors.
std::vector<stim::vec3<float> > pV; //A list of all the position vectors.
std::vector<stim::vec3<float> > mV; //A list of all the size vectors.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
77
78
79
|
stim::matrix<float, 4> cT; //current Transformation matrix
//From tissue space to texture space.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
80
|
GLuint texID;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
81
82
83
84
85
86
87
88
89
|
stim::vec<float> S; //Size of a voxel in the volume.
stim::vec<float> R; //Dimensions of the volume.
//GL and Cuda variables
GLuint dList; //displaylist ID
GLuint fboID; //framebuffer ID
GLuint texbufferID; //texbuffer ID, only necessary for
//cuda aspect of the calculation.
|
6b8621f8
Pavel Govyadinov
stable version
|
90
91
|
GLuint pfboID; //buffer object for position tracking.
GLuint ptexbufferID; //texture object for position tracking.
|
1306fd96
Pavel Govyadinov
minor bug fixes i...
|
92
|
|
6b8621f8
Pavel Govyadinov
stable version
|
93
94
|
GLuint mfboID; //buffer object for magnitude adjustment.
GLuint mtexbufferID; //texture object for magnitude adjustment.
|
035d798f
Pavel Govyadinov
modified the spid...
|
95
|
GLuint bfboID; //buffer object for position adjustment.
|
6b8621f8
Pavel Govyadinov
stable version
|
96
|
GLuint btexbufferID; //buffer object for position adjustment.
|
1306fd96
Pavel Govyadinov
minor bug fixes i...
|
97
|
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
98
|
int numSamples; //The number of templates in the buffer.
|
035d798f
Pavel Govyadinov
modified the spid...
|
99
100
101
|
int numSamplesPos;
int numSamplesMag;
|
98eecaa9
David Mayerich
VS and win32 updates
|
102
|
float stepsize;// = 5.0; //Step size.
|
d06d3dbd
Pavel Govyadinov
stable, pre-major...
|
103
|
// float stepsize = 3.0; //Step size.
|
6b8621f8
Pavel Govyadinov
stable version
|
104
|
int current_cost; //variable to store the cost of the current step.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
105
106
107
|
//Tracing variables.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
108
109
|
std::stack< stim::vec3<float> > seeds; //seed positions.
std::stack< stim::vec3<float> > seedsvecs; //seed directions.
|
6b8621f8
Pavel Govyadinov
stable version
|
110
111
|
std::stack< float > seedsmags; //seed magnitudes.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
112
113
|
std::vector< stim::vec3<float> > cL; //Positions of line currently being traced.
std::vector< stim::vec3<float> > cD; //Direction of line currently being traced.
|
6b8621f8
Pavel Govyadinov
stable version
|
114
|
std::vector< stim::vec<float> > cM; //Magnitude of line currently being traced.
|
23af8e36
Pavel Govyadinov
modified spider t...
|
115
|
|
6b8621f8
Pavel Govyadinov
stable version
|
116
|
stim::glnetwork<float> nt; //object for storing the network.
|
23af8e36
Pavel Govyadinov
modified spider t...
|
117
|
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
118
119
|
stim::vec<float> rev; //reverse vector;
stim::camera camSel;
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
120
121
122
|
stim::vec3<float> ps;
stim::vec3<float> ups;
stim::vec3<float> ds;
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
123
|
|
98eecaa9
David Mayerich
VS and win32 updates
|
124
125
|
//static const float t_length = 16.0;
float t_length;
|
c37611a6
Pavel Govyadinov
removed the time ...
|
126
127
128
129
130
|
//cuda texture variables that keep track of the binding.
stim::cuda::cuda_texture t_dir;
stim::cuda::cuda_texture t_pos;
stim::cuda::cuda_texture t_mag;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
131
132
|
|
6b8621f8
Pavel Govyadinov
stable version
|
133
134
135
136
|
//--------------------------------------------------------------------------//
//-------------------------------PRIVATE METHODS----------------------------//
//--------------------------------------------------------------------------//
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
137
138
139
140
141
142
|
/// Method for finding the best scale for the spider.
/// changes the x, y, z size of the spider to minimize the cost
/// function.
void
findOptimalDirection()
{
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
143
144
145
|
#ifdef TIMING
gpuStartTimer();
#endif
|
ac430567
Pavel Govyadinov
comments comments...
|
146
147
|
setMatrix(); //create the transformation matrix.
glCallList(dList); //move the templates to p, d, m.
|
c37611a6
Pavel Govyadinov
removed the time ...
|
148
149
|
glFinish();
// glFlush();
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
150
151
152
|
#ifdef TIMING
direction_time += gpuStopTimer();
#endif
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
153
|
#ifdef TESTING
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
154
|
// test(texbufferID, GL_TEXTURE_2D,2*t_length,numSamples*t_length, "Final_Cost_Direction.bmp");
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
155
|
#endif
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
156
|
|
c37611a6
Pavel Govyadinov
removed the time ...
|
157
|
int best = getCost(t_dir.getTexture(), t_dir.getAuxArray() ,numSamples); //find min cost.
|
ac430567
Pavel Govyadinov
comments comments...
|
158
|
stim::vec<float> next( //find next vector.
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
159
|
dV[best][0]*S[0]*R[0],
|
5eeaf941
Pavel Govyadinov
changer to the ba...
|
160
161
|
dV[best][1]*S[1]*R[1],
dV[best][2]*S[2]*R[2],
|
d4721000
Pavel Govyadinov
changes with debu...
|
162
|
0);
|
ac430567
Pavel Govyadinov
comments comments...
|
163
|
next = (cT*next).norm(); //find next vector.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
164
165
166
|
setPosition( p[0]+next[0]*m[0]/stepsize,
p[1]+next[1]*m[0]/stepsize,
p[2]+next[2]*m[0]/stepsize);
|
556c4e15
Pavel Govyadinov
Changed the handl...
|
167
|
setDirection(next[0], next[1], next[2]);
|
ac430567
Pavel Govyadinov
comments comments...
|
168
|
//move forward and change direction.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
169
170
|
}
|
6b8621f8
Pavel Govyadinov
stable version
|
171
172
|
/// Method for finding the best d (direction) for the spider.
/// Not sure if necessary since the next p (position) for the spider
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
173
|
/// will be at d * m.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
174
175
176
|
void
findOptimalPosition()
{
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
177
178
179
|
#ifdef TIMING
gpuStartTimer();
#endif
|
ac430567
Pavel Govyadinov
comments comments...
|
180
181
|
setMatrix(); //create the transformation matrix.
glCallList(dList+1); //move the templates to p, d, m.
|
c37611a6
Pavel Govyadinov
removed the time ...
|
182
183
|
glFinish();
// glFlush();
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
184
185
186
187
|
#ifdef TIMING
position_time += gpuStopTimer();
#endif
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
188
|
#ifdef TESTING
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
189
|
// test(ptexbufferID, GL_TEXTURE_2D,2*t_length, numSamplesPos*t_length, "Final_Cost_Position.bmp");
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
190
|
#endif
|
c37611a6
Pavel Govyadinov
removed the time ...
|
191
|
int best = getCost(t_pos.getTexture(), t_pos.getAuxArray(), numSamplesPos); //find min cost.
|
ae05c3e4
Pavel Govyadinov
Found an error wi...
|
192
|
// std::cerr << best << std::endl;
|
ac430567
Pavel Govyadinov
comments comments...
|
193
|
stim::vec<float> next( //find next position.
|
3f15dade
Pavel Govyadinov
changed the plane...
|
194
195
196
197
|
pV[best][0],
pV[best][1],
pV[best][2],
1);
|
ac430567
Pavel Govyadinov
comments comments...
|
198
|
next = cT*next; //find next position.
|
d4721000
Pavel Govyadinov
changes with debu...
|
199
200
|
setPosition(
next[0]*S[0]*R[0],
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
201
|
next[1]*S[1]*R[1],
|
d4721000
Pavel Govyadinov
changes with debu...
|
202
|
next[2]*S[2]*R[2]
|
ac430567
Pavel Govyadinov
comments comments...
|
203
|
); //adjust position.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
204
205
|
}
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
206
207
208
|
/// Method for finding the best scale for the spider.
/// changes the x, y, z size of the spider to minimize the cost
/// function. */
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
209
210
211
|
void
findOptimalScale()
{
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
212
213
214
|
#ifdef TIMING
gpuStartTimer();
#endif
|
ac430567
Pavel Govyadinov
comments comments...
|
215
216
|
setMatrix(); //create the transformation.
glCallList(dList+2); //move the templates to p, d, m.
|
c37611a6
Pavel Govyadinov
removed the time ...
|
217
218
|
glFinish();
// glFlush();
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
219
220
221
|
#ifdef TIMING
size_time += gpuStopTimer();
#endif
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
222
|
#ifdef TESTING
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
223
|
// test(mtexbufferID, GL_TEXTURE_2D, 2*t_length, numSamplesMag*t_length, "Final_Cost_Position.bmp");
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
224
|
#endif
|
c37611a6
Pavel Govyadinov
removed the time ...
|
225
|
int best = getCost(t_mag.getTexture(), t_mag.getAuxArray(), numSamplesMag); //get best cost.
|
ac430567
Pavel Govyadinov
comments comments...
|
226
|
setMagnitude(m[0]*mV[best][0]); //adjust the magnitude.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
227
228
|
}
|
6b8621f8
Pavel Govyadinov
stable version
|
229
|
|
ac430567
Pavel Govyadinov
comments comments...
|
230
231
|
///subject to change.
///finds branches.
|
27194b56
Pavel Govyadinov
major bug fixes, ...
|
232
|
///depreciated
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
233
234
235
|
void
branchDetection()
{
|
5eeaf941
Pavel Govyadinov
changer to the ba...
|
236
|
setMatrix();
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
237
|
glCallList(dList+3);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
238
239
|
std::vector< stim::vec<float> > result = find_branch(
btexbufferID, GL_TEXTURE_2D, 16, 216);
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
240
|
stim::vec3<float> size(S[0]*R[0], S[1]*R[1], S[2]*R[2]);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
241
242
243
244
|
if(!result.empty())
{
for(int i = 1; i < result.size(); i++)
{
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
245
246
247
248
249
|
stim::vec<float> cylp(
0.5 * cos(2*M_PI*(result[i][1])),
0.5 * sin(2*M_PI*(result[i][1])),
result[i][0]-0.5,
1.0);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
250
|
cylp = cT*cylp;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
251
|
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
252
|
stim::vec3<float> vec(
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
253
|
cylp[0]*S[0]*R[0],
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
254
255
|
cylp[1]*S[1]*R[1],
cylp[2]*S[2]*R[2]);
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
256
|
stim::vec3<float> seeddir(-p[0] + cylp[0]*S[0]*R[0],
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
257
258
259
|
-p[1] + cylp[1]*S[1]*R[1],
-p[2] + cylp[2]*S[2]*R[2]);
seeddir = seeddir.norm();
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
260
|
float seedm = m[0];
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
261
|
// Uncomment for global run
|
1306fd96
Pavel Govyadinov
minor bug fixes i...
|
262
|
if(
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
263
264
265
266
267
268
|
!(vec[0] > size[0] || vec[1] > size[1]
|| vec[2] > size[2] || vec[0] < 0
|| vec[1] < 0 || vec[2] < 0))
{
setSeed(vec);
setSeedVec(seeddir);
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
269
|
setSeedMag(seedm);
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
270
|
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
271
272
|
}
}
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
273
274
275
|
}
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
276
|
|
27194b56
Pavel Govyadinov
major bug fixes, ...
|
277
278
|
///finds all the branches in the a given fiber.
///using LoG method.
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
279
280
281
|
void
branchDetection2(int n = 8, int l_template = 8, int l_square = 8)
{
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
282
283
284
285
|
#ifdef TIMING
gpuStartTimer();
#endif
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
286
287
288
289
290
291
|
if(cL.size() < 4){}
else{
setMatrix(1);
DrawLongCylinder(n, l_template, l_square);
stim::cylinder<float> cyl(cL, cM);
std::vector< stim::vec<float> > result = find_branch(btexbufferID, GL_TEXTURE_2D, n*l_square, (cL.size()-1)*l_template);
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
292
|
stim::vec3<float> size(S[0]*R[0], S[1]*R[1], S[2]*R[2]);
|
8c4f5d84
Pavel Govyadinov
fixed the issue w...
|
293
|
float pval;
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
294
295
296
297
|
if(!result.empty())
{
for(int i = 0; i < result.size(); i++)
{
|
8c4f5d84
Pavel Govyadinov
fixed the issue w...
|
298
299
300
301
302
303
|
int id = result[i][2];
if(fmod(result[i][2], id) != 0 && id != 0)
{
pval = ((cyl.getl(id+1)-cyl.getl(id))*
(fmod(result[i][2], id))+cyl.getl(id))/cyl.getl(cL.size()-1);
|
8c4f5d84
Pavel Govyadinov
fixed the issue w...
|
304
305
306
307
308
309
310
311
312
|
}
else if(id == 0)
{
pval = (cyl.getl(id+1)*result[i][2])/cyl.getl(cL.size()-1);
}
else
{
pval = (cyl.getl(id)/cyl.getl(cL.size()-1));
}
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
313
314
|
stim::vec3<float> v = cyl.surf(pval, result[i][0]);
stim::vec3<float> di = cyl.p(pval);
|
8c4f5d84
Pavel Govyadinov
fixed the issue w...
|
315
|
float rad = cyl.r(pval);
|
8c4f5d84
Pavel Govyadinov
fixed the issue w...
|
316
317
318
319
320
321
322
323
324
|
if(
!(v[0] > size[0] || v[1] > size[1]
|| v[2] > size[2] || v[0] < 0
|| v[1] < 0 || v[2] < 0))
{
setSeed(v);
setSeedVec((v-di).norm());
setSeedMag(rad);
}
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
325
326
|
}
}
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
327
|
}
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
328
329
330
|
#ifdef TIMING
branch_time += gpuStopTimer();
#endif
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
331
332
|
}
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
333
334
335
336
337
338
339
340
341
342
343
344
345
|
float uniformRandom()
{
return ( (float)(rand()))/( (float)(RAND_MAX));
}
float normalRandom()
{
float u1 = uniformRandom();
float u2 = uniformRandom();
return cos(2.0*atan(1.0)*u2)*sqrt(-1.0*log(u1));
}
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
346
|
stim::vec3<float> uniformRandVector()
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
347
|
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
348
|
stim::vec3<float> r(uniformRandom(), uniformRandom(), 1.0);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
349
350
351
|
return r;
}
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
352
|
stim::vec3<float> normalRandVector()
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
353
|
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
354
|
stim::vec3<float> r(normalRandom(), normalRandom(), 1.0);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
355
356
357
|
return r;
}
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
358
359
360
361
362
|
//--------------------------------------------------------------------------//
//---------------------TEMPLATE CREATION METHODS----------------------------//
//--------------------------------------------------------------------------//
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
363
364
|
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
365
366
|
///@param solidAngle, the size of the arc to sample.
///Method for populating the vector arrays with sampled vectors.
|
6b8621f8
Pavel Govyadinov
stable version
|
367
368
369
|
///Objects created are rectangles the with the created directions.
///All points are sampled from a texture.
///Stored in a display list.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
370
|
///uses the default d vector <0,0,1>
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
371
|
void
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
372
|
genDirectionVectors(float solidAngle = 5/M_PI*4)
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
373
|
{
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
374
|
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
375
|
//Set up the vectors necessary for Rectangle creation.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
376
377
378
379
|
stim::vec3<float> Y(1.0,0.0,0.0); //orthogonal vec.
stim::vec3<float> pos(0.0,0.0,0.0);
stim::vec3<float> mag(1.0, 1.0, 1.0);
stim::vec3<float> dir(0.0, 0.0, 1.0);
|
22e7d0c5
Pavel Govyadinov
Minor changes in ...
|
380
|
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
381
382
383
|
float PHI[2], Z[2], range;
PHI[0] = solidAngle/2;
PHI[1] = asin(0);
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
384
|
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
385
386
387
388
389
390
|
Z[0] = cos(PHI[0]);
Z[1] = cos(PHI[1]);
range = Z[0] - Z[1];
float z, theta, phi;
|
ac430567
Pavel Govyadinov
comments comments...
|
391
|
glNewList(dList, GL_COMPILE);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
392
393
394
395
396
|
for(int i = 0; i < numSamples; i++)
{
z = uniformRandom()*range + Z[1];
theta = uniformRandom()*2*M_PI;
phi = acos(z);
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
397
398
|
stim::vec3<float> sph(1, theta, phi);
stim::vec3<float> cart = sph.sph2cart();
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
399
400
401
402
403
404
|
dV.push_back(cart);
if(cos(Y.dot(cart)) < 0.087)
{
Y[0] = 0.0; Y[1] = 1.0;
}else{
Y[0] = 1.0; Y[1] = 0.0;
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
405
|
}
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
406
407
408
409
410
411
412
|
hor = stim::rect<float>(mag,
pos, cart,
((Y.cross(cart)).cross(cart)).norm());
ver = stim::rect<float>(mag,
pos, cart,
hor.n());
UpdateBuffer(0.0, 0.0+i*t_length);
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
413
|
}
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
414
|
glEndList();
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
415
|
}
|
2a18be6d
Pavel Govyadinov
New comments and ...
|
416
|
|
ac430567
Pavel Govyadinov
comments comments...
|
417
|
///@param float delta, How much the rectangles vary in position.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
418
|
///Method for populating the buffer with the sampled texture.
|
ac430567
Pavel Govyadinov
comments comments...
|
419
420
421
|
///Objects created are rectangles the with the created positions.
///All points are sampled from a texture.
///Stored in a display list.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
422
|
///uses the default vector <0,0,0>
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
423
|
void
|
4191c034
Pavel Govyadinov
minor:bug fixes. ...
|
424
|
genPositionVectors(float delta = 0.4)
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
425
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
426
|
//Set up the vectors necessary for Rectangle creation.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
427
428
429
430
|
stim::vec3<float> Y(1.0,0.0,0.0); //orthogonal vec.
stim::vec3<float> pos(0.0,0.0,0.0);
stim::vec3<float> mag(1.0, 1.0, 1.0);
stim::vec3<float> dir(0.0, 0.0, 1.0);
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
431
432
|
//Set up the variable necessary for vector creation.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
433
|
glNewList(dList+1, GL_COMPILE);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
434
435
|
for(int i = 0; i < numSamplesPos; i++)
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
436
|
stim::vec3<float> temp = uniformRandVector();
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
437
438
439
440
441
442
443
444
445
446
447
|
temp = temp*delta*2.0 - delta/2.0;
temp[2] = 0.0;
pV.push_back(temp);
hor = stim::rect<float>(mag,
temp, dir,
((Y.cross(d)).cross(d))
.norm());
ver = stim::rect<float>(mag,
temp, dir,
hor.n());
UpdateBuffer(0.0, 0.0+i*t_length);
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
448
|
}
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
449
|
glEndList();
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
450
451
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
452
|
///@param float delta, How much the rectangles are allowed to expand.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
453
|
///Method for populating the buffer with the sampled texture.
|
ac430567
Pavel Govyadinov
comments comments...
|
454
455
456
|
///Objects created are rectangles the with the created sizes.
///All points are sampled from a texture.
///Stored in a display list.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
457
|
///uses the default m <1,1,0>
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
458
|
void
|
79a9bf3f
Pavel Govyadinov
new implementatio...
|
459
|
genMagnitudeVectors(float delta = 0.70)
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
460
461
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
462
|
//Set up the vectors necessary for Rectangle creation.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
463
464
465
466
|
stim::vec3<float> Y(1.0, 0.0, 0.0); //orthogonal vec.
stim::vec3<float> pos(0.0, 0.0, 0.0);
stim::vec3<float> mag(1.0, 1.0, 1.0);
stim::vec3<float> dir(0.0, 0.0, 1.0);
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
467
468
|
//Set up the variable necessary for vector creation.
|
035d798f
Pavel Govyadinov
modified the spid...
|
469
|
int dim = (sqrt(numSamplesMag)-1)/2;
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
470
471
|
float min = 1.0-delta;
float max = 1.0+delta;
|
035d798f
Pavel Govyadinov
modified the spid...
|
472
|
float step = (max-min)/(numSamplesMag-1);
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
473
|
float factor;
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
474
|
stim::vec3<float> temp(0.0,0.0,0.0);
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
475
|
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
476
|
glNewList(dList+2, GL_COMPILE);
|
035d798f
Pavel Govyadinov
modified the spid...
|
477
|
for(int i = 0; i < numSamplesMag; i++){
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
478
|
//Create linear index
|
d4721000
Pavel Govyadinov
changes with debu...
|
479
|
factor = (min+step*i)*mag[0];
|
db3c28c9
Pavel Govyadinov
Implemented glDis...
|
480
|
temp = factor;
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
481
482
483
484
485
486
487
488
|
mV.push_back(temp);
hor = stim::rect<float>(temp,
pos, dir,
((Y.cross(d)).cross(d))
.norm());
ver = stim::rect<float>(temp,
pos, dir,
hor.n());
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
489
|
UpdateBuffer(0.0, 0.0+i*t_length);
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
490
|
CHECK_OPENGL_ERROR
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
491
|
}
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
492
|
glEndList();
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
493
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
494
495
496
497
498
|
///@param float v_x x-coordinate in buffer-space,
///@param float v_y y-coordinate in buffer-space.
///Samples the texture space.
///places a sample in the provided coordinates of bufferspace.
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
499
500
501
|
void
UpdateBuffer(float v_x, float v_y)
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
502
503
504
505
|
stim::vec3<float>p1;
stim::vec3<float>p2;
stim::vec3<float>p3;
stim::vec3<float>p4;
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
506
|
p1 = hor.p(1,1);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
507
|
p2 = hor.p(1,0);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
508
|
p3 = hor.p(0,0);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
509
|
p4 = hor.p(0,1);
|
5e7c7581
Pavel Govyadinov
Debugging build f...
|
510
|
glBegin(GL_QUADS);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
511
|
glTexCoord3f(
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
512
513
514
515
|
p1[0],
p1[1],
p1[2]
);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
516
517
|
glVertex2f(v_x,v_y);
glTexCoord3f(
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
518
519
520
521
|
p2[0],
p2[1],
p2[2]
);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
522
|
glVertex2f(v_x+t_length, v_y);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
523
|
glTexCoord3f(
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
524
525
526
527
|
p3[0],
p3[1],
p3[2]
);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
528
|
glVertex2f(v_x+t_length, v_y+t_length);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
529
|
glTexCoord3f(
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
530
531
532
|
p4[0],
p4[1],
p4[2]
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
533
|
);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
534
|
glVertex2f(v_x, v_y+t_length);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
535
|
glEnd();
|
5e7c7581
Pavel Govyadinov
Debugging build f...
|
536
|
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
537
|
p1 = ver.p(1,1);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
538
|
p2 = ver.p(1,0);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
539
|
p3 = ver.p(0,0);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
540
|
p4 = ver.p(0,1);
|
5e7c7581
Pavel Govyadinov
Debugging build f...
|
541
|
glBegin(GL_QUADS);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
542
|
glTexCoord3f(
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
543
544
545
546
|
p1[0],
p1[1],
p1[2]
);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
547
|
glVertex2f(v_x+t_length, v_y);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
548
|
glTexCoord3f(
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
549
550
551
552
|
p2[0],
p2[1],
p2[2]
);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
553
|
glVertex2f(v_x+2.0*t_length, v_y);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
554
|
glTexCoord3f(
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
555
556
557
558
|
p3[0],
p3[1],
p3[2]
);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
559
|
glVertex2f(v_x+2.0*t_length, v_y+t_length);
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
560
|
glTexCoord3f(
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
561
562
563
564
|
p4[0],
p4[1],
p4[2]
);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
565
|
glVertex2f(v_x+t_length, v_y+t_length);
|
5e7c7581
Pavel Govyadinov
Debugging build f...
|
566
|
glEnd();
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
567
|
}
|
2a18be6d
Pavel Govyadinov
New comments and ...
|
568
|
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
569
|
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
570
|
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
571
572
573
|
//--------------------------------------------------------------------------//
//--------------------------------GL METHODS--------------------------------//
//--------------------------------------------------------------------------//
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
574
|
|
ac430567
Pavel Govyadinov
comments comments...
|
575
576
577
578
|
///@param uint width sets the width of the buffer.
///@param uint height sets the height of the buffer.
///@param GLuint &textureID gives the texture ID of the texture to be initialized.
///@param GLuint &framebufferID gives the buffer ID of the texture to be initialized.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
579
|
///Function for setting up the 2D buffer that stores the samples.
|
ac430567
Pavel Govyadinov
comments comments...
|
580
|
///Initiates and sets parameters.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
581
|
void
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
582
583
|
GenerateFBO(unsigned int width, unsigned int height, GLuint &textureID, GLuint &framebufferID)
{
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
584
|
glDeleteFramebuffers(1, &framebufferID);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
585
586
587
|
glGenFramebuffers(1, &framebufferID);
glBindFramebuffer(GL_FRAMEBUFFER, framebufferID);
int numChannels = 1;
|
c37611a6
Pavel Govyadinov
removed the time ...
|
588
|
// unsigned char* texels = new unsigned char[width * height * numChannels];
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
589
590
|
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
|
ac430567
Pavel Govyadinov
comments comments...
|
591
592
|
//Textures repeat and use linear interpolation, luminance format.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
593
594
595
596
597
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
|
c37611a6
Pavel Govyadinov
removed the time ...
|
598
599
|
width, height, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
// delete[] texels;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
600
601
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glBindTexture(GL_TEXTURE_2D, 0);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
602
603
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
604
605
|
///@param uint width sets the width of the buffer.
///@param uint height sets the height of the buffer.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
606
607
|
///Function for setting up the 2D buffer that stores the samples.
void
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
608
609
610
611
612
|
GenerateFBO(unsigned int width, unsigned int height)
{
glGenFramebuffers(1, &fboID);
glBindFramebuffer(GL_FRAMEBUFFER, fboID);
int numChannels = 1;
|
c37611a6
Pavel Govyadinov
removed the time ...
|
613
|
// unsigned char* texels = new unsigned char[width * height * numChannels];
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
614
615
|
glGenTextures(1, &texbufferID);
glBindTexture(GL_TEXTURE_2D, texbufferID);
|
ac430567
Pavel Govyadinov
comments comments...
|
616
617
|
//Textures repeat and use linear interpolation, luminance format.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
618
619
620
621
622
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
|
c37611a6
Pavel Govyadinov
removed the time ...
|
623
624
|
width, height, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
// delete[] texels;
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
625
626
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glBindTexture(GL_TEXTURE_2D, 0);
|
ac430567
Pavel Govyadinov
comments comments...
|
627
|
CHECK_OPENGL_ERROR
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
628
|
}
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
629
|
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
630
|
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
631
|
///IF type == 0
|
ac430567
Pavel Govyadinov
comments comments...
|
632
|
///Method for using the gl manipulation to align templates from
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
633
|
///Template space (-0.5 0.5) to Texture space (0.0, 1.0),
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
634
|
///Based on the p of the spider in real space (arbitrary).
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
635
636
637
638
|
///IF type == 1
///Method for using the gl manipulation to set up a matrix
///To transform from tissue space into texture space.
|
ac430567
Pavel Govyadinov
comments comments...
|
639
|
///All transformation happen in glMatrixMode(GL_TEXTURE).
|
ac430567
Pavel Govyadinov
comments comments...
|
640
|
///All transformation happen in glMatrixMode(GL_TEXTURE).
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
641
|
void setMatrix(int type = 0)
|
5f81932b
David Mayerich
restored Pavel's ...
|
642
|
{
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
643
644
645
646
647
648
|
if(type == 0)
{
float curTrans[16]; //array to store the matrix values.
stim::vec<float> rot = getRotation(d); //get the rotation parameters for the current direction vector.
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
|
d4721000
Pavel Govyadinov
changes with debu...
|
649
|
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
|
//Scale by the voxel size and number of slices.
glScalef(1.0/S[0]/R[0], 1.0/S[1]/R[1], 1.0/S[2]/R[2]);
//translate to the current position of the spider in the texture.
glTranslatef(p[0],
p[1],
p[2]);
//rotate to the current direction of the spider.
glRotatef(rot[0], rot[1], rot[2], rot[3]);
//scale to the magnitude of the spider.
glScalef(m[0],
m[0],
m[0]);
//get and store the current transformation matrix for later use.
glGetFloatv(GL_TEXTURE_MATRIX, curTrans);
cT.set(curTrans);
// printTransform();
CHECK_OPENGL_ERROR
//revert back to default gl mode.
glMatrixMode(GL_MODELVIEW);
}
else if(type == 1)
{
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glScalef(1.0/S[0]/R[0], 1.0/S[1]/R[1], 1.0/S[2]/R[2]);
glMatrixMode(GL_MODELVIEW);
}
|
5f81932b
David Mayerich
restored Pavel's ...
|
678
|
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
679
|
|
ac430567
Pavel Govyadinov
comments comments...
|
680
681
|
///Method for controling the buffer and texture binding.
///Clears the buffer upon binding.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
682
|
void
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
683
|
Bind()
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
684
|
{
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
|
glBindFramebuffer(GL_FRAMEBUFFER, fboID);//set up GL buffer
glFramebufferTexture2D(
GL_FRAMEBUFFER,
GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D,
texbufferID,
0);
glBindFramebuffer(GL_FRAMEBUFFER, fboID);
GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
glDrawBuffers(1, DrawBuffers);
glBindTexture(GL_TEXTURE_2D, texbufferID);
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
702
703
|
glViewport(0,0,2.0*t_length, numSamples*t_length);
gluOrtho2D(0.0,2.0*t_length,0.0,numSamples*t_length);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
704
705
706
707
708
709
|
glEnable(GL_TEXTURE_3D);
glBindTexture(GL_TEXTURE_3D, texID);
CHECK_OPENGL_ERROR
}
|
ac430567
Pavel Govyadinov
comments comments...
|
710
711
712
713
714
|
///Method for controling the buffer and texture binding.
///Clears the buffer upon binding.
///@param GLuint &textureID, texture to be bound.
///@param GLuint &framebufferID, framebuffer used for storage.
///@param int nSamples, number of rectanges to create.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
715
|
void
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
716
|
Bind(GLuint &textureID, GLuint &framebufferID, int nSamples, float len = 8.0)
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
717
|
{
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
718
|
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
719
|
glBindFramebuffer(GL_FRAMEBUFFER, framebufferID);//set up GL buffer
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
720
721
722
723
724
725
|
glFramebufferTexture2D(
GL_FRAMEBUFFER,
GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D,
textureID,
0);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
726
|
glBindFramebuffer(GL_FRAMEBUFFER, framebufferID);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
727
728
|
GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
glDrawBuffers(1, DrawBuffers);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
729
|
glBindTexture(GL_TEXTURE_2D, textureID);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
730
731
732
733
734
735
736
737
738
739
740
|
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport(0,0,2.0*len, nSamples*len);
gluOrtho2D(0.0,2.0*len,0.0,nSamples*len);
glEnable(GL_TEXTURE_3D);
glBindTexture(GL_TEXTURE_3D, texID);
CHECK_OPENGL_ERROR
}
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
741
|
|
ac430567
Pavel Govyadinov
comments comments...
|
742
|
///Unbinds all texture resources.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
743
744
745
746
747
748
749
750
751
752
753
754
755
|
void
Unbind()
{
//Finalize GL_buffer
glBindTexture(GL_TEXTURE_3D, 0);
CHECK_OPENGL_ERROR
glBindTexture(GL_TEXTURE_2D, 0);
CHECK_OPENGL_ERROR
glBindFramebuffer(GL_FRAMEBUFFER, 0);
CHECK_OPENGL_ERROR
glDisable(GL_TEXTURE_3D);
CHECK_OPENGL_ERROR
}
|
ac430567
Pavel Govyadinov
comments comments...
|
756
757
758
759
760
761
762
763
764
|
///Makes the spider take a step.
///starting with the current p, d, m, find the next optimal p, d, m.
///Performs the branch detection on each step.
int
StepP()
{
Bind();
CHECK_OPENGL_ERROR
|
ac430567
Pavel Govyadinov
comments comments...
|
765
766
767
768
|
findOptimalDirection();
findOptimalPosition();
findOptimalScale();
Unbind();
|
035d798f
Pavel Govyadinov
modified the spid...
|
769
|
Bind(btexbufferID, bfboID, 27);
|
ac430567
Pavel Govyadinov
comments comments...
|
770
771
|
branchDetection();
Unbind();
|
ac430567
Pavel Govyadinov
comments comments...
|
772
773
774
|
return current_cost;
}
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
775
|
|
5f81932b
David Mayerich
restored Pavel's ...
|
776
|
|
42145f38
Pavel Govyadinov
Fixed the issues ...
|
777
778
779
780
781
|
//--------------------------------------------------------------------------//
//--------------------------------CUDA METHODS------------------------------//
//--------------------------------------------------------------------------//
|
42145f38
Pavel Govyadinov
Fixed the issues ...
|
782
|
|
ac430567
Pavel Govyadinov
comments comments...
|
783
784
785
|
///Entry-point into the cuda code for calculating the cost of a given samples array (in texture form)
///finds the minimum cost and sets the current_cost to that value.
/// and returns the index of the template with the minimal cost.
|
42145f38
Pavel Govyadinov
Fixed the issues ...
|
786
787
788
|
int
getCost()
{
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
789
|
stim::vec<int> cost =
|
c37611a6
Pavel Govyadinov
removed the time ...
|
790
|
// stim::cuda::get_cost(texbufferID, GL_TEXTURE_2D, numSamples);
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
791
|
cudaDeviceSynchronize();
|
c4887649
Pavel Govyadinov
fixed a significa...
|
792
|
current_cost = cost[1];
|
edd4ab2d
Pavel Govyadinov
Cleaned up more a...
|
793
|
return cost[0];
|
a9f956be
Pavel Govyadinov
Fixed the cost fu...
|
794
795
|
}
|
c37611a6
Pavel Govyadinov
removed the time ...
|
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
|
// int
// getCost(GLuint tID, int n)
// {
// #ifdef TIMING
// gpuStartTimer();
// #endif
// stim::vec<int> cost =
// stim::cuda::get_cost(tID, GL_TEXTURE_2D, n, 2*t_length, t_length);
// #ifdef TIMING
// cost_time += gpuStopTimer();
// #endif
// current_cost = cost[1];
// return cost[0];
// }
|
035d798f
Pavel Govyadinov
modified the spid...
|
811
|
int
|
c37611a6
Pavel Govyadinov
removed the time ...
|
812
|
getCost(cudaTextureObject_t tObj, float* result, int n)
|
035d798f
Pavel Govyadinov
modified the spid...
|
813
|
{
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
814
815
|
#ifdef TIMING
gpuStartTimer();
|
035d798f
Pavel Govyadinov
modified the spid...
|
816
817
|
#endif
stim::vec<int> cost =
|
c37611a6
Pavel Govyadinov
removed the time ...
|
818
|
stim::cuda::get_cost(tObj, result, n, 2*t_length, t_length);
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
819
820
|
#ifdef TIMING
cost_time += gpuStopTimer();
|
035d798f
Pavel Govyadinov
modified the spid...
|
821
822
823
824
|
#endif
current_cost = cost[1];
return cost[0];
}
|
ac430567
Pavel Govyadinov
comments comments...
|
825
|
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
826
|
public:
|
ac430567
Pavel Govyadinov
comments comments...
|
827
828
829
830
831
832
|
///ininializes the cuda device and environment.
void
initCuda()
{
stim::cudaSetDevice();
|
ac430567
Pavel Govyadinov
comments comments...
|
833
834
835
|
}
//horizonal rectangle forming the spider.
|
13c2a7d4
Pavel Govyadinov
some changes to t...
|
836
|
stim::rect<float> hor;
|
ac430567
Pavel Govyadinov
comments comments...
|
837
|
//vectical rectangle forming the spider.
|
13c2a7d4
Pavel Govyadinov
some changes to t...
|
838
839
|
stim::rect<float> ver;
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
840
|
//Timing variables.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
841
842
|
#ifdef TESTING
std::clock_t start;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
843
844
|
#endif
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
845
846
847
848
849
|
//--------------------------------------------------------------------------//
//-----------------------------CONSTRUCTORS---------------------------------//
//--------------------------------------------------------------------------//
|
ac430567
Pavel Govyadinov
comments comments...
|
850
851
|
///@param int samples, the number of samples this spider is going to use.
///Best results if samples is can create a perfect root.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
852
|
///Default Constructor
|
2a18be6d
Pavel Govyadinov
New comments and ...
|
853
|
gl_spider
|
3f15dade
Pavel Govyadinov
changed the plane...
|
854
|
(int samples = 1089, int samplespos = 441,int samplesmag = 144)
|
2a18be6d
Pavel Govyadinov
New comments and ...
|
855
|
{
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
856
|
// std::cout << "I ran this constructor" << std::endl;
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
857
858
859
860
861
|
p = stim::vec3<float>(0.0, 0.0, 0.0);
d = stim::vec3<float>(0.0, 0.0, 1.0);
m = stim::vec<float>(1.0, 1.0);
S = stim::vec3<float>(1.0, 1.0, 1.0);
R = stim::vec3<float>(1.0, 1.0, 1.0);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
862
|
// std::cout << samples << std::endl;
|
2a18be6d
Pavel Govyadinov
New comments and ...
|
863
|
numSamples = samples;
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
864
|
// std::cout << numSamples << std::endl;
|
035d798f
Pavel Govyadinov
modified the spid...
|
865
866
|
numSamplesPos = samplespos;
numSamplesMag = samplesmag;
|
4cefeb6d
Pavel Govyadinov
Changes to the re...
|
867
868
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
869
870
871
872
873
874
875
876
877
|
///Position constructor: floats.
///@param float pos_x, position x.
///@param float pos_y, position y.
///@param float pos_z, position z.
///@param float dir_x, direction x.
///@param float dir_y, direction y.
///@param float dir_z, direction z.
///@param float mag_x, size of the vector.
///@param int samples, number of templates this spider is going to use.
|
13c2a7d4
Pavel Govyadinov
some changes to t...
|
878
879
|
gl_spider
(float pos_x, float pos_y, float pos_z, float dir_x, float dir_y, float dir_z,
|
3f15dade
Pavel Govyadinov
changed the plane...
|
880
|
float mag_x, int numsamples = 1089, int numsamplespos = 441, int numsamplesmag =144)
|
13c2a7d4
Pavel Govyadinov
some changes to t...
|
881
|
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
882
883
884
885
886
|
p = stim::vec3<float>(pos_x, pos_y, pos_z);
d = stim::vec3<float>(dir_x, dir_y, dir_z);
m = stim::vec<float>(mag_x, mag_x, mag_x);
S = stim::vec3<float>(1.0,1.0,1.0);
R = stim::vec3<float>(1.0,1.0,1.0);
|
035d798f
Pavel Govyadinov
modified the spid...
|
887
888
889
|
numSamples = numsamples;
numSamplesPos = numsamplespos;
numSamplesMag = numsamplesmag;
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
890
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
891
892
893
894
895
896
897
|
///Position constructor: vecs of floats.
///@param stim::vec<float> pos, position.
///@param stim::vec<float> dir, direction.
///@param float mag, size of the vector.
///@param int samples, number of templates this spider is going to use.
gl_spider
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
898
|
(stim::vec3<float> pos, stim::vec3<float> dir, float mag, int samples = 1089, int samplesPos = 441, int samplesMag = 144)
|
ac430567
Pavel Govyadinov
comments comments...
|
899
900
901
902
|
{
p = pos;
d = dir;
m = vec<float>(mag, mag, mag);
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
903
904
|
S = vec3<float>(1.0,1.0,1.0);
R = vec3<float>(1.0,1.0,1.0);
|
ac430567
Pavel Govyadinov
comments comments...
|
905
|
numSamples = samples;
|
035d798f
Pavel Govyadinov
modified the spid...
|
906
907
|
numSamplesPos = samplesPos;
numSamplesMag = samplesMag;
|
ac430567
Pavel Govyadinov
comments comments...
|
908
909
910
|
}
///destructor
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
911
912
913
914
915
916
|
~gl_spider
(void)
{
Unbind();
glDeleteTextures(1, &texbufferID);
glDeleteBuffers(1, &fboID);
|
035d798f
Pavel Govyadinov
modified the spid...
|
917
918
|
glDeleteTextures(1, &ptexbufferID);
glDeleteBuffers(1, &pfboID);
|
1306fd96
Pavel Govyadinov
minor bug fixes i...
|
919
|
glDeleteTextures(1, &mtexbufferID);
|
035d798f
Pavel Govyadinov
modified the spid...
|
920
|
glDeleteBuffers(1, &mfboID);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
921
|
glDeleteTextures(1, &btexbufferID);
|
035d798f
Pavel Govyadinov
modified the spid...
|
922
|
glDeleteBuffers(1, &bfboID);
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
923
924
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
925
|
///@param GLuint id, texture that is going to be sampled.
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
926
|
///Attached the spider to the texture with the given GLuint ID.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
927
|
///Samples in the default d acting as the init method.
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
928
|
///Also acts an init.
|
a9b45efe
Pavel Govyadinov
changes to spider
|
929
|
void
|
2a18be6d
Pavel Govyadinov
New comments and ...
|
930
|
attachSpider(GLuint id)
|
a9b45efe
Pavel Govyadinov
changes to spider
|
931
|
{
|
98eecaa9
David Mayerich
VS and win32 updates
|
932
933
934
935
936
937
938
939
940
941
942
943
|
#ifdef TIMING
branch_time = 0;
direction_time = 0;
position_time = 0;
size_time = 0;
cost_time = 0;
network_time = 0;
hit_time = 0;
#endif
stepsize = 3.0;
t_length = 16.0;
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
944
|
srand(100);
|
a9b45efe
Pavel Govyadinov
changes to spider
|
945
|
texID = id;
|
035d798f
Pavel Govyadinov
modified the spid...
|
946
|
//GenerateFBO(16, numSamples*8);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
947
|
GenerateFBO(t_length*2, numSamples*t_length, texbufferID, fboID);
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
948
|
std::cout << numSamples << std::endl;
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
949
950
|
CHECK_OPENGL_ERROR
GenerateFBO(t_length*2, numSamplesPos*t_length, ptexbufferID, pfboID);
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
951
|
std::cout << numSamplesPos << std::endl;
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
952
953
|
CHECK_OPENGL_ERROR
GenerateFBO(t_length*2, numSamplesMag*t_length, mtexbufferID, mfboID);
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
954
|
std::cout << numSamplesMag << std::endl;
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
955
|
CHECK_OPENGL_ERROR
|
035d798f
Pavel Govyadinov
modified the spid...
|
956
|
GenerateFBO(16, 216, btexbufferID, bfboID);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
957
|
CHECK_OPENGL_ERROR
|
c37611a6
Pavel Govyadinov
removed the time ...
|
958
959
960
961
962
963
|
t_dir.MapCudaTexture(texbufferID, GL_TEXTURE_2D);
t_dir.Alloc(numSamples);
t_pos.MapCudaTexture(ptexbufferID, GL_TEXTURE_2D);
t_pos.Alloc(numSamplesPos);
t_mag.MapCudaTexture(mtexbufferID, GL_TEXTURE_2D);
t_mag.Alloc(numSamplesMag);
|
6422f96a
Pavel Govyadinov
minor bug fixes a...
|
964
965
|
// setDims(0.6, 0.6, 1.0);
// setSize(1024.0, 1024.0, 1024.0);
|
5eeaf941
Pavel Govyadinov
changer to the ba...
|
966
|
setMatrix();
|
db3c28c9
Pavel Govyadinov
Implemented glDis...
|
967
|
dList = glGenLists(3);
|
db3c28c9
Pavel Govyadinov
Implemented glDis...
|
968
|
glListBase(dList);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
969
|
Bind(texbufferID, fboID, numSamples, t_length);
|
035d798f
Pavel Govyadinov
modified the spid...
|
970
|
genDirectionVectors(5*M_PI/4);
|
3f15dade
Pavel Govyadinov
changed the plane...
|
971
|
Unbind();
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
972
|
Bind(ptexbufferID, pfboID, numSamplesPos, t_length);
|
035d798f
Pavel Govyadinov
modified the spid...
|
973
|
genPositionVectors();
|
3f15dade
Pavel Govyadinov
changed the plane...
|
974
|
Unbind();
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
975
|
Bind(mtexbufferID, mfboID, numSamplesMag, t_length);
|
035d798f
Pavel Govyadinov
modified the spid...
|
976
|
genMagnitudeVectors();
|
3f15dade
Pavel Govyadinov
changed the plane...
|
977
|
Unbind();
|
035d798f
Pavel Govyadinov
modified the spid...
|
978
|
Bind(btexbufferID, bfboID, 27);
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
979
|
DrawCylinder();
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
980
|
Unbind();
|
a39577bf
Pavel Govyadinov
Changes to the sp...
|
981
|
}
|
5f81932b
David Mayerich
restored Pavel's ...
|
982
|
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
983
984
985
|
//--------------------------------------------------------------------------//
//-----------------------------ACCESS METHODS-------------------------------//
//--------------------------------------------------------------------------//
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
986
|
///Returns the p vector.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
987
|
vec3<float>
|
a39577bf
Pavel Govyadinov
Changes to the sp...
|
988
|
getPosition()
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
989
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
990
|
return p;
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
991
992
|
}
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
993
|
///Returns the d vector.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
994
|
vec3<float>
|
a39577bf
Pavel Govyadinov
Changes to the sp...
|
995
|
getDirection()
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
996
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
997
|
return d;
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
998
999
|
}
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1000
|
///Returns the m vector.
|
4fa3f483
Pavel Govyadinov
Fixed the memory ...
|
1001
|
stim::vec<float>
|
a39577bf
Pavel Govyadinov
Changes to the sp...
|
1002
|
getMagnitude()
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1003
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1004
|
return m;
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1005
1006
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1007
|
///@param stim::vec<float> pos, the new p.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1008
|
///Sets the p vector to input vector pos.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1009
|
void
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1010
|
setPosition(stim::vec3<float> pos)
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1011
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1012
|
p = pos;
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1013
|
}
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
1014
|
|
ac430567
Pavel Govyadinov
comments comments...
|
1015
1016
1017
|
///@param float x x-coordinate.
///@param float y y-coordinate.
///@param float z z-coordinate.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1018
|
///Sets the p vector to the input float coordinates x,y,z.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1019
1020
1021
|
void
setPosition(float x, float y, float z)
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1022
1023
1024
|
p[0] = x;
p[1] = y;
p[2] = z;
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1025
|
}
|
887a3e49
Pavel Govyadinov
fixed some order ...
|
1026
|
|
ac430567
Pavel Govyadinov
comments comments...
|
1027
|
///@param stim::vec<float> dir, the new d.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1028
|
///Sets the d vector to input vector dir.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1029
|
void
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1030
|
setDirection(stim::vec3<float> dir)
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1031
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1032
|
d = dir;
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1033
1034
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1035
1036
1037
|
///@param stim::vec<float> x x-coordinate.
///@param stim::vec<float> y y-coordinate.
///@param stim::vec<float> z z-coordinate.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1038
|
///Sets the d vector to the input float coordinates x,y,z.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1039
1040
1041
|
void
setDirection(float x, float y, float z)
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1042
1043
1044
|
d[0] = x;
d[1] = y;
d[2] = z;
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1045
|
}
|
385d2447
Pavel Govyadinov
Checkpoint: Conve...
|
1046
|
|
ac430567
Pavel Govyadinov
comments comments...
|
1047
|
///@param stim::vec<float> dir, the new d.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1048
|
///Sets the m vector to the input vector mag.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1049
|
void
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1050
|
setMagnitude(stim::vec<float> mag)
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1051
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1052
1053
|
m[0] = mag[0];
m[1] = mag[0];
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1054
1055
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1056
|
///@param float mag, size of the sampled region.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1057
|
///Sets the m vector to the input mag for both templates.
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1058
|
void
|
5f81932b
David Mayerich
restored Pavel's ...
|
1059
|
setMagnitude(float mag)
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1060
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1061
1062
|
m[0] = mag;
m[1] = mag;
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1063
|
}
|
5f81932b
David Mayerich
restored Pavel's ...
|
1064
|
|
ac430567
Pavel Govyadinov
comments comments...
|
1065
1066
1067
1068
|
///@param float x, voxel size in the x direction.
///@param float y, voxel size in the y direction.
///@param float z, voxel size in the z direction.
///Sets the voxel sizes in each direction. necessary for non-standard data.
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1069
1070
1071
1072
1073
1074
1075
1076
|
void
setDims(float x, float y, float z)
{
S[0] = x;
S[1] = y;
S[2] = z;
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1077
1078
1079
|
///@param stim::vec<float> Dims, voxel size.
///Sets the voxel sizes in each direction. necessary for non-standard data.
void
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1080
|
setDims(stim::vec3<float> Dims)
|
ac430567
Pavel Govyadinov
comments comments...
|
1081
1082
1083
1084
1085
1086
1087
1088
|
{
S = Dims;
}
///@param float x, size of the data in the x direction.
///@param float y, size of the data in the y direction.
///@param float z, size of the data in the z direction.
///Sets the data volume sizes in each direction.
|
b710b044
Pavel Govyadinov
Added more tempor...
|
1089
|
void
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1090
|
setSize(float x, float y, float z)
|
b710b044
Pavel Govyadinov
Added more tempor...
|
1091
|
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1092
1093
1094
|
R[0] = x;
R[1] = y;
R[2] = z;
|
b710b044
Pavel Govyadinov
Added more tempor...
|
1095
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1096
1097
1098
1099
|
///@param stim::vec<float> Dims, size of the volume.
///Sets the data volume sizes in each direction.
void
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1100
|
setSize(stim::vec3<float> Siz)
|
ac430567
Pavel Govyadinov
comments comments...
|
1101
1102
1103
|
{
S = Siz;
}
|
b710b044
Pavel Govyadinov
Added more tempor...
|
1104
|
|
ac430567
Pavel Govyadinov
comments comments...
|
1105
1106
1107
1108
|
///@param stim::vec<float> dir, the vector to which we are rotating.
///given a vector to align to, finds the required axis and angle for glRotatef.
///rotates from 0.0, 0.0, 1.0 to dir.
///return is in degrees for use with glRotatef.
|
5eeaf941
Pavel Govyadinov
changer to the ba...
|
1109
|
stim::vec<float>
|
4fa3f483
Pavel Govyadinov
Fixed the memory ...
|
1110
|
getRotation(stim::vec3<float> dir)
|
f304d6de
Pavel Govyadinov
added rotation to...
|
1111
|
{
|
d4721000
Pavel Govyadinov
changes with debu...
|
1112
1113
1114
1115
|
stim::vec<float> out(0.0,0.0,0.0,0.0);
stim::vec<float> from(0.0,0.0,1.0);
out[0] = acos(dir.dot(from))*180/M_PI;
if(out[0] < 1.0){
|
f304d6de
Pavel Govyadinov
added rotation to...
|
1116
1117
1118
1119
1120
|
out[0] = 0.0;
out[1] = 0.0;
out[2] = 0.0;
out[3] = 1.0;
} else {
|
d4721000
Pavel Govyadinov
changes with debu...
|
1121
|
stim::vec<float> temp(0.0, 0.0, 0.0);;
|
4fa3f483
Pavel Govyadinov
Fixed the memory ...
|
1122
1123
|
stim::vec<float> dir1(dir[0], dir[1], dir[2]);
temp = (from.cross(dir1)).norm();
|
f304d6de
Pavel Govyadinov
added rotation to...
|
1124
1125
1126
1127
|
out[1] = temp[0];
out[2] = temp[1];
out[3] = temp[2];
}
|
f304d6de
Pavel Govyadinov
added rotation to...
|
1128
1129
|
return out;
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1130
|
|
ac430567
Pavel Govyadinov
comments comments...
|
1131
|
///@param stim::vec<float> pos, the position of the seed to be added.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1132
1133
1134
|
///Adds a seed to the seed list.
///Assumes that the coordinates passes are in tissue space.
void
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1135
|
setSeed(stim::vec3<float> pos)
|
a9b45efe
Pavel Govyadinov
changes to spider
|
1136
|
{
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1137
|
seeds.push(pos);
|
a9b45efe
Pavel Govyadinov
changes to spider
|
1138
|
}
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1139
|
|
ac430567
Pavel Govyadinov
comments comments...
|
1140
1141
|
///@param stim::vec<float> dir, the direction of the seed to be added.
///Adds a seed to the seed directions list.
|
79a9bf3f
Pavel Govyadinov
new implementatio...
|
1142
|
void
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1143
|
setSeedVec(stim::vec3<float> dir)
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1144
1145
1146
1147
|
{
seedsvecs.push(dir);
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1148
1149
1150
|
///@param float mag, the size of the seed to be added.
///Adds a seed to the seed list.
///Assumes that the coordinates passes are in tissue space.
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1151
1152
|
void
setSeedMag(float mag)
|
79a9bf3f
Pavel Govyadinov
new implementatio...
|
1153
|
{
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1154
|
// std::cout << "sMag: " << mag << std::endl;
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1155
|
seedsmags.push(mag);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1156
|
}
|
79a9bf3f
Pavel Govyadinov
new implementatio...
|
1157
|
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1158
|
|
ac430567
Pavel Govyadinov
comments comments...
|
1159
1160
1161
|
///@param float x, x-position of the seed to be added.
///@param float y, y-position of the seed to be added.
///@param float z, z-position of the seed to be added.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1162
1163
1164
1165
1166
|
///Adds a seed to the seed list.
///Assumes that the coordinates passes are in tissue space.
void
setSeed(float x, float y, float z)
{
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1167
|
// std::cout << "sPos: " << x << " " << y << " " << z << std::endl;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1168
1169
1170
|
seeds.push(stim::vec<float>(x, y, z));
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1171
1172
1173
1174
|
///@param float x, x-direction of the seed to be added.
///@param float y, y-direction of the seed to be added.
///@param float z, z-direction of the seed to be added.
///Adds a seed to the seed directions list.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1175
1176
1177
|
void
setSeedVec(float x, float y, float z)
{
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1178
|
// std::cout << "sDir: " << x << " " << y << " " << z << std::endl;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1179
1180
|
seedsvecs.push(stim::vec<float>(x, y, z));
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1181
1182
|
///Method to get the top of the seed positions stack.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1183
|
stim::vec3<float>
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1184
1185
|
getLastSeed()
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1186
|
stim::vec3<float> tp = seeds.top();
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1187
1188
1189
|
return tp;
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1190
|
///Method to get the top of the seed direction stack.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1191
|
stim::vec3<float>
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1192
1193
|
getLastSeedVec()
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1194
|
stim::vec3<float> tp = seedsvecs.top();
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1195
1196
1197
|
return tp;
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1198
|
///Method to get the top of the seed magnitude stack.
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1199
1200
1201
1202
1203
1204
1205
|
float
getLastSeedMag()
{
float tp = seedsmags.top();
return tp;
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1206
|
///deletes all data associated with the last seed.
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1207
1208
1209
1210
1211
|
void
popSeed()
{
seeds.pop();
seedsvecs.pop();
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1212
|
seedsmags.pop();
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1213
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1214
1215
|
///returns the seeds position stack.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1216
|
std::stack<stim::vec3<float> >
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1217
1218
1219
1220
1221
|
getSeeds()
{
return seeds;
}
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
|
///sets the number of direction templates.
void
setNumberDirectionTemplates(int n)
{
numSamples = n;
}
///sets the number of position templates.
void
setNumberPositionTemplates(int n)
{
numSamplesPos = n;
}
///sets the number of position templates.
void
setNumberSizeTemplates(int n)
{
numSamplesMag = n;
}
#ifdef TIMING
///Returns the timings at the moment the method is called.
///In the following order: Branch, Direction, Position, Size, Cost, Network, Hit_detetion.
std::vector<double>
getTimings()
{
std::vector <double> ret;
ret.resize(7);
ret[0] = branch_time;
ret[1] = direction_time;
ret[2] = position_time;
ret[3] = size_time;
ret[4] = cost_time;
ret[5] = network_time;
ret[6] = hit_time;
return ret;
}
#endif
|
ac430567
Pavel Govyadinov
comments comments...
|
1263
|
///returns true if all seed stacks are empty, else false.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1264
1265
1266
|
bool
Empty()
{
|
ac430567
Pavel Govyadinov
comments comments...
|
1267
|
//return (seeds.empty() && seedsvecs.empty() && seedsmags.empty());
|
1306fd96
Pavel Govyadinov
minor bug fixes i...
|
1268
|
return (seeds.empty() && seedsvecs.empty());
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1269
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1270
1271
1272
|
///@param std::string file:file with variables to populate the seed stacks.
///Adds a seed to the seed list, including the position, direction and magnitude.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
|
///Assumes that the coordinates passes are in tissue space.
void
setSeeds(std::string file)
{
std::ifstream myfile(file.c_str());
string line;
if(myfile.is_open())
{
while (getline(myfile, line))
{
|
ac430567
Pavel Govyadinov
comments comments...
|
1283
1284
|
float x, y, z, u, v, w, m;
myfile >> x >> y >> z >> u >> v >> w >> m;
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1285
|
setSeed(x, y, z);
|
ac430567
Pavel Govyadinov
comments comments...
|
1286
1287
|
setSeedVec(u, v, w);
setSeedMag(m);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1288
1289
1290
1291
1292
|
}
myfile.close();
} else {
std::cerr<<"failed" << std::endl;
}
|
79a9bf3f
Pavel Govyadinov
new implementatio...
|
1293
1294
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1295
|
///Saves the network to a file.
|
79a9bf3f
Pavel Govyadinov
new implementatio...
|
1296
|
void
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1297
|
saveNetwork(std::string name)
|
79a9bf3f
Pavel Govyadinov
new implementatio...
|
1298
|
{
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1299
1300
1301
1302
|
stim::glObj<float> sk;
for(int i = 0; i < nt.sizeE(); i++)
{
std::vector<stim::vec< float > > cm = nt.getEdgeCenterLineMag(i);
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1303
|
std::vector<stim::vec3< float > > ce = nt.getEdgeCenterLine(i);
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1304
1305
1306
1307
1308
1309
1310
1311
|
sk.Begin(stim::OBJ_LINE);
for(int j = 0; j < ce.size(); j++)
{
sk.TexCoord(cm[j][0]);
sk.Vertex(ce[j][0], ce[j][1], ce[j][2]);
}
sk.End();
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1312
|
sk.save(name);
|
79a9bf3f
Pavel Govyadinov
new implementatio...
|
1313
|
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1314
|
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1315
|
///Depreciated, but might be reused later()
|
ac430567
Pavel Govyadinov
comments comments...
|
1316
|
///returns a COPY of the entire stim::glObj object.
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1317
1318
1319
|
stim::glObj<float>
getNetwork()
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1320
|
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1321
|
}
|
ac430567
Pavel Govyadinov
comments comments...
|
1322
1323
1324
1325
1326
1327
1328
|
///returns a COPY of the entire stim::glnetwork object.
stim::glnetwork<T>
getGLNetwork()
{
return nt;
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1329
1330
1331
1332
1333
1334
|
///Function to get back the framebuffer Object attached to the spider.
///For external access.
GLuint
getFB()
{
|
035d798f
Pavel Govyadinov
modified the spid...
|
1335
|
return bfboID;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1336
1337
|
}
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
1338
1339
1340
1341
1342
1343
1344
1345
|
//--------------------------------------------------------------------------//
//-----------------------------TEMPORARY METHODS----------------------------//
//--------------------------------------------------------------------------//
///temporary Method necessary for visualization and testing.
void
Update()
{
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1346
|
vec3<float> Y(1.0,0.0,0.0);
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1347
|
if(cos(Y.dot(d))< 0.087){
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
1348
|
Y[0] = 0.0; Y[1] = 1.0;}
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1349
1350
1351
|
hor = stim::rect<float>(m, p, d.norm(),
((Y.cross(d)).cross(d)).norm());
ver = stim::rect<float>(m, p, d.norm(),
|
266aa74a
Pavel Govyadinov
CHECKPOINT: Minor...
|
1352
1353
1354
1355
|
hor.n());
}
|
c4887649
Pavel Govyadinov
fixed a significa...
|
1356
|
int
|
13c2a7d4
Pavel Govyadinov
some changes to t...
|
1357
1358
|
Step()
{
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1359
|
Bind(texbufferID, fboID, numSamples, t_length);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1360
|
CHECK_OPENGL_ERROR
|
035d798f
Pavel Govyadinov
modified the spid...
|
1361
|
findOptimalDirection();
|
3f15dade
Pavel Govyadinov
changed the plane...
|
1362
|
Unbind();
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1363
|
Bind(ptexbufferID, pfboID, numSamplesPos, t_length);
|
035d798f
Pavel Govyadinov
modified the spid...
|
1364
|
findOptimalPosition();
|
3f15dade
Pavel Govyadinov
changed the plane...
|
1365
|
Unbind();
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1366
|
Bind(mtexbufferID, mfboID, numSamplesMag, t_length);
|
035d798f
Pavel Govyadinov
modified the spid...
|
1367
|
findOptimalScale();
|
3f15dade
Pavel Govyadinov
changed the plane...
|
1368
|
Unbind();
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1369
1370
|
CHECK_OPENGL_ERROR
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1371
1372
1373
|
return current_cost;
}
|
556c4e15
Pavel Govyadinov
Changed the handl...
|
1374
1375
1376
1377
|
void
printTransform()
{
|
8e56a0a7
Pavel Govyadinov
Added the propose...
|
1378
|
std::cout << cT << std::endl;
|
b710b044
Pavel Govyadinov
Added more tempor...
|
1379
|
}
|
a9b45efe
Pavel Govyadinov
changes to spider
|
1380
|
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1381
1382
1383
1384
1385
1386
|
//--------------------------------------------------------------------------//
//-----------------------------EXPERIMENTAL METHODS-------------------------//
//--------------------------------------------------------------------------//
void
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
|
MonteCarloDirectionVectors(int nSamples, float solidAngle = 2*M_PI)
{
float PHI[2], Z[2], range;
PHI[0] = asin(solidAngle/2);
PHI[1] = asin(0);
Z[0] = cos(PHI[0]);
Z[1] = cos(PHI[1]);
range = Z[0] - Z[1];
float z, theta, phi;
std::vector<stim::vec3<float> > vecsUni;
for(int i = 0; i < numSamplesPos; i++)
{
stim::vec3<float> a(uniformRandom()*0.8, uniformRandom()*0.8, 0.0);
a[0] = a[0]-0.4;
a[1] = a[1]-0.4;
vecsUni.push_back(a);
}
stringstream name;
for(int i = 0; i < numSamplesPos; i++)
name << vecsUni[i].str() << std::endl;
std::ofstream outFile;
outFile.open("New_Pos_Vectors.txt");
outFile << name.str().c_str();
}
void
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1420
1421
|
DrawCylinder()
{
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1422
1423
1424
|
glNewList(dList+3, GL_COMPILE);
float z0 = -0.5; float z1 = 0.5; float r0 = 0.5;
float x,y;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1425
|
float xold = 0.5; float yold = 0.0;
|
ac430567
Pavel Govyadinov
comments comments...
|
1426
1427
|
float step = 360.0/numSamples*32;
//float step = 360.0/8.0;
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1428
1429
|
glEnable(GL_TEXTURE_3D);
glBindTexture(GL_TEXTURE_3D, texID);
|
ac430567
Pavel Govyadinov
comments comments...
|
1430
|
glBegin(GL_QUAD_STRIP);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1431
|
int j = 0;
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1432
1433
1434
1435
1436
|
for(float i = step; i <= 360.0; i += step)
{
x=r0*cos(i*2.0*M_PI/360.0);
y=r0*sin(i*2.0*M_PI/360.0);
glTexCoord3f(x,y,z0);
|
ac430567
Pavel Govyadinov
comments comments...
|
1437
1438
|
glVertex2f(0.0, j*6.4+6.4);
// glVertex2f(0.0, j*27.0+27.0);
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1439
|
glTexCoord3f(x,y,z1);
|
ac430567
Pavel Govyadinov
comments comments...
|
1440
1441
|
glVertex2f(16.0, j*6.4+6.4);
// glVertex2f(16.0, j*27.0+27.0);
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1442
|
glTexCoord3f(xold,yold,z1);
|
ac430567
Pavel Govyadinov
comments comments...
|
1443
1444
|
glVertex2f(16.0, j*6.4);
// glVertex2f(16.0, j*27.0);
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1445
|
glTexCoord3f(xold,yold,z0);
|
ac430567
Pavel Govyadinov
comments comments...
|
1446
1447
|
glVertex2f(0.0, j*6.4);
// glVertex2f(0.0, j*27.0);
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1448
1449
1450
1451
1452
1453
|
xold=x;
yold=y;
j++;
}
glEnd();
glEndList();
|
f31bf86d
Pavel Govyadinov
Added skeleton fu...
|
1454
|
}
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
1455
|
|
8c4f5d84
Pavel Govyadinov
fixed the issue w...
|
1456
|
///need to return the cylinder.
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
1457
1458
1459
1460
1461
1462
1463
|
void
DrawLongCylinder(int n = 8, int l_template = 8,int l_square = 8)
{
int cylLen = cL.size()-1;
GenerateFBO(n*l_square, cylLen*l_template, btexbufferID, bfboID);
Bind(btexbufferID, bfboID, cylLen, l_template*l_square/2.0);
stim::cylinder<float> cyl(cL, cM);
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1464
|
std::vector<std::vector<stim::vec3<float> > > p = cyl.getPoints(n);
|
e45b97ce
Pavel Govyadinov
safety commit, I ...
|
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
|
for(int i = 0; i < p.size()-1; i++) ///number of circles
{
for(int j = 0; j < p[0].size()-1; j++) ///points in the circle
{
glBegin(GL_QUADS);
glTexCoord3f(p[i][j][0], p[i][j][1], p[i][j][2]);
glVertex2f(j*l_square, i*(float)l_template);
glTexCoord3f(p[i][j+1][0], p[i][j+1][1], p[i][j+1][2]);
glVertex2f(j*l_square+l_square, i*(float)l_template);
glTexCoord3f(p[i+1][j+1][0], p[i+1][j+1][1], p[i+1][j+1][2]);
glVertex2f(j*l_square+l_square, i*(float)l_template+(float)l_template);
glTexCoord3f(p[i+1][j][0], p[i+1][j][1], p[i+1][j][2]);
glVertex2f(j*l_square,i*(float)l_template+(float)l_template);
glEnd();
}
}
Unbind();
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1486
1487
1488
1489
1490
1491
1492
|
///@param min_cost the cost value used for tracing
///traces out each seedpoint in the seeds queue to completion in both directions.
void
trace(int min_cost)
{
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1493
1494
|
bool sEmpty = true;
float lastmag = 16.0;;
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1495
1496
|
stim::vec3<float> curSeed;
stim::vec3<float> curSeedVec;
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1497
1498
|
float curSeedMag;
while(!Empty())
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1499
1500
1501
|
{
//clear the currently traced line and start a new one.
cL.clear();
|
ac430567
Pavel Govyadinov
comments comments...
|
1502
|
cM.clear();
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1503
1504
1505
1506
|
cD.clear();
curSeed = seeds.top();
curSeedVec = seedsvecs.top();
curSeedMag = seedsmags.top();
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1507
1508
|
seeds.pop();
seedsvecs.pop();
|
ac430567
Pavel Govyadinov
comments comments...
|
1509
|
seedsmags.pop();
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1510
|
// std::cout << "The current seed Vector is " << curSeedVec << std::endl;
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1511
1512
|
setPosition(curSeed);
setDirection(curSeedVec);
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1513
1514
1515
1516
1517
|
setMagnitude(curSeedMag);
// cL.push_back(curSeed);
// cM.push_back(curSeedMag);
// cD.push_back(curSeedMag);
pair<stim::fiber<float>, int> a = traceLine(p, m, min_cost);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1518
|
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1519
1520
|
}
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1521
|
int
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1522
|
selectObject(stim::vec3<float> loc, stim::vec3<float> dir, float mag)
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1523
1524
|
{
//Define the varibles and turn on Selection Mode
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
1525
1526
1527
1528
|
#ifdef TIMING
gpuStartTimer();
#endif
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1529
1530
1531
1532
1533
1534
1535
|
float s = 3.0;
GLuint selectBuf[2048];
GLint hits;
glSelectBuffer(2048, selectBuf);
glDisable(GL_CULL_FACE);
(void) glRenderMode(GL_SELECT);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
|
//Init Names stack
glInitNames();
glPushName(1);
CHECK_OPENGL_ERROR
//What would that vessel see in front of it.
camSel.setPosition(loc);
camSel.setFocalDistance(mag/s);
camSel.LookAt((loc[0]+dir[0]*mag/s),
(loc[1]+dir[1]*mag/s),
(loc[2]+dir[2]*mag/s));
ps = camSel.getPosition();
ups = camSel.getUp();
ds = camSel.getLookAt();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
|
1306fd96
Pavel Govyadinov
minor bug fixes i...
|
1554
|
glOrtho(-mag/s/2.0, mag/s/2.0, -mag/s/2.0, mag/s/2.0, 0.0, mag/s/2.0);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1555
1556
1557
1558
1559
1560
1561
1562
|
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
CHECK_OPENGL_ERROR
gluLookAt(ps[0], ps[1], ps[2],
ds[0], ds[1], ds[2],
ups[0], ups[1], ups[2]);
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1563
1564
1565
1566
|
// sk.Render();
nt.Render();
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1567
|
CHECK_OPENGL_ERROR
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1568
1569
1570
1571
1572
1573
1574
1575
|
// glLoadName((int) sk.numL());
glLoadName(nt.sizeE());
// sk.RenderLine(cL);
nt.RenderLine(cL);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1576
1577
1578
1579
1580
1581
1582
1583
1584
|
// glPopName();
glFlush();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
CHECK_OPENGL_ERROR
glPopMatrix();
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1585
|
// glEnable(GL_CULL_FACE);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1586
|
hits = glRenderMode(GL_RENDER);
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1587
|
int found_hits = processHits(hits, selectBuf);
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
1588
1589
1590
1591
|
#ifdef TIMING
hit_time += gpuStopTimer();
#endif
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1592
1593
1594
1595
1596
|
return found_hits;
}
//Given a size of the array (hits) and the memory holding it (buffer)
//returns whether a hit tool place or not.
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1597
|
int
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1598
1599
1600
|
processHits(GLint hits, GLuint buffer[])
{
GLuint names, *ptr;
|
59781ee3
Pavel Govyadinov
fixed a stask bug...
|
1601
|
//printf("hits = %u\n", hits);
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1602
|
ptr = (GLuint *) buffer;
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
|
// for (int i = 0; i < hits; i++) { /* for each hit */
names = *ptr;
// printf (" number of names for hit = %u\n", names);
ptr++;
ptr++; //Skip the minimum depth value.
ptr++; //Skip the maximum depth value.
// printf (" the name is ");
// for (int j = 0; j < names; j++) { /* for each name */
// printf ("%u ", *ptr); ptr++;
// }
// printf ("\n");
// }
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1617
|
if(hits == 0)
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1618
1619
1620
|
{
return -1;
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1621
|
else
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1622
|
{
|
035d798f
Pavel Govyadinov
modified the spid...
|
1623
|
// printf ("%u ", *ptr);
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1624
1625
1626
1627
1628
1629
1630
1631
|
return *ptr;
}
}
void
clearCurrent()
{
cL.clear();
|
ac430567
Pavel Govyadinov
comments comments...
|
1632
|
cM.clear();
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1633
1634
|
}
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1635
|
void
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1636
1637
|
addToNetwork(pair<stim::fiber<float>, int> in, stim::vec3<float> spos,
stim::vec<float> smag, stim::vec3<float> sdir)
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1638
|
{
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
1639
1640
1641
1642
|
#ifdef TIMING
double s = std::clock();
#endif
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1643
|
std::vector<stim::vec3<float> > ce = in.first.centerline();
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1644
|
std::vector<stim::vec<float> > cm = in.first.centerlinemag();
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1645
|
//if the fiber is longer than 2 steps (the number it takes to diverge)
|
6b8621f8
Pavel Govyadinov
stable version
|
1646
|
if(ce.size() > 3)
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1647
1648
|
{
//if we did not hit a fiber
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1649
1650
|
if(in.second == -1)
{
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1651
1652
1653
|
spos[0] = spos[0]-sdir[0]*smag[0]/2.;
spos[1] = spos[1]-sdir[1]*smag[0]/2.;
spos[2] = spos[2]-sdir[2]*smag[0]/2.;
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1654
|
int h = selectObject(spos, -sdir, smag[0]);
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1655
|
//did we start with a fiber?
|
11c1b46b
Pavel Govyadinov
minor bug fixes a...
|
1656
|
if(h != -1 && h < nt.sizeE())
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1657
1658
1659
|
nt.addEdge(ce, cm, h, -1);
else
nt.addEdge(ce, cm, -1, -1);
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1660
|
}
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1661
|
//if we hit a fiber?
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1662
1663
|
else if(in.second != -1)
{
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1664
1665
1666
1667
|
nt.addEdge(ce,cm,-1, in.second);
spos[0] = spos[0]-sdir[0]*smag[0]/2.;
spos[1] = spos[1]-sdir[1]*smag[0]/2.;
spos[2] = spos[2]-sdir[2]*smag[0]/2.;
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1668
1669
|
int h = selectObject(spos, -sdir, smag[0]);
//did start with a fiber?
|
11c1b46b
Pavel Govyadinov
minor bug fixes a...
|
1670
|
if(h != -1 && h < nt.sizeE()){
|
ac430567
Pavel Govyadinov
comments comments...
|
1671
1672
|
// std::cout << "got here double" << smag.str() << std::endl;
nt.addEdge(ce,cm, h, in.second);
|
27194b56
Pavel Govyadinov
major bug fixes, ...
|
1673
|
} else { nt.addEdge(ce,cm, -1, -1);}
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1674
1675
|
}
}
|
efe7b7cc
Pavel Govyadinov
Added a detailed ...
|
1676
1677
1678
1679
1680
|
#ifdef TIMING
double network_time = (std::clock() - s) / (double) CLOCKS_PER_SEC;
network_time += network_time * 1000.0;
#endif
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1681
1682
|
}
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1683
|
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1684
1685
1686
|
void
printSizes()
{
|
035d798f
Pavel Govyadinov
modified the spid...
|
1687
1688
|
std::cout << nt.sizeE() << " edges " << std::endl;
std::cout << nt.sizeV() << " nodes " << std::endl;
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1689
1690
1691
|
}
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1692
|
std::pair<stim::fiber<float>, int >
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1693
|
traceLine(stim::vec3<float> pos, stim::vec<float> mag, int min_cost)
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1694
|
{
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1695
|
//starting (seed) position and magnitude.
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1696
|
stim::vec3<float> spos = getPosition();
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1697
|
stim::vec<float> smag = getMagnitude();
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1698
|
stim::vec3<float> sdir = getDirection();
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1699
|
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1700
|
Bind();
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1701
|
// sk.Begin(stim::OBJ_LINE);
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1702
1703
1704
1705
1706
|
// sk.createFromSelf(GL_SELECT);
nt.createFromSelf(GL_SELECT);
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1707
1708
1709
1710
1711
1712
1713
1714
|
cL.push_back(pos);
cM.push_back(mag);
// setPosition(pos);
// setMagnitude(mag);
int h;
bool started = false;
bool running = true;
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1715
|
stim::vec3<float> size(S[0]*R[0], S[1]*R[1], S[2]*R[2]);
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1716
1717
1718
1719
1720
|
while(running)
{
int cost = Step();
if (cost > min_cost){
running = false;
|
8761b649
Pavel Govyadinov
moved a lot of th...
|
1721
|
// sk.End();
|
3e5d3ad3
Pavel Govyadinov
merged the change...
|
1722
|
branchDetection2();
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1723
|
pair<stim::fiber<float>, int> a(stim::fiber<float> (cL, cM), -1);
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1724
|
addToNetwork(a, spos, smag, sdir);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1725
|
// std::cout << "the cost of " << cost << " > " << min_cost << std::endl;
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1726
|
return a;
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1727
1728
1729
1730
1731
1732
1733
1734
|
break;
} else {
//Have we found the edge of the map?
pos = getPosition();
if(pos[0] > size[0] || pos[1] > size[1]
|| pos[2] > size[2] || pos[0] < 0
|| pos[1] < 0 || pos[2] < 0)
{
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1735
|
running = false;
|
3e5d3ad3
Pavel Govyadinov
merged the change...
|
1736
|
branchDetection2();
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1737
|
pair<stim::fiber<float>, int> a(stim::fiber<float> (cL, cM), -1);
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1738
|
addToNetwork(a, spos, smag, sdir);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1739
|
// std::cout << "I hit and edge" << std::endl;
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1740
|
return a;
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1741
1742
1743
1744
1745
1746
1747
1748
1749
|
break;
}
//If this is the first step in the trace,
// save the direction
//(to be used later to trace the fiber in the opposite direction)
if(started == false){
rev = -getDirection();
started = true;
}
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1750
1751
1752
|
//Has the template size gotten unreasonable?
mag = getMagnitude();
if(mag[0] > 75 || mag[0] < 1){
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1753
|
running = false;
|
3e5d3ad3
Pavel Govyadinov
merged the change...
|
1754
|
branchDetection2();
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1755
|
pair<stim::fiber<float>, int> a(stim::fiber<float> (cL, cM), -1);
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1756
|
addToNetwork(a, spos, smag, sdir);
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1757
|
// std::cout << "The templates are too big" << std::endl;
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1758
|
return a;
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1759
1760
1761
1762
1763
1764
1765
|
break;
}
else
{
h = selectObject(p, getDirection(), m[0]);
//Have we hit something previously traced?
if(h != -1){
|
c0e09133
Pavel Govyadinov
STABLE: made temp...
|
1766
|
// std::cout << "I hit the fiber " << h << std::endl;
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1767
|
running = false;
|
3e5d3ad3
Pavel Govyadinov
merged the change...
|
1768
|
branchDetection2();
|
6707e8f5
Pavel Govyadinov
handled the case ...
|
1769
|
pair<stim::fiber<float>, int> a(stim::fiber<float> (cL, cM), h);
|
821409d5
Pavel Govyadinov
added a way to ad...
|
1770
|
addToNetwork(a, spos, smag, sdir);
|
23af8e36
Pavel Govyadinov
modified spider t...
|
1771
|
return a;
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1772
1773
1774
|
break;
}
else {
|
7d3162a2
Pavel Govyadinov
fixed majority of...
|
1775
|
cL.push_back(stim::vec3<float>(p[0], p[1],p[2]));
|
3f15dade
Pavel Govyadinov
changed the plane...
|
1776
|
cM.push_back(stim::vec<float>(m[0], m[0]));
|
3e5d3ad3
Pavel Govyadinov
merged the change...
|
1777
|
// Bind(btexbufferID, bfboID, 27);
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1778
1779
1780
1781
1782
1783
1784
|
Unbind();
CHECK_OPENGL_ERROR
}
}
}
}
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1785
1786
|
}
|
5de3a9c2
Pavel Govyadinov
CHECKPOINT: befo...
|
1787
|
|
84eff8b1
Pavel Govyadinov
Merged only the n...
|
1788
|
|
4cefeb6d
Pavel Govyadinov
Changes to the re...
|
1789
|
};
|
fb0bc2f1
Pavel Govyadinov
added the gl_spid...
|
1790
1791
|
}
#endif
|