Class pv.Constraint.collision
Constraints circles to avoid overlap. Each particle is treated as a circle, with the radius of the particle computed using a specified function. For example, if the particle has an r attribute storing the radius, the radius function(d) d.r specifies a collision constraint using this radius. The radius function is passed each pv.Particle as the first argument.
To accelerate collision detection, this implementation uses a quadtree and
a search radius. The search radius is computed as the maximum radius of all
particles in the simulation.
Defined in: CollisionConstraint.js.
Constructor Attributes | Constructor Name and Description |
---|---|
pv.Constraint.collision(radius)
Constructs a new collision constraint.
|
Method Attributes | Method Name and Description |
---|---|
apply(particles, q)
Applies this constraint to the specified particles.
|
|
repeat(x)
Sets or gets the repeat count.
|
Class Detail
pv.Constraint.collision(radius)
Constructs a new collision constraint. The default search radius is 10, and
the default repeat count is 1. A radius function must be specified to compute
the radius of particles.
- Parameters:
- {function} radius
- the radius function.
- See:
- pv.Constraint
Method Detail
apply(particles, q)
Applies this constraint to the specified particles.
- Parameters:
- {pv.Particle} particles
- particles to which to apply this constraint.
- {pv.Quadtree} q
- a quadtree for spatial acceleration.
{pv.Constraint.collision}
repeat(x)
Sets or gets the repeat count. If the repeat count is greater than 1, the
constraint will be applied repeatedly; this is a form of the Gauss-Seidel
method for constraints relaxation. Repeating the collision constraint makes
the constraint have more of an effect when there is a potential for many
co-occurring collisions.
- Parameters:
- {number} x
- the number of times to repeat this constraint.
- Returns:
- {pv.Constraint.collision} this.