Example #1
0
KHalfEdgeMeshPrivate::FaceIndex KHalfEdgeMeshPrivate::addFace(index_array &v1, index_array &v2, index_array &v3)
{
  // Normalize Indices
  size_t size = m_vertices.size() + 1;

  // Normalize Indices
  normalizeIndex(v1[0], size);
  normalizeIndex(v2[0], size);
  normalizeIndex(v3[0], size);

  // Create edges
  HalfEdgeIndex edgeA = getHalfEdge(v1, v2);
  HalfEdgeIndex edgeB = getHalfEdge(v2, v3);
  HalfEdgeIndex edgeC = getHalfEdge(v3, v1);

  // Create Face
  m_faces.emplace_back(edgeA);
  FaceIndex faceIdx = FaceIndex(static_cast<index_type>(m_faces.size()));

  // Initialize Inner Half Edges
  initializeInnerHalfEdge(edgeA, faceIdx, edgeB);
  initializeInnerHalfEdge(edgeB, faceIdx, edgeC);
  initializeInnerHalfEdge(edgeC, faceIdx, edgeA);

  // Set Vertex half edges
  if (vertex(v1[0])->to == 0) vertex(v1[0])->to = edgeA;
  if (vertex(v2[0])->to == 0) vertex(v2[0])->to = edgeB;
  if (vertex(v3[0])->to == 0) vertex(v3[0])->to = edgeC;

  return faceIdx;
}
Example #2
0
void CircularBuffer::showList( void )
{
  for( int i = 0; i < m_itemCount; ++i )
  {
    int thisIndex = normalizeIndex( m_insertPoint - m_itemCount + i );
    std::cout << m_buf[ thisIndex ] << std::endl;
  }
}
Example #3
0
void CircularBuffer::append( const std::list<std::string> list )
{
  // we want an ordered append so avoid for_each
  for( std::list<std::string>::const_iterator i = list.begin(); i != list.end(); ++i )
  {
    m_buf[ m_insertPoint ] = *i;
    m_insertPoint = normalizeIndex( m_insertPoint + 1 );
    m_itemCount = std::min( m_itemCount + 1, m_maxSize );
  }
}
Example #4
0
void Neighbors::sliceNeighbors(int id)
{
    rowNeighbors(id, true); // linha atual

    if (id % sliceSize >= tableRows) // linha acima
        rowNeighbors(id - tableRows, false);
    else
        rowNeighbors(sliceSize - tableRows + id, false);

    if (id % sliceSize < (sliceSize - tableRows)) // linha abaixo
        rowNeighbors(id + tableRows, false);
    else
        rowNeighbors(normalizeIndex(sliceSize - tableRows - id), false);
}
 T get(index_t index) const {
   index = normalizeIndex(index);
   if ( ! indexInRange(index) ) return errorValue();
   return _data[index];
 }