Collision#

Approximate collision penalties for the explicit solver.

This inexpensive randomized vertex-pair model is useful for previews only. It has no continuous collision detection or non-penetration guarantee. Frictionless IPC lives in diffsim.ipc because it must be coupled to an implicit nonlinear solve.

class diffsim.collision.SimplifiedCollisionHandler(collision_distance=0.02, repulsion_stiffness=10000.0, max_checks_per_frame=1000)[source]#

Bases: object

Fast simplified collision detection for real-time simulation

Uses distance-based repulsion without full CCD

__init__(collision_distance=0.02, repulsion_stiffness=10000.0, max_checks_per_frame=1000)[source]#
Parameters:
  • collision_distance – minimum distance threshold

  • repulsion_stiffness – strength of repulsion forces

  • max_checks_per_frame – maximum collision checks per frame (for performance)

compute_self_collision_forces(mesh, positions)[source]#

Fast self-collision detection using simple distance checks

Parameters:
  • mesh – TetrahedralMesh

  • positions\((N, 3)\) current positions

Returns:

\((N, 3)\) repulsion forces

Return type:

forces