Overview
SWIFT is a library for collision detection, distance computation, and contact determination of three-dimensional polygonal objects undergoing rigid motion (rotation and translation). SWIFT has been implemented carefully in C++ in order to be as fast and memory efficient as possible. It features improvements over previous algorithms and implementations. Provided is a simple yet powerful API. In addition, SWIFT is a test bed for active research in collision detection, so enhancements are likely in the future.SWIFT can handle geometric models that are:
- Closed - there are no boundaries
- Polyhedral Representation - the objects must be composed of a set of polygons which describe the boundary of a solid in 3D
- Convex or Composed of Convex Pieces - the objects must be either convex or be a set of convex pieces (in a future version, this may be relaxed to allow arbitrary non-convex polyhedra). To use non-convex polyhedra, check out SWIFT++.
SWIFT can perform four types of proximity queries:
- Intersection (Collision) Detection - detecting whether two objects intersect (penetrate)
- Approximate Distance Computation - computing the minimum distance with an error bound between a pair of objects
- Exact Distance Computation - computing the minimum distance between a pair of objects
- Contact Determination - computing the closest features (vertex,edge,face) for a pair of objects
SWIFT has other key features:
- Fast - query is significantly faster than other packages (I-Collide, V-Clip)
- Robust - as robust as or more robust than other packages
- Hierarchy - a simplified bounding hierarchy around each object, which can either be provided by the application or created automatically, accelerates proximity queries
- Non-Coherent Query - efficient querying even if coherence is not present
- Bounding Box Pruning - bounding boxes are placed around each object to prune unnecessary computation through a sweep and prune sorting algorithm
- Bounding Box Type Choosing - bounding boxes types can be chosen automatically
- Static Objects and Pair Activation Control - objects that are declared static (fixed or not moving) are automatically optimized for and any pair may be activated or deactivated
- Flexible Object Manipulation - objects may be added to a scene through arrays or through files of various formats and may be copied and deleted
- Object Geometry Sharing - objects that are made of the same geometry can share that geometry
More Information
- Features in Detail - a more detailed description of the features
- Publications - a list of publications related to the algorithms used in SWIFT
- Download - download information
- User Manual - .ps (137 k) or .pdf (102 k)
- Main API Include File
Author: Stephen Ehmann
Maintained by: ehmann@cs.unc.edu
Copyright 2000
Last Modification: Aug 15, 2001
Accesses since Oct 2000