Changeset 0d111b for molecuilder/src/linkedcell.cpp
- Timestamp:
- Apr 29, 2010, 1:55:21 PM (16 years ago)
- Children:
- 070651, 5d1a94
- Parents:
- 90c4460 (diff), 32842d8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - File:
-
- 1 edited
-
molecuilder/src/linkedcell.cpp (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/linkedcell.cpp
r90c4460 r0d111b 54 54 Walker = set->GetPoint(); 55 55 for (int i=0;i<NDIM;i++) { 56 max .x[i] = Walker->node->x[i];57 min .x[i] = Walker->node->x[i];56 max[i] = Walker->node->at(i); 57 min[i] = Walker->node->at(i); 58 58 } 59 59 set->GoToFirst(); … … 61 61 Walker = set->GetPoint(); 62 62 for (int i=0;i<NDIM;i++) { 63 if (max .x[i] < Walker->node->x[i])64 max .x[i] = Walker->node->x[i];65 if (min .x[i] > Walker->node->x[i])66 min .x[i] = Walker->node->x[i];63 if (max[i] < Walker->node->at(i)) 64 max[i] = Walker->node->at(i); 65 if (min[i] > Walker->node->at(i)) 66 min[i] = Walker->node->at(i); 67 67 } 68 68 set->GoToNext(); … … 72 72 // 2. find then number of cells per axis 73 73 for (int i=0;i<NDIM;i++) { 74 N[i] = (int)floor((max.x[i] - min.x[i])/RADIUS)+1;74 N[i] = static_cast<int>(floor((max[i] - min[i])/RADIUS)+1); 75 75 } 76 76 DoLog(2) && (Log() << Verbose(2) << "Number of cells per axis are " << N[0] << ", " << N[1] << " and " << N[2] << "." << endl); … … 94 94 Walker = set->GetPoint(); 95 95 for (int i=0;i<NDIM;i++) { 96 n[i] = (int)floor((Walker->node->x[i] - min.x[i])/RADIUS);96 n[i] = static_cast<int>(floor((Walker->node->at(i) - min[i])/RADIUS)); 97 97 } 98 98 index = n[0] * N[1] * N[2] + n[1] * N[2] + n[2]; … … 128 128 LinkedNodes::iterator Runner = set->begin(); 129 129 for (int i=0;i<NDIM;i++) { 130 max .x[i] = (*Runner)->node->x[i];131 min .x[i] = (*Runner)->node->x[i];130 max[i] = (*Runner)->node->at(i); 131 min[i] = (*Runner)->node->at(i); 132 132 } 133 133 for (LinkedNodes::iterator Runner = set->begin(); Runner != set->end(); Runner++) { 134 134 Walker = *Runner; 135 135 for (int i=0;i<NDIM;i++) { 136 if (max .x[i] < Walker->node->x[i])137 max .x[i] = Walker->node->x[i];138 if (min .x[i] > Walker->node->x[i])139 min .x[i] = Walker->node->x[i];136 if (max[i] < Walker->node->at(i)) 137 max[i] = Walker->node->at(i); 138 if (min[i] > Walker->node->at(i)) 139 min[i] = Walker->node->at(i); 140 140 } 141 141 } … … 144 144 // 2. find then number of cells per axis 145 145 for (int i=0;i<NDIM;i++) { 146 N[i] = (int)floor((max.x[i] - min.x[i])/RADIUS)+1;146 N[i] = static_cast<int>(floor((max[i] - min[i])/RADIUS)+1); 147 147 } 148 148 DoLog(2) && (Log() << Verbose(2) << "Number of cells per axis are " << N[0] << ", " << N[1] << " and " << N[2] << "." << endl); … … 165 165 Walker = *Runner; 166 166 for (int i=0;i<NDIM;i++) { 167 n[i] = (int)floor((Walker->node->x[i] - min.x[i])/RADIUS);167 n[i] = static_cast<int>(floor((Walker->node->at(i) - min[i])/RADIUS)); 168 168 } 169 169 index = n[0] * N[1] * N[2] + n[1] * N[2] + n[2]; … … 251 251 { 252 252 for (int i=0;i<NDIM;i++) 253 n[i] = (int)floor((x-> x[i] - min.x[i])/RADIUS);253 n[i] = (int)floor((x->at(i) - min[i])/RADIUS); 254 254 255 255 return CheckBounds(); … … 264 264 bool status = false; 265 265 for (int i=0;i<NDIM;i++) { 266 n[i] = (int)floor((Walker->node->x[i] - min.x[i])/RADIUS);266 n[i] = static_cast<int>(floor((Walker->node->at(i) - min[i])/RADIUS)); 267 267 } 268 268 index = n[0] * N[1] * N[2] + n[1] * N[2] + n[2]; … … 340 340 { 341 341 for (int i=0;i<NDIM;i++) { 342 n[i] = (int)floor((x-> x[i] - min.x[i])/RADIUS);342 n[i] = (int)floor((x->at(i) - min[i])/RADIUS); 343 343 if (n[i] < 0) 344 344 n[i] = 0; … … 356 356 Vector center; // center of the closest cell 357 357 for (int i=0;i<NDIM;i++) 358 center .x[i] = min.x[i]+((double)n[i]+.5)*RADIUS;358 center[i] = min[i]+((double)n[i]+.5)*RADIUS; 359 359 360 360 int c[NDIM]; … … 364 364 // set up corner 365 365 for (int i=0;i<NDIM;i++) 366 corner .x[i] = min.x[i]+RADIUS*((double)n[i]+c[i]);366 corner[i] = min[i]+RADIUS*((double)n[i]+c[i]); 367 367 // set up distance vector 368 Distance.CopyVector(x); 369 Distance.SubtractVector(&corner); 368 Distance = (*x) - corner; 370 369 const double dist = Distance.NormSquared(); 371 370 // check whether distance is smaller … … 373 372 distanceSquared = dist; 374 373 // check whether distance vector goes inside or outside 375 tester.CopyVector(¢er); 376 tester.SubtractVector(&corner); 377 if (tester.ScalarProduct(&Distance) < 0) 374 tester = center -corner; 375 if (tester.ScalarProduct(Distance) < 0) 378 376 outside = false; 379 377 } … … 408 406 Walker = *Runner; 409 407 //Log() << Verbose(1) << "Current neighbour is at " << *Walker->node << "." << endl; 410 if ((center->DistanceSquared( Walker->node) - radiusSquared) < MYEPSILON) {408 if ((center->DistanceSquared(*Walker->node) - radiusSquared) < MYEPSILON) { 411 409 TesselList->push_back(Walker); 412 410 }
Note:
See TracChangeset
for help on using the changeset viewer.
