Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: lib/src/dynamics/joints/rope_joint.dart

Issue 1138063003: pkg/box2d: 0.2.0 release (Closed) Base URL: https://github.com/google/dbox2d.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/src/dynamics/joints/revolute_joint.dart ('k') | lib/src/dynamics/joints/weld_joint.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /******************************************************************************* 1 /*******************************************************************************
2 * Copyright (c) 2015, Daniel Murphy, Google 2 * Copyright (c) 2015, Daniel Murphy, Google
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without modificati on, 5 * Redistribution and use in source and binary forms, with or without modificati on,
6 * are permitted provided that the following conditions are met: 6 * are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright notice, 7 * * Redistributions of source code must retain the above copyright notice,
8 * this list of conditions and the following disclaimer. 8 * this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright notice, 9 * * Redistributions in binary form must reproduce the above copyright notice,
10 * this list of conditions and the following disclaimer in the documentation 10 * this list of conditions and the following disclaimer in the documentation
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 double wB = data.velocities[_indexB].w; 84 double wB = data.velocities[_indexB].w;
85 85
86 final Rot qA = pool.popRot(); 86 final Rot qA = pool.popRot();
87 final Rot qB = pool.popRot(); 87 final Rot qB = pool.popRot();
88 final Vector2 temp = pool.popVec2(); 88 final Vector2 temp = pool.popVec2();
89 89
90 qA.setAngle(aA); 90 qA.setAngle(aA);
91 qB.setAngle(aB); 91 qB.setAngle(aB);
92 92
93 // Compute the effective masses. 93 // Compute the effective masses.
94 Rot.mulToOutUnsafe( 94 Rot.mulToOutUnsafe(qA, temp.setFrom(_localAnchorA).sub(_localCenterA), _rA);
95 qA, temp.setFrom(_localAnchorA).sub(_localCenterA), _rA); 95 Rot.mulToOutUnsafe(qB, temp.setFrom(_localAnchorB).sub(_localCenterB), _rB);
96 Rot.mulToOutUnsafe(
97 qB, temp.setFrom(_localAnchorB).sub(_localCenterB), _rB);
98 96
99 _u.setFrom(cB).add(_rB).sub(cA).sub(_rA); 97 _u.setFrom(cB).add(_rB).sub(cA).sub(_rA);
100 98
101 _length = _u.length; 99 _length = _u.length;
102 100
103 double C = _length - _maxLength; 101 double C = _length - _maxLength;
104 if (C > 0.0) { 102 if (C > 0.0) {
105 _state = LimitState.AT_UPPER; 103 _state = LimitState.AT_UPPER;
106 } else { 104 } else {
107 _state = LimitState.INACTIVE; 105 _state = LimitState.INACTIVE;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 final Rot qB = pool.popRot(); 204 final Rot qB = pool.popRot();
207 final Vector2 u = pool.popVec2(); 205 final Vector2 u = pool.popVec2();
208 final Vector2 rA = pool.popVec2(); 206 final Vector2 rA = pool.popVec2();
209 final Vector2 rB = pool.popVec2(); 207 final Vector2 rB = pool.popVec2();
210 final Vector2 temp = pool.popVec2(); 208 final Vector2 temp = pool.popVec2();
211 209
212 qA.setAngle(aA); 210 qA.setAngle(aA);
213 qB.setAngle(aB); 211 qB.setAngle(aB);
214 212
215 // Compute the effective masses. 213 // Compute the effective masses.
216 Rot.mulToOutUnsafe( 214 Rot.mulToOutUnsafe(qA, temp.setFrom(_localAnchorA).sub(_localCenterA), rA);
217 qA, temp.setFrom(_localAnchorA).sub(_localCenterA), rA); 215 Rot.mulToOutUnsafe(qB, temp.setFrom(_localAnchorB).sub(_localCenterB), rB);
218 Rot.mulToOutUnsafe(
219 qB, temp.setFrom(_localAnchorB).sub(_localCenterB), rB);
220 u.setFrom(cB).add(rB).sub(cA).sub(rA); 216 u.setFrom(cB).add(rB).sub(cA).sub(rA);
221 217
222 double length = u.normalizeLength(); 218 double length = u.normalizeLength();
223 double C = length - _maxLength; 219 double C = length - _maxLength;
224 220
225 C = MathUtils.clampDouble(C, 0.0, Settings.maxLinearCorrection); 221 C = MathUtils.clampDouble(C, 0.0, Settings.maxLinearCorrection);
226 222
227 double impulse = -_mass * C; 223 double impulse = -_mass * C;
228 double Px = impulse * u.x; 224 double Px = impulse * u.x;
229 double Py = impulse * u.y; 225 double Py = impulse * u.y;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 } 271 }
276 272
277 void setMaxLength(double maxLength) { 273 void setMaxLength(double maxLength) {
278 this._maxLength = maxLength; 274 this._maxLength = maxLength;
279 } 275 }
280 276
281 LimitState getLimitState() { 277 LimitState getLimitState() {
282 return _state; 278 return _state;
283 } 279 }
284 } 280 }
OLDNEW
« no previous file with comments | « lib/src/dynamics/joints/revolute_joint.dart ('k') | lib/src/dynamics/joints/weld_joint.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698