14 SimpleParticle::SimpleParticle(
const Vec3& pos,
double rad,
int id,
int tag)
15 : SimpleParticleData(pos, rad, id, tag)
20 : SimpleParticleData(p)
26 SimpleParticleData::operator=(p);
30 const Vec3 &SimpleParticle::getPos()
const
35 void SimpleParticle::setPos(
const Vec3 &pos)
40 void SimpleParticle::moveTo(
const Vec3 &v)
45 void SimpleParticle::translateBy(
const Vec3 &v)
47 setPosition(getPosition()+v);
50 void SimpleParticle::moveBy(
const Vec3 &v)
55 void SimpleParticle::rotate(
const Vec3 &rotation,
const Vec3 &posn)
58 const double phi = rotation.norm();
61 const Vec3 r = getPosition() - posn;
62 const Vec3 n = rotation/phi;
63 const double cosPhi = cos(phi);
65 r*cosPhi + n*((dot(n, r))*(1-cosPhi)) + cross(r, n)*sin(phi);
66 setPosition(rotatedR + posn);
70 double SimpleParticle::getRad()
const
75 void SimpleParticle::setRad(
double r)
80 bool SimpleParticle::isValid()
const
82 return (getID() >= 0);
85 template <
typename TmplVisitor>
86 void SimpleParticle::visit(
const TmplVisitor &visitor)
const
88 visitor.visitSimpleParticle(*
this);
91 template <
typename TmplVisitor>
92 void SimpleParticle::visit(TmplVisitor &visitor)
94 visitor.visitSimpleParticle(*
this);
100 <<
"Particle- id " << p.getId()
101 <<
" pos: " << p.getPosition()
102 <<
" rad: " << p.getRadius()
103 <<
" tag : " << p.getTag() << std::endl;
117 return (((p1.getPos() - m_pParticle->getPos()).norm() - p1.getRad())<
118 ((p2.getPos() - m_pParticle->getPos()).norm() - p2.getRad()));
127 return (*
this)(*p1, *p2);