| 40 | // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // |
| 41 | |
| 42 | void Foam::midPointSet::genSamples() |
| 43 | { |
| 44 | // Generate midpoints. |
| 45 | |
| 46 | List<point> midPoints(2*size()); |
| 47 | labelList midCells(2*size()); |
| 48 | labelList midSegments(2*size()); |
| 49 | scalarList midCurveDist(2*size()); |
| 50 | |
| 51 | label mSamplei = 0; |
| 52 | label samplei = 0; |
| 53 | |
| 54 | while (size() > 0) |
| 55 | { |
| 56 | // Calculate midpoint between samplei and samplei+1 (if in same segment) |
| 57 | while |
| 58 | ( |
| 59 | (samplei < size() - 1) |
| 60 | && (segments_[samplei] == segments_[samplei+1]) |
| 61 | ) |
| 62 | { |
| 63 | point midPoint(0.5*(operator[](samplei) + operator[](samplei+1))); |
| 64 | label cellm = pointInCell(midPoint, samplei); |
| 65 | |
| 66 | if (cellm != -1) |
| 67 | { |
| 68 | midPoints[mSamplei] = midPoint; |
| 69 | midCells[mSamplei] = cellm; |
| 70 | midSegments[mSamplei] = segments_[samplei]; |
| 71 | midCurveDist[mSamplei] = mag(midPoints[mSamplei] - start()); |
| 72 | mSamplei++; |
| 73 | } |
| 74 | |
| 75 | samplei++; |
| 76 | } |
| 77 | |
| 78 | if (samplei == size() - 1) |
| 79 | { |
| 80 | break; |
| 81 | } |
| 82 | |
| 83 | samplei++; |
| 84 | } |
| 85 | |
| 86 | midPoints.setSize(mSamplei); |
| 87 | midCells.setSize(mSamplei); |
| 88 | midSegments.setSize(mSamplei); |
| 89 | midCurveDist.setSize(mSamplei); |
| 90 | |
| 91 | setSamples |
| 92 | ( |
| 93 | midPoints, |
| 94 | midCells, |
| 95 | labelList(midCells.size(), -1), |
| 96 | midSegments, |
| 97 | midCurveDist |
| 98 | ); |
| 99 | } |
no test coverage detected