Commit 821409d57420059ff9dd09ee177defa828a01eb7
1 parent
23af8e36
added a way to add fibers in that start with a given fiber into the network.
Showing
1 changed file
with
28 additions
and
8 deletions
Show diff stats
stim/gl/gl_spider.h
... | ... | @@ -1314,15 +1314,23 @@ class gl_spider : public virtual gl_texture<T> |
1314 | 1314 | } |
1315 | 1315 | |
1316 | 1316 | void |
1317 | - addToNetwork(pair<stim::fiber<float>, int> in) | |
1317 | + addToNetwork(pair<stim::fiber<float>, int> in, stim::vec<float> spos, | |
1318 | + stim::vec<float> smag, stim::vec<float> sdir) | |
1318 | 1319 | { |
1319 | 1320 | std::vector<stim::vec<float> > ce = in.first.centerline(); |
1320 | 1321 | std::vector<stim::vec<float> > cm = in.first.centerlinemag(); |
1321 | - if(ce.size() >2) | |
1322 | + if(ce.size() > 2) | |
1322 | 1323 | { |
1323 | 1324 | if(in.second == -1) |
1324 | 1325 | { |
1325 | - nt.addEdge(ce, cm, -1, -1); | |
1326 | + spos[0] = spos[0]-0.15*sdir[0]*smag[0]; | |
1327 | + spos[1] = spos[1]-0.15*sdir[1]*smag[0]; | |
1328 | + spos[2] = spos[2]-0.15*sdir[2]*smag[0]; | |
1329 | + int h = selectObject(spos, -sdir, smag[0]); | |
1330 | + if(h != -1) | |
1331 | + nt.addEdge(ce, cm, h, -1); | |
1332 | + else | |
1333 | + nt.addEdge(ce, cm, -1, -1); | |
1326 | 1334 | } |
1327 | 1335 | else if(in.second != -1) |
1328 | 1336 | { |
... | ... | @@ -1337,9 +1345,22 @@ class gl_spider : public virtual gl_texture<T> |
1337 | 1345 | return nt; |
1338 | 1346 | } |
1339 | 1347 | |
1348 | + void | |
1349 | + printSizes() | |
1350 | + { | |
1351 | + std::cout << nt.sizeE() << "edges" << std::endl; | |
1352 | + std::cout << nt.sizeV() << "nodes" << std::endl; | |
1353 | + | |
1354 | + } | |
1355 | + | |
1340 | 1356 | std::pair<stim::fiber<float>, int > |
1341 | 1357 | traceLine(stim::vec<float> pos, stim::vec<float> mag, int min_cost) |
1342 | 1358 | { |
1359 | + //starting (seed) position and magnitude. | |
1360 | + stim::vec<float> spos = getPosition(); | |
1361 | + stim::vec<float> smag = getMagnitude(); | |
1362 | + stim::vec<float> sdir = getDirection(); | |
1363 | + | |
1343 | 1364 | Bind(); |
1344 | 1365 | sk.Begin(stim::OBJ_LINE); |
1345 | 1366 | |
... | ... | @@ -1364,7 +1385,7 @@ class gl_spider : public virtual gl_texture<T> |
1364 | 1385 | running = false; |
1365 | 1386 | sk.End(); |
1366 | 1387 | pair<stim::fiber<float>, int> a(stim::fiber<float> (cL, cM), -1); |
1367 | - addToNetwork(a); | |
1388 | + addToNetwork(a, spos, smag, sdir); | |
1368 | 1389 | return a; |
1369 | 1390 | break; |
1370 | 1391 | } else { |
... | ... | @@ -1378,7 +1399,7 @@ class gl_spider : public virtual gl_texture<T> |
1378 | 1399 | running = false; |
1379 | 1400 | sk.End(); |
1380 | 1401 | pair<stim::fiber<float>, int> a(stim::fiber<float> (cL, cM), -1); |
1381 | - addToNetwork(a); | |
1402 | + addToNetwork(a, spos, smag, sdir); | |
1382 | 1403 | return a; |
1383 | 1404 | break; |
1384 | 1405 | } |
... | ... | @@ -1397,7 +1418,7 @@ class gl_spider : public virtual gl_texture<T> |
1397 | 1418 | running = false; |
1398 | 1419 | sk.End(); |
1399 | 1420 | pair<stim::fiber<float>, int> a(stim::fiber<float> (cL, cM), -1); |
1400 | - addToNetwork(a); | |
1421 | + addToNetwork(a, spos, smag, sdir); | |
1401 | 1422 | return a; |
1402 | 1423 | break; |
1403 | 1424 | } |
... | ... | @@ -1406,11 +1427,10 @@ class gl_spider : public virtual gl_texture<T> |
1406 | 1427 | h = selectObject(p, getDirection(), m[0]); |
1407 | 1428 | //Have we hit something previously traced? |
1408 | 1429 | if(h != -1){ |
1409 | - std::cout << "I hit a line" << h << std::endl; | |
1410 | 1430 | running = false; |
1411 | 1431 | sk.End(); |
1412 | 1432 | pair<stim::fiber<float>, int> a(stim::fiber<float> (cL, cM), -1); |
1413 | - addToNetwork(a); | |
1433 | + addToNetwork(a, spos, smag, sdir); | |
1414 | 1434 | return a; |
1415 | 1435 | break; |
1416 | 1436 | } | ... | ... |