13 #include "Geometry/ParticleCollection.h"
20 #include <boost/limits.hpp>
26 template <
typename TmplParticle>
27 ParticleCollection<TmplParticle>::ParticleCollection()
28 : m_particlePoolPtr(),
31 m_particlePoolPtr = ParticlePoolPtr(
new ParticlePool(2048));
34 template <
typename TmplParticle>
35 ParticleCollection<TmplParticle>::ParticleCollection(
36 ParticlePoolPtr particlePoolPtr
38 : m_particlePoolPtr(particlePoolPtr),
43 template <
typename TmplParticle>
44 ParticleCollection<TmplParticle>::ParticleCollection(
const ParticleCollection &p)
45 : m_particlePoolPtr(p.m_particlePoolPtr),
46 m_particleVector(p.m_particleVector)
50 template <
typename TmplParticle>
51 ParticleCollection<TmplParticle> &
52 ParticleCollection<TmplParticle>::operator=(
const ParticleCollection &p)
54 m_particlePoolPtr = p.m_particlePoolPtr;
55 m_particleVector = p.m_particleVector;
58 template <
typename TmplParticle>
62 m_particleVector.push_back(&p);
65 template <
typename TmplParticle>
69 if (m_particlePoolPtr->is_from(&p))
77 "ParticleCollection<TmplParticle>::insertRef: Tried to insert"
78 " reference to non-created particle."
83 template <
typename TmplParticle>
84 typename ParticleCollection<TmplParticle>::Particle &
87 Particle *newP = m_particlePoolPtr->construct(p);
92 template <
typename TmplParticle>
97 template <
typename TmplParticle>
98 int ParticleCollection<TmplParticle>::getNumParticles()
const
100 return m_particleVector.size();
103 template <
typename TmplParticle>
109 it.next().translateBy(vec);
113 template <
typename TmplParticle>
115 const Vec3 &rotation,
122 it.next().rotate(rotation, posn);
126 template <
typename TmplParticle>
128 typename Particle::Id idIncr
134 Particle &p = it.next();
135 p.setId(p.getId() + idIncr);
139 template <
typename TmplParticle>
142 Vec3 minPt =
Vec3(std::numeric_limits<double>::max());
144 ParticleConstIterator it = getParticleIterator();
147 const Particle &next = it.next();
148 minPt = cmin(minPt, next.getPos() - next.getRad());
149 maxPt = cmax(maxPt, next.getPos() + next.getRad());
151 return BoundingBox(minPt, maxPt);