Chipmunk2D is a 2-dimensional
real-time
Real-time or real time describes various operations in computing or other processes that must guarantee response times within a specified time (deadline), usually a relatively short time. A real-time process is generally one that happens in defined ...
rigid body
In physics, a rigid body (also known as a rigid object) is a solid body in which deformation is zero or so small it can be neglected. The distance between any two given points on a rigid body remains constant in time regardless of external fo ...
physics engine
A physics engine is computer software that provides an approximate simulation of certain physical systems, such as rigid body dynamics (including collision detection), soft body dynamics, and fluid dynamics, of use in the domains of computer ...
written by Scott Lembcke that is designed to be portable, lightweight, fast, and easy to use. Prior to version 7, two main versions of the library existed. ''Chipmunk2D Free'' was written purely in
C99
C99 (previously known as C9X) is an informal name for ISO/IEC 9899:1999, a past version of the C programming language standard. It extends the previous version ( C90) with new features for the language and the standard library, and helps imp ...
, and freely available under the terms of the
MIT License
The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license co ...
. ''Chipmunk2D Pro'' was a proprietary upgrade designed for development on mobile devices. It included several high-level subroutines in
Objective-C
Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its N ...
, and floating-point optimizations for the
ARM processor. However, after version 7 the project was fully open-sourced.
Aside from Objective-C, there are official bindings for
Ruby
A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum (aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapp ...
, and third party interfaces exist for
Python,
Haskell
Haskell () is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research and industrial applications, Haskell has pioneered a number of programming lan ...
,
OCaml
OCaml ( , formerly Objective Caml) is a general-purpose, multi-paradigm programming language which extends the Caml dialect of ML with object-oriented features. OCaml was created in 1996 by Xavier Leroy, Jérôme Vouillon, Damien Doligez, D ...
, and others. Chipmunk is endorsed by a number of game libraries, includin
Aerosol Gosu
Gosu (고수) is a Korean term used to refer to a highly skilled person. In computer gaming the term is usually used to refer to a person who dominated games like ''StarCraft'', '' Counter-Strike'', Tekken, '' Warcraft III'', '' Diablo II'', ' ...
, and
Cocos2d
Cocos2d is a free software framework. It can be used to build games, apps and other cross platform GUI based interactive programs.
Cocos2d contains many branches with the best known being Cocos2d-objc, Cocos2d-x, Cocos2d-html5 and Cocos2d-X ...
.
Features
Chipmunk supports multiple collision primitives attached to one rigid body, and bodies may be joined by constraints. It has a flexible
collision detection
Collision detection is the computational problem of detecting the intersection (Euclidean geometry), intersection of two or more objects. Collision detection is a classic issue of computational geometry and has applications in various computing ...
system with layers, exclusion groups and collision callbacks. Callbacks are defined based on user definable "collision types" and may reject collisions and even override the calculation of friction and elasticity coefficients.
Version 7 of the library introduced "Autogeometry", an
image tracing
In computer graphics, image tracing, raster-to-vector conversion or raster vectorization is the conversion of raster graphics into vector graphics.
Background
An image does not have any structure: it is just a collection of marks on paper, grain ...
feature that transforms a raster graphic into a polygonal shape usable by the library. This feature is currently only available in the
Objective-C
Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its N ...
version of the library.
Chipmunk has been widely used on the
iPhone, Mac/Windows/Linux, and other platforms, including
Nintendo Wii
The Wii ( ) is a home video game console developed and marketed by Nintendo. It was released on November 19, 2006, in North America and in December 2006 for most other Regional lockout, regions of the world. It is Nintendo's fifth major ho ...
and
Sony PSP.
"Chipmunk Physics ported to the PSP"
/ref>
See also
* Box2D
Box2D is a free open source 2-dimensional physics simulator engine written in C++ by Erin Catto and published under the MIT license. It has been used in '' Crayon Physics Deluxe'', ''Limbo'', ''Rolando'', '' Incredibots'', ''Angry Birds'', '' ...
References
External links
*
Chipmunk Forums
Chipmunks Ruby Bindings
with more functionality wrapped.
chipmunk-ffi
a more up-to-date Ruby interface using Nice-FFI.
Demos of Chipmunk on YouTube
{{DEFAULTSORT:Chipmunk Physics Engine
Computer physics engines
Free computer libraries
Software using the MIT license