Commit c9712fb4a0af503e17b58b55ff2223915277e971

Authored by Jiaming Guo
1 parent c72184d1

fix minor error with querypoint set

Showing 1 changed file with 7 additions and 8 deletions   Show diff stats
stim/biomodels/network.h
@@ -456,7 +456,7 @@ public: @@ -456,7 +456,7 @@ public:
456 } 456 }
457 457
458 // convert vec3 to array in bunch 458 // convert vec3 to array in bunch
459 - void edge2array(T* a, std::vector< typename stim::vec3<T> > b){ 459 + void edge2array(T* a, edge b){
460 size_t n = b.size(); 460 size_t n = b.size();
461 for(size_t i = 0; i < n; i++){ 461 for(size_t i = 0; i < n; i++){
462 a[i * 3 + 0] = b[i][0]; 462 a[i * 3 + 0] = b[i][0];
@@ -490,7 +490,7 @@ public: @@ -490,7 +490,7 @@ public:
490 490
491 T *c; // centerline (array of double pointers) - points on kdtree must be double 491 T *c; // centerline (array of double pointers) - points on kdtree must be double
492 size_t n_data = A.total_points(); // set the number of points 492 size_t n_data = A.total_points(); // set the number of points
493 - c = (T*) malloc(sizeof(T) * n_data * 3); //allocate an array to store all points in the data set 493 + c = (T*) malloc(sizeof(T) * n_data * 3); // allocate an array to store all points in the data set
494 494
495 unsigned t = 0; 495 unsigned t = 0;
496 for(unsigned e = 0; e < A.E.size(); e++){ //for each edge in the network 496 for(unsigned e = 0; e < A.E.size(); e++){ //for each edge in the network
@@ -517,7 +517,7 @@ public: @@ -517,7 +517,7 @@ public:
517 size_t errormag_id = R.E[e].nmags() - 1; //get the id for the new magnitude 517 size_t errormag_id = R.E[e].nmags() - 1; //get the id for the new magnitude
518 518
519 size_t n = R.E[e].size(); // the number of points in current edge 519 size_t n = R.E[e].size(); // the number of points in current edge
520 - T* queryPt = new T[n]; 520 + T* queryPt = new T[3 * n];
521 T* m1 = new T[n]; 521 T* m1 = new T[n];
522 T* dists = new T[n]; 522 T* dists = new T[n];
523 size_t* nnIdx = new size_t[n]; 523 size_t* nnIdx = new size_t[n];
@@ -556,7 +556,7 @@ public: @@ -556,7 +556,7 @@ public:
556 size_t errormag_id = R.E[e].nmags() - 1; 556 size_t errormag_id = R.E[e].nmags() - 1;
557 557
558 size_t n = R.E[e].size(); // the number of points in current edge 558 size_t n = R.E[e].size(); // the number of points in current edge
559 - T* query = new T[n]; 559 + T* query = new T[3 * n];
560 T* m1 = new T[n]; 560 T* m1 = new T[n];
561 T* dists = new T[n]; 561 T* dists = new T[n];
562 size* nnIdx = new size_t[n]; 562 size* nnIdx = new size_t[n];
@@ -614,7 +614,7 @@ public: @@ -614,7 +614,7 @@ public:
614 614
615 size_t n = A.E[e].size(); // the number of edges in A 615 size_t n = A.E[e].size(); // the number of edges in A
616 616
617 - T* queryPt = new T[n]; // set of all the points in current edge 617 + T* queryPt = new T[3 * n]; // set of all the points in current edge
618 T* m1 = new T[n]; // array of metrics for every point in current edge 618 T* m1 = new T[n]; // array of metrics for every point in current edge
619 T* dists = new T[n]; // store the distances for every point in current edge 619 T* dists = new T[n]; // store the distances for every point in current edge
620 size_t* nnIdx = new size_t[n]; // store the indices for every point in current edge 620 size_t* nnIdx = new size_t[n]; // store the indices for every point in current edge
@@ -677,14 +677,13 @@ public: @@ -677,14 +677,13 @@ public:
677 for(unsigned ee = 0; ee < NB; ee++) 677 for(unsigned ee = 0; ee < NB; ee++)
678 edge_point_num[ee] = B.E[ee].size(); 678 edge_point_num[ee] = B.E[ee].size();
679 679
680 - T* queryPt = new T[3];  
681 for(unsigned e = 0; e < A.E.size(); e++){ //for each edge in A 680 for(unsigned e = 0; e < A.E.size(); e++){ //for each edge in A
682 A.E[e].add_mag(0); //add a new magnitude for the metric 681 A.E[e].add_mag(0); //add a new magnitude for the metric
683 size_t errormag_id = A.E[e].nmags() - 1; 682 size_t errormag_id = A.E[e].nmags() - 1;
684 683
685 size_t n = A.E[e].size(); // the number of edges in A 684 size_t n = A.E[e].size(); // the number of edges in A
686 685
687 - T* queryPt = new T[n]; 686 + T* queryPt = new T[3 * n];
688 T* m1 = new T[n]; 687 T* m1 = new T[n];
689 T* dists = new T[n]; //store the distances 688 T* dists = new T[n]; //store the distances
690 size_t* nnIdx = new size_t[n]; //store the indices 689 size_t* nnIdx = new size_t[n]; //store the indices
@@ -807,7 +806,7 @@ public: @@ -807,7 +806,7 @@ public:
807 if(M > metric_fac) 806 if(M > metric_fac)
808 C[e] = (unsigned)-1; //set the nearest edge of impossibly mapping edges to maximum of unsigned 807 C[e] = (unsigned)-1; //set the nearest edge of impossibly mapping edges to maximum of unsigned
809 else{ 808 else{
810 - T* queryPt = new T[1]; 809 + T* queryPt = new T[3];
811 T* dists = new T[1]; 810 T* dists = new T[1];
812 size_t* nnIdx = new size_t[1]; 811 size_t* nnIdx = new size_t[1];
813 812