Files Classes Functions Hierarchy
#include <particle.h>
Public Member Functions | |
| particle () | |
| Stationary particle. | |
| particle (doublec p0, doublec p1, doublec v0, doublec v1, doublec r) | |
| Initialize a particle. | |
| boolc | isIntersecting (particle const &p2) const |
| Do the two particles intersect? | |
| void | step (doublec t) |
| Increment the particle in time. | |
| void | acczero () |
| Set the acceleration to zero. | |
| ostream & | print (ostream &os) const |
| void | collisionDynamics (particle &p2) |
| Collision resolution. | |
Public Attributes | |
| float | radius |
| The particles radius. | |
| float | pos [2] |
| The particles position. | |
| float | vel [2] |
| The particles velocity. | |
| float | acc [2] |
| The particles acceleration. | |
Definition at line 13 of file particle.h.
| particle::particle | ( | ) | [inline] |
| void particle::acczero | ( | ) | [inline] |
| void particle::collisionDynamics | ( | particle & | p2 | ) |
Collision resolution.
Definition at line 3 of file particle.cpp.
Referenced by integration< D, F >::bruteforce().
00004 { 00005 float n[2], t[2], n_mag, n_mag_sq; 00006 float vi_nt[2], vj_nt[2], tmp; 00007 00008 /* Normal vector between centres. */ 00009 n[0] = p2.pos[0] - pos[0]; 00010 n[1] = p2.pos[1] - pos[1]; 00011 00012 /* Normalise normal vector. */ 00013 n_mag_sq = n[0] * n[0] + n[1] * n[1]; 00014 n_mag = sqrt(n_mag_sq); 00015 n[0] /= n_mag; 00016 n[1] /= n_mag; 00017 00018 /* Tangent vector. */ 00019 t[0] = -n[1]; 00020 t[1] = n[0]; 00021 00022 /* 00023 * Resolve particle velocities into components in the 00024 * normal and tangential direction. 00025 */ 00026 vi_nt[0] = p2.vel[0] * n[0] + p2.vel[1] * n[1]; 00027 vi_nt[1] = p2.vel[0] * t[0] + p2.vel[1] * t[1]; 00028 vj_nt[0] = vel[0] * n[0] + vel[1] * n[1]; 00029 vj_nt[1] = vel[0] * t[0] + vel[1] * t[1]; 00030 00031 /* Interchange particle velocities along normal direction. */ 00032 tmp = vi_nt[0]; 00033 vi_nt[0] = vj_nt[0]; 00034 vj_nt[0] = tmp; 00035 00036 /* Resolve back. */ 00037 p2.vel[0] = vi_nt[0] * n[0] + vi_nt[1] * t[0]; 00038 p2.vel[1] = vi_nt[0] * n[1] + vi_nt[1] * t[1]; 00039 vel[0] = vj_nt[0] * n[0] + vj_nt[1] * t[0]; 00040 vel[1] = vj_nt[0] * n[1] + vj_nt[1] * t[1]; 00041 00042 }
| void particle::step | ( | doublec | t | ) | [inline] |
Increment the particle in time.
Definition at line 51 of file particle.h.
Referenced by integration< D, F >::bruteforce(), boxcollision::down(), boxcollision::left(), boxcollision::right(), integration< D, F >::uniformgridtest(), and boxcollision::up().
00052 { 00053 vel[0] += t*acc[0]; 00054 vel[1] += t*acc[1]; 00055 pos[0] += t*vel[0]; 00056 pos[1] += t*vel[1]; 00057 }
| float particle::acc[2] |
The particles acceleration.
Definition at line 24 of file particle.h.
Referenced by acczero(), integration< D, F >::LJcalc(), particle(), print(), and step().
| float particle::pos[2] |
The particles position.
Definition at line 20 of file particle.h.
Referenced by collisionDynamics(), boxcollision::down(), particledisp::draw(), particlev0spaced::eval(), d2toindex::index(), isIntersecting(), boxcollision::left(), integration< D, F >::LJcalc(), particle(), print(), particledistribution::randomposition(), boxcollision::right(), step(), and boxcollision::up().
| float particle::radius |
The particles radius.
Definition at line 18 of file particle.h.
Referenced by boxcollision::down(), particledisp::draw(), particlev0spaced::eval(), particlev0theta0::eval(), particlev0::eval(), particleranvd::eval(), isIntersecting(), boxcollision::left(), particle(), print(), particledistribution::randomposition(), boxcollision::right(), and boxcollision::up().
| float particle::vel[2] |
The particles velocity.
Definition at line 22 of file particle.h.
Referenced by collisionDynamics(), boxcollision::down(), integration< D, F >::draw(), particlev0spaced::eval(), particlev0theta0::eval(), particlev0::eval(), particleranvd::eval(), boxcollision::left(), particle(), print(), boxcollision::right(), step(), and boxcollision::up().
1.5.8