Cells-ode is a CLOS abstraction layer for Thomas Atkins' cl-ode using Ken Tilton's cells. The purpose is to treat ODE objects just like CLOS objects with cells' data flow extensions. cells-ode has been tested on SBCL/Linux and ACL/Windows. It does not use implementation specific extensions, so it should be straightforward to port to other implementations.


Cells-ode has been developed by Peter Hildebrandt. Thanks go to Ken Tilton for invaluable support.


The dependencies are cl-ode 0.8 (asdf-install), cells 3.0 from CVS, and cffi 0.9.2 (asdf-install) or from darcs.


cells-ode is a fairly complete mapping of ODE 0.8, lacking only a few advanced features. One of the highlights is fully transparent support for collision detection. Among the extensions planned for the near future are primitives for composite objects and a DSL for scene descriptions.


In the following I will give a few usage examples taken from test-c-ode.lisp. For example, to create a sphere object with a corresponding mass, you might say:
(make-instance 'body :md-name :body1
               :position (c-in #(0 -1 1))
               :mass (c-in (make-instance 'sphere-mass :radius (c-in .5))))
;; Instead of about half a dozen ODE calls via cl-ode
Attaching a joint to body1 and body2 is straightforward, too:
(make-instance 'body :md-name :body1 :position (c-in #(10 0 .5))
               :mass (make-instance 'sphere-mass :mass 30))
(make-instance 'body :md-name :body2 :position (c-in #(10.6 0 .5)) 
               :mass (make-instance 'sphere-mass :mass .5))
(make-instance 'hinge-joint :md-name :joint
               :axis #(1 0 0) :anchor #(10.5 0.5 .5)
               :body-1 (obj :body1) :body-2 (obj :body2))
;; (obj :name) references objects by their md-name.


You can get the latest version via WebCVS. If you have a common-lisp.net account, you can also use CVS directly:

cvs -z3 -d :ext:<username>@common-lisp.net:/project/<project-name>/cvsroot co <module>
Unfortunately anonymous CVS checkout appears to be broken. If you are feeling lucky, feel free to try:
cvs -z3 -d :pserver:anonymous:anonymous@common-lisp.net:/project/cells-ode/cvsroot co cells-ode

Back to Common-lisp.net.

Valid XHTML 1.0 Strict