1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Open Dynamics Engine: mass.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>mass.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*************************************************************************</span>
<a name="l00002"></a>00002 <span class="comment"> * *</span>
<a name="l00003"></a>00003 <span class="comment"> * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. *</span>
<a name="l00004"></a>00004 <span class="comment"> * All rights reserved. Email: russ@q12.org Web: www.q12.org *</span>
<a name="l00005"></a>00005 <span class="comment"> * *</span>
<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or *</span>
<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of EITHER: *</span>
<a name="l00008"></a>00008 <span class="comment"> * (1) The GNU Lesser General Public License as published by the Free *</span>
<a name="l00009"></a>00009 <span class="comment"> * Software Foundation; either version 2.1 of the License, or (at *</span>
<a name="l00010"></a>00010 <span class="comment"> * your option) any later version. The text of the GNU Lesser *</span>
<a name="l00011"></a>00011 <span class="comment"> * General Public License is included with this library in the *</span>
<a name="l00012"></a>00012 <span class="comment"> * file LICENSE.TXT. *</span>
<a name="l00013"></a>00013 <span class="comment"> * (2) The BSD-style license that is included with this library in *</span>
<a name="l00014"></a>00014 <span class="comment"> * the file LICENSE-BSD.TXT. *</span>
<a name="l00015"></a>00015 <span class="comment"> * *</span>
<a name="l00016"></a>00016 <span class="comment"> * This library is distributed in the hope that it will be useful, *</span>
<a name="l00017"></a>00017 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span>
<a name="l00018"></a>00018 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files *</span>
<a name="l00019"></a>00019 <span class="comment"> * LICENSE.TXT and LICENSE-BSD.TXT for more details. *</span>
<a name="l00020"></a>00020 <span class="comment"> * *</span>
<a name="l00021"></a>00021 <span class="comment"> *************************************************************************/</span>
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef _ODE_MASS_H_</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define _ODE_MASS_H_</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#include <ode/common.h></span>
<a name="l00027"></a>00027
<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00030"></a>00030 <span class="preprocessor">#endif</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span>
<a name="l00032"></a>00032 <span class="keyword">struct </span>dMass;
<a name="l00033"></a>00033 <span class="keyword">typedef</span> <span class="keyword">struct </span>dMass dMass;
<a name="l00034"></a>00034
<a name="l00043"></a>00043 ODE_API <span class="keywordtype">int</span> dMassCheck(<span class="keyword">const</span> dMass *m);
<a name="l00044"></a>00044
<a name="l00045"></a>00045 ODE_API <span class="keywordtype">void</span> dMassSetZero (dMass *);
<a name="l00046"></a>00046
<a name="l00047"></a>00047 ODE_API <span class="keywordtype">void</span> dMassSetParameters (dMass *, dReal themass,
<a name="l00048"></a>00048 dReal cgx, dReal cgy, dReal cgz,
<a name="l00049"></a>00049 dReal I11, dReal I22, dReal I33,
<a name="l00050"></a>00050 dReal I12, dReal I13, dReal I23);
<a name="l00051"></a>00051
<a name="l00052"></a>00052 ODE_API <span class="keywordtype">void</span> dMassSetSphere (dMass *, dReal density, dReal radius);
<a name="l00053"></a>00053 ODE_API <span class="keywordtype">void</span> dMassSetSphereTotal (dMass *, dReal total_mass, dReal radius);
<a name="l00054"></a>00054
<a name="l00055"></a>00055 ODE_API <span class="keywordtype">void</span> dMassSetCapsule (dMass *, dReal density, <span class="keywordtype">int</span> direction,
<a name="l00056"></a>00056 dReal radius, dReal length);
<a name="l00057"></a>00057 ODE_API <span class="keywordtype">void</span> dMassSetCapsuleTotal (dMass *, dReal total_mass, <span class="keywordtype">int</span> direction,
<a name="l00058"></a>00058 dReal radius, dReal length);
<a name="l00059"></a>00059
<a name="l00060"></a>00060 ODE_API <span class="keywordtype">void</span> dMassSetCylinder (dMass *, dReal density, <span class="keywordtype">int</span> direction,
<a name="l00061"></a>00061 dReal radius, dReal length);
<a name="l00062"></a>00062 ODE_API <span class="keywordtype">void</span> dMassSetCylinderTotal (dMass *, dReal total_mass, <span class="keywordtype">int</span> direction,
<a name="l00063"></a>00063 dReal radius, dReal length);
<a name="l00064"></a>00064
<a name="l00065"></a>00065 ODE_API <span class="keywordtype">void</span> dMassSetBox (dMass *, dReal density,
<a name="l00066"></a>00066 dReal lx, dReal ly, dReal lz);
<a name="l00067"></a>00067 ODE_API <span class="keywordtype">void</span> dMassSetBoxTotal (dMass *, dReal total_mass,
<a name="l00068"></a>00068 dReal lx, dReal ly, dReal lz);
<a name="l00069"></a>00069
<a name="l00070"></a>00070 ODE_API <span class="keywordtype">void</span> dMassSetTrimesh (dMass *, dReal density, dGeomID g);
<a name="l00071"></a>00071
<a name="l00072"></a>00072 ODE_API <span class="keywordtype">void</span> dMassSetTrimeshTotal (dMass *m, dReal total_mass, dGeomID g);
<a name="l00073"></a>00073
<a name="l00074"></a>00074 ODE_API <span class="keywordtype">void</span> dMassAdjust (dMass *, dReal newmass);
<a name="l00075"></a>00075
<a name="l00076"></a>00076 ODE_API <span class="keywordtype">void</span> dMassTranslate (dMass *, dReal x, dReal y, dReal z);
<a name="l00077"></a>00077
<a name="l00078"></a>00078 ODE_API <span class="keywordtype">void</span> dMassRotate (dMass *, <span class="keyword">const</span> dMatrix3 R);
<a name="l00079"></a>00079
<a name="l00080"></a>00080 ODE_API <span class="keywordtype">void</span> dMassAdd (dMass *a, <span class="keyword">const</span> dMass *b);
<a name="l00081"></a>00081
<a name="l00082"></a>00082 <span class="comment">// Backwards compatible API</span>
<a name="l00083"></a>00083 <span class="preprocessor">#define dMassSetCappedCylinder dMassSetCapsule</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#define dMassSetCappedCylinderTotal dMassSetCapsuleTotal</span>
<a name="l00085"></a>00085 <span class="preprocessor"></span>
<a name="l00086"></a>00086
<a name="l00087"></a>00087 <span class="keyword">struct </span>dMass {
<a name="l00088"></a>00088 dReal mass;
<a name="l00089"></a>00089 dVector4 c;
<a name="l00090"></a>00090 dMatrix3 I;
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span> dMass()
<a name="l00094"></a>00094 { dMassSetZero (<span class="keyword">this</span>); }
<a name="l00095"></a>00095 <span class="keywordtype">void</span> setZero()
<a name="l00096"></a>00096 { dMassSetZero (<span class="keyword">this</span>); }
<a name="l00097"></a>00097 <span class="keywordtype">void</span> setParameters (dReal themass, dReal cgx, dReal cgy, dReal cgz,
<a name="l00098"></a>00098 dReal I11, dReal I22, dReal I33,
<a name="l00099"></a>00099 dReal I12, dReal I13, dReal I23)
<a name="l00100"></a>00100 { dMassSetParameters (<span class="keyword">this</span>,themass,cgx,cgy,cgz,I11,I22,I33,I12,I13,I23); }
<a name="l00101"></a>00101 <span class="keywordtype">void</span> setSphere (dReal density, dReal radius)
<a name="l00102"></a>00102 { dMassSetSphere (<span class="keyword">this</span>,density,radius); }
<a name="l00103"></a>00103 <span class="keywordtype">void</span> setCapsule (dReal density, <span class="keywordtype">int</span> direction, dReal a, dReal b)
<a name="l00104"></a>00104 { dMassSetCappedCylinder (<span class="keyword">this</span>,density,direction,a,b); }
<a name="l00105"></a>00105 <span class="keywordtype">void</span> setCappedCylinder (dReal density, <span class="keywordtype">int</span> direction, dReal a, dReal b)
<a name="l00106"></a>00106 { setCapsule(density, direction, a, b); }
<a name="l00107"></a>00107 <span class="keywordtype">void</span> setBox (dReal density, dReal lx, dReal ly, dReal lz)
<a name="l00108"></a>00108 { dMassSetBox (<span class="keyword">this</span>,density,lx,ly,lz); }
<a name="l00109"></a>00109 <span class="keywordtype">void</span> adjust (dReal newmass)
<a name="l00110"></a>00110 { dMassAdjust (<span class="keyword">this</span>,newmass); }
<a name="l00111"></a>00111 <span class="keywordtype">void</span> translate (dReal x, dReal y, dReal z)
<a name="l00112"></a>00112 { dMassTranslate (<span class="keyword">this</span>,x,y,z); }
<a name="l00113"></a>00113 <span class="keywordtype">void</span> rotate (<span class="keyword">const</span> dMatrix3 R)
<a name="l00114"></a>00114 { dMassRotate (<span class="keyword">this</span>,R); }
<a name="l00115"></a>00115 <span class="keywordtype">void</span> <span class="keyword">add</span> (<span class="keyword">const</span> dMass *b)
<a name="l00116"></a>00116 { dMassAdd (<span class="keyword">this</span>,b); }
<a name="l00117"></a>00117 <span class="preprocessor">#endif</span>
<a name="l00118"></a>00118 <span class="preprocessor"></span>};
<a name="l00119"></a>00119
<a name="l00120"></a>00120
<a name="l00121"></a>00121 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00122"></a>00122 <span class="preprocessor"></span>}
<a name="l00123"></a>00123 <span class="preprocessor">#endif</span>
<a name="l00124"></a>00124 <span class="preprocessor"></span>
<a name="l00125"></a>00125 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 12 08:36:51 2007 for Open Dynamics Engine by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
</body>
</html>
|