annotate trunk/chipmunkd/chipmunk.d @ 23:4ceef5833c8c

updated to chipmunk 5.3.3
author Extrawurst
date Fri, 10 Dec 2010 02:10:27 +0100
parents df4ebc8add66
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
1
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
2 // written in the D programming language
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
3
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
4 module chipmunkd.chipmunk;
13
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
5
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
6 import std.stdio;
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
7 import std.string:format;
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
8 import std.conv:to;
23
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
9 import std.math:PI;
13
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
10
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
11 void
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
12 cpMessage(string message, string condition, string file, int line, bool isError)
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
13 {
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
14 stderr.writeln(.format("%s:%s", isError ? "Aborting due to Chipmunk error" : "Chipmunk warning", message));
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
15 stderr.writeln(.format("\tFailed condition: %s", condition));
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
16 stderr.writeln(.format("\tSource: %s(%s)", file, line));
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
17
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
18 if(isError) {debug{assert(false);}else{asm{int 3;}}}
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
19 }
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
20
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
21 debug
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
22 {
13
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
23 template cpAssertWarn(string _condition, string message,string _f = __FILE__,int _l=__LINE__)
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
24 {
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
25 enum cpAssertWarn = "if(!("~_condition~"))"~
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
26 "cpMessage(\""~message~"\",\""~_condition~"\",r\""~_f~"\","~to!string(_l)~",false);";
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
27 }
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
28 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
29 else
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
30 {
13
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
31 template cpAssertWarn(string _condition, string message,string _f = __FILE__,int _l=__LINE__)
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
32 {
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
33 enum cpAssertWarn = "";
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
34 }
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
35 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
36
13
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
37 //TODO
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
38 //#ifdef NDEBUG
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
39 // #define cpAssert(condition, message)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
40 //#else
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
41 // #define cpAssert(condition, message) if(!(condition)) cpMessage(message, #condition, __FILE__, __LINE__, 1)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
42 //#endif
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
43 //
13
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
44
15
df4ebc8add66 rename/refactoring
Extrawurst
parents: 13
diff changeset
45 import chipmunkd.chipmunk_types;
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
46 import core.stdc.stdlib;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
47
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
48 enum INFINITY = cpFloat.infinity;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
49
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
50 // Maximum allocated size for various Chipmunk buffer sizes
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
51 enum CP_BUFFER_BYTES = (32*1024);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
52
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
53 alias core.stdc.stdlib.malloc cpmalloc;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
54 alias core.stdc.stdlib.calloc cpcalloc;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
55 alias core.stdc.stdlib.realloc cprealloc;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
56 alias core.stdc.stdlib.free cpfree;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
57
15
df4ebc8add66 rename/refactoring
Extrawurst
parents: 13
diff changeset
58 public import chipmunkd.cpVect;
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
59 public import chipmunkd.cpBB;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
60 public import chipmunkd.cpArray;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
61 public import chipmunkd.cpHashSet;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
62 public import chipmunkd.cpSpaceHash;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
63 //
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
64 public import chipmunkd.cpBody;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
65 public import chipmunkd.cpShape;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
66 public import chipmunkd.cpPolyShape;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
67 //
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
68 public import chipmunkd.cpArbiter;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
69 public import chipmunkd.cpCollision;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
70 //
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
71 public import chipmunkd.constraints.cpConstraint;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
72 //
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
73 public import chipmunkd.cpSpace;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
74 public import chipmunkd.cpSpaceComponent;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
75 public import chipmunkd.cpSpaceQuery;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
76 public import chipmunkd.cpSpaceStep;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
77
15
df4ebc8add66 rename/refactoring
Extrawurst
parents: 13
diff changeset
78 public import chipmunkd.chipmunk_types;
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
79
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
80 enum cpHashValue CP_HASH_COEF = cast(cpHashValue)(3344921057uL); // ulong to uint ??
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
81 static cpHashValue CP_HASH_PAIR(T)(T A, T B) {return (cast(cpHashValue)(A)*CP_HASH_COEF ^ cast(cpHashValue)(B)*CP_HASH_COEF);}
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
82
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
83 extern const char *cpVersionString;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
84 void cpInitChipmunk()
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
85 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
86 cpInitCollisionFuncs();
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
87 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
88
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
89 /**
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
90 Calculate the moment of inertia for a circle.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
91 r1 and r2 are the inner and outer diameters. A solid circle has an inner diameter of 0.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
92 */
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
93 cpFloat
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
94 cpMomentForCircle(cpFloat m, cpFloat r1, cpFloat r2, cpVect offset)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
95 {
23
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
96 return m*(0.5f*(r1*r1 + r2*r2) + cpvlengthsq(offset));
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
97 }
23
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
98
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
99 /**
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
100 Calculate area of a hollow circle.
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
101 */
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
102 cpFloat cpAreaForCircle(cpFloat r1, cpFloat r2)
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
103 {
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
104 return 2.0f*cast(cpFloat)PI*cpfabs(r1*r1 - r2*r2);
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
105 }
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
106
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
107 /**
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
108 Calculate the moment of inertia for a line segment.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
109 Beveling radius is not supported.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
110 */
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
111 cpFloat
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
112 cpMomentForSegment(cpFloat m, cpVect a, cpVect b)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
113 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
114 cpFloat length = cpvlength(cpvsub(b, a));
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
115 cpVect offset = cpvmult(cpvadd(a, b), 1.0f/2.0f);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
116
23
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
117 return m*(length*length/12.0f + cpvlengthsq(offset));
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
118 }
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
119
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
120 /**
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
121 Calculate the area of a fattened (capsule shaped) line segment.
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
122 */
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
123 cpFloat
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
124 cpAreaForSegment(cpVect a, cpVect b, cpFloat r)
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
125 {
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
126 return 2.0f*r*(cast(cpFloat)PI*r + cpvdist(a, b));
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
127 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
128
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
129 /**
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
130 Calculate the moment of inertia for a solid polygon shape.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
131 */
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
132 cpFloat
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
133 cpMomentForPoly(cpFloat m, const int numVerts, cpVect *verts, cpVect offset)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
134 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
135 cpVect *tVerts = cast(cpVect *)cpcalloc(numVerts, cpVect.sizeof);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
136 for(int i=0; i<numVerts; i++)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
137 tVerts[i] = cpvadd(verts[i], offset);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
138
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
139 cpFloat sum1 = 0.0f;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
140 cpFloat sum2 = 0.0f;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
141 for(int i=0; i<numVerts; i++){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
142 cpVect v1 = tVerts[i];
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
143 cpVect v2 = tVerts[(i+1)%numVerts];
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
144
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
145 cpFloat a = cpvcross(v2, v1);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
146 cpFloat b = cpvdot(v1, v1) + cpvdot(v1, v2) + cpvdot(v2, v2);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
147
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
148 sum1 += a*b;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
149 sum2 += a;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
150 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
151
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
152 cpfree(tVerts);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
153 return (m*sum1)/(6.0f*sum2);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
154 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
155
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
156 /**
23
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
157 Calculate the signed area of a polygon.
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
158 */
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
159 cpFloat cpAreaForPoly(const int numVerts, const cpVect *verts)
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
160 {
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
161 cpFloat area = 0.0f;
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
162 for(int i=0; i<numVerts; i++){
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
163 area += cpvcross(verts[i], verts[(i+1)%numVerts]);
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
164 }
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
165
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
166 return area/2.0f;
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
167 }
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
168
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
169 /**
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
170 Calculate the natural centroid of a polygon.
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
171 */
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
172 cpVect cpCentroidForPoly(const int numVerts, const cpVect *verts)
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
173 {
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
174 cpFloat sum = 0.0f;
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
175 cpVect vsum = cpvzero;
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
176
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
177 for(int i=0; i<numVerts; i++){
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
178 cpVect v1 = verts[i];
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
179 cpVect v2 = verts[(i+1)%numVerts];
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
180 cpFloat cross = cpvcross(v1, v2);
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
181
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
182 sum += cross;
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
183 vsum = cpvadd(vsum, cpvmult(cpvadd(v1, v2), cross));
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
184 }
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
185
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
186 return cpvmult(vsum, 1.0f/(3.0f*sum));
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
187 }
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
188
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
189 /**
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
190 Center the polygon on the origin. (Subtracts the centroid of the polygon from each vertex)
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
191 */
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
192 void cpRecenterPoly(const int numVerts, cpVect *verts)
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
193 {
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
194 cpVect centroid = cpCentroidForPoly(numVerts, verts);
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
195
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
196 for(int i=0; i<numVerts; i++){
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
197 verts[i] = cpvsub(verts[i], centroid);
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
198 }
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
199 }
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
200
4ceef5833c8c updated to chipmunk 5.3.3
Extrawurst
parents: 15
diff changeset
201 /**
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
202 Calculate the moment of inertia for a solid box.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
203 */
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
204 cpFloat
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
205 cpMomentForBox(cpFloat m, cpFloat width, cpFloat height)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
206 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
207 return m*(width*width + height*height)/12.0f;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
208 }