TerrainCoverDrawableObject::NormaleMap 
TerrainCoverDrawableObject::GetNormales(const PointVector & pv, const IndexVector & iv)
{
	NormaleMap normales;

	auto normaleCalculator = [&](int a, int b, int c)
	{
		const Point3d normale = utils::GetNormaleForTriangleNonNormalized(pv.at(a), pv.at(b), pv.at(c));

		normales[a] += normale;
		normales[b] += normale;
		normales[c] += normale;
	};

	utils::ContainerAggregator<decltype(normaleCalculator), int, 3> aggregator(normaleCalculator);

	boost::for_each(iv, aggregator);

	return normales;
}
Exemplo n.º 2
0
bool testIterator()
{
  PointVector<25,int> aPoint;
  PointVector<4, int> avector;
  
  trace.beginBlock("Point Iterator Test");

  for (unsigned int i=0;i<25;++i)
    aPoint.at(i) = i;
  trace.info() << "aPoint="<<aPoint<< std::endl;

  trace.info() << "With iterator: ";
  for (PointVector<25,int>::Iterator it = aPoint.begin() ;  it != aPoint.end(); ++it)
    trace.info() << (*it) <<" " ;

  trace.info() << std::endl;

  trace.endBlock();

  return true;
}