2.5: Remove OOPS code from the outliner space, as discussed
[blender-staging.git] / extern / ode / dist / include / ode / mass.h
1 /*************************************************************************
2  *                                                                       *
3  * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
4  * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
5  *                                                                       *
6  * This library is free software; you can redistribute it and/or         *
7  * modify it under the terms of EITHER:                                  *
8  *   (1) The GNU Lesser General Public License as published by the Free  *
9  *       Software Foundation; either version 2.1 of the License, or (at  *
10  *       your option) any later version. The text of the GNU Lesser      *
11  *       General Public License is included with this library in the     *
12  *       file LICENSE.TXT.                                               *
13  *   (2) The BSD-style license that is included with this library in     *
14  *       the file LICENSE-BSD.TXT.                                       *
15  *                                                                       *
16  * This library is distributed in the hope that it will be useful,       *
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
19  * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
20  *                                                                       *
21  *************************************************************************/
22
23 #ifndef _ODE_MASS_H_
24 #define _ODE_MASS_H_
25
26 #include <ode/common.h>
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 struct dMass;
33 typedef struct dMass dMass;
34
35
36 void dMassSetZero (dMass *);
37
38 void dMassSetParameters (dMass *, dReal themass,
39                          dReal cgx, dReal cgy, dReal cgz,
40                          dReal I11, dReal I22, dReal I33,
41                          dReal I12, dReal I13, dReal I23);
42
43 void dMassSetSphere (dMass *, dReal density, dReal radius);
44
45 void dMassSetCappedCylinder (dMass *, dReal density, int direction,
46                              dReal a, dReal b);
47
48 void dMassSetBox (dMass *, dReal density,
49                   dReal lx, dReal ly, dReal lz);
50
51 void dMassAdjust (dMass *, dReal newmass);
52
53 void dMassTranslate (dMass *, dReal x, dReal y, dReal z);
54
55 void dMassRotate (dMass *, const dMatrix3 R);
56
57 void dMassAdd (dMass *a, const dMass *b);
58
59
60
61 struct dMass {
62   dReal mass;
63   dVector4 c;
64   dMatrix3 I;
65
66 #ifdef __cplusplus
67   dMass()
68     { dMassSetZero (this); }
69   void setZero()
70     { dMassSetZero (this); }
71   void setParameters (dReal themass, dReal cgx, dReal cgy, dReal cgz,
72                       dReal I11, dReal I22, dReal I33,
73                       dReal I12, dReal I13, dReal I23)
74     { dMassSetParameters (this,themass,cgx,cgy,cgz,I11,I22,I33,I12,I13,I23); }
75   void setSphere (dReal density, dReal radius)
76     { dMassSetSphere (this,density,radius); }
77   void setCappedCylinder (dReal density, int direction, dReal a, dReal b)
78     { dMassSetCappedCylinder (this,density,direction,a,b); }
79   void setBox (dReal density, dReal lx, dReal ly, dReal lz)
80     { dMassSetBox (this,density,lx,ly,lz); }
81   void adjust (dReal newmass)
82     { dMassAdjust (this,newmass); }
83   void translate (dReal x, dReal y, dReal z)
84     { dMassTranslate (this,x,y,z); }
85   void rotate (const dMatrix3 R)
86     { dMassRotate (this,R); }
87   void add (const dMass *b)
88     { dMassAdd (this,b); }
89 #endif
90 };
91
92
93 #ifdef __cplusplus
94 }
95 #endif
96
97 #endif
98