コード例 #1
0
ファイル: CutGeometry.cpp プロジェクト: vistle/vistle
   void processCoordinates() {

      const Index nCoord = m_coord->getNumCoords();
      m_vertexMap.resize(nCoord);
      auto vertexMap = m_vertexMap.data();
#pragma omp parallel for
      for (ssize_t i=0; i<nCoord; ++i) {
         const Vector p(x[i], y[i], z[i]);
         vertexMap[i] = m_decider(i) > 0 ? 1 : 0;
      }

      if (haveCornerList) {
         Index numIn = 0;
         for (Index i=0; i<nCoord; ++i) {
            if (vertexMap[i]) {
               numIn += vertexMap[i];
               vertexMap[i] = numIn;
            }
         }

         m_outCoords->setSize(numIn);
         out_x = m_outCoords->x().data();
         out_y = m_outCoords->y().data();
         out_z = m_outCoords->z().data();
#pragma omp parallel for schedule(dynamic)
         for (ssize_t i=0; i<nCoord; ++i) {
            Index idx = vertexMap[i];
            vassert(idx >= 0);
            if (idx > 0) {
               --idx;
               vassert(idx < numIn);
               out_x[idx] = x[i];
               out_y[idx] = y[i];
               out_z[idx] = z[i];
            }
         }
      }
   }