1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
ModUle: $RCSfile: itkSparseFieldLayer.txx,v $
Language: C++
Date: $Date: 2003-09-10 14:28:56 $
Version: $Revision: 1.8 $
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkSparseFieldLayer_txx
#define __itkSparseFieldLayer_txx
#include "itkSparseFieldLayer.h"
#include <math.h>
namespace itk {
template<class TNodeType>
SparseFieldLayer<TNodeType>
::SparseFieldLayer()
{
m_HeadNode = new NodeType;
m_HeadNode->Next = m_HeadNode;
m_HeadNode->Previous = m_HeadNode;
m_Size = 0;
}
template<class TNodeType>
SparseFieldLayer<TNodeType>
::~SparseFieldLayer()
{
delete m_HeadNode;
}
template<class TNodeType>
void
SparseFieldLayer<TNodeType>
::PrintSelf(std::ostream& os, Indent indent) const
{
Superclass::PrintSelf(os,indent);
os << indent << "m_HeadNode: " << m_HeadNode << std::endl;
os << indent << "Empty? : " << this->Empty() << std::endl;
}
template<class TNodeType>
unsigned int
SparseFieldLayer<TNodeType>
::Size() const
{
return m_Size;
}
template<class TNodeType>
typename SparseFieldLayer<TNodeType>::RegionListType
SparseFieldLayer<TNodeType>
::SplitRegions (int num) const
{
std::vector<RegionType> regionlist;
unsigned int size, regionsize;
size=Size();
regionsize=static_cast<unsigned int>(ceil(static_cast<float>(size)/static_cast<float>(num)));
ConstIterator position=Begin();
ConstIterator last=End();
for (int i=0;i<num;i++)
{
unsigned int j=0;
RegionType region;
region.first=position;
while ((j<regionsize)&&(position!=last))
{
j++;
++position;
}
region.last=position;
regionlist.push_back(region);
}
return regionlist;
}
}// end namespace itk
#endif
|