4 the rules for this file:
5 * entries are sorted newest-first.
6 * summarize sets of changes - dont reproduce every CVS log comment here.
7 * don't ever delete anything.
8 * keep the format consistent (79 char width, M/D/Y date format).
10 ------------------------------------------------------------------------------
11 03/26/2024 Oleh Derevenko
12 * Autotools build scripts, when configured with "--enable-libccd",
13 will now assign all the relevant colliders to the libccd.
14 Before, it used to keep default collider for Box-Cylinder pair and
15 that was inconsistent with other configuration methods (CMake and
16 premake4.exe). To obtain the old behavior configure as
17 "--enable-libccd --with-box-cylinder=default".
19 06/28/2023 Oleh Derevenko
20 * dJointAddPUTorques() was added to replace orphaned declaration of
23 06/24/2023 Oleh Derevenko (by Tilmann)
24 * Fixed a missing break in a switch statement in demo_jointPU.cpp while
25 handling gravity switching request.
26 * Fixed wrong face index being returned in convex-trimesh libCCD
27 collision check routine.
28 * Fixed use of potentially outdated AABBs in GIIMPACT cylinder-trimesh
29 collision check routine.
31 11/08/2020 Steve Peters
32 * dGeomBoxPointDepth implementation was fixed for locations outside of
35 10/16/2020 Oleh Derevenko
36 * A fault on method call from within Joint class destructor in Python
37 bindings fixed (by Tyler Limkemann)
39 07/28/2020 Oleh Derevenko
40 * A threaded job data race fixed on job release (issue #70).
41 The bug could cause writes to functions's stack area after
42 the function returned and World simulation errors not being reported
43 with the function result if the simulation failed.
45 05/11/2020 Oleh Derevenko
46 * GIMPACT math macros were changed to use standard floating point math
47 rather than custom "optimized" implementations.
49 02/19/2020 Oleh Derevenko
50 * libCCD configuration description strings have been added for
51 use with dGetConfiguration() and dCheckConfiguration().
53 03/06/2019 Oleh Derevenko
54 * dWorldAttachQuickStepDynamicIterationStatisticsSink public function
55 was added to allow dynamic step count adjustment monitoring for
58 02/21/2019 Oleh Derevenko
59 * Dynamic step count adjustment was implemented for dWorldQuickStep
60 with dWorldSetQuickStepDynamicIterationParameters and
61 dWorldGetQuickStepDynamicIterationParameters new API functions
62 to control the feature.
63 The solver estimates per body resulting contact force maximal
64 absolute adjustment value and may exit after fewer iterations if
65 the adjustments get smaller than the given threshold, or iterate
66 longer if the adjustments are still significant after the default
67 iteration count is executed.
69 01/20/2019 Oleh Derevenko
70 * x86 targets have been changed to generate SSE2 code for calculations
71 by default with possibility to explicitly configure back for FPU.
73 11/12/2018 Oleh Derevenko
74 * The commentary from 11/05/2018 was wrong. The constraints were not
75 reset to their natural order and remained randomized.
76 The other thing that was missing was full contraint reorder without
77 separation into independent and dependent ones. The algorithm doesn't
78 converge without it well.
80 11/10/2018 Oleh Derevenko
81 * An incorrect optimization to Jacobian Copy building code from #1938
82 that resulted in corrupt data in multi-threaded execution mode was
85 11/05/2018 Oleh Derevenko
86 * An unintended change from commit #1898 has been reverted.
87 The QuickStep used to solve with randomized constraint order
88 each 8th iteration. The other iterations, the constraints
89 were reset to their natural order, as generated, with the dependent
90 constraints gathered in reverse order at end (the reverse order is
91 somehow important). With the commit #1898 the constraints were
92 randomly reordered each 8th iteration but then remained
93 in that randomized order and only were re-randomized on subsequent
96 10/09/2017 Markus Rickert
97 * CMake support for project file generation has been added.
99 06/14/2017 Oleh Derevenko
100 * dxHashSpace::collide() has been changed to fault host program
101 if scene gets too large and causes integer overflow.
103 06/06/2017 Oleh Derevenko
104 * Memory and pointer size integer type use has been changed so that
105 internal typedefs are used instead of "_t" suffixed types.
107 05/09/2017 Oleh Derevenko
108 * Introduction of cooperative algorithms API.
109 L*D*LT cooperative factorization and linear equation system
110 cooperative solving have been implemented.
111 * AtomicReadReorderBarrier, AtomicStore, AtomicStorePointer functions
112 have been added and some atomic function implementations have been
115 02/20/2017 Oleh Derevenko
116 * Project generation options have been changed to have built-in
117 multithreaded threading implementation enabled by default.
119 02/19/2017 Oleh Derevenko
120 * dWorldStep threaded implementation has been extended to the final
121 steps of constraint force applications and body position updates
122 after the LCP solving. Note that body callbacks (if set) may be
123 called from multiple threads if threaded execution is enabled.
124 * OU atomicord32 type has been fixed to be unsigned on all supported
127 01/09/2017 Oleh Derevenko
128 * dGeomTriMeshDataPreprocess2() public function has been added to
129 replace dGeomTriMeshDataPreprocess(). Face angles pre-computation
130 for triangle meshes has been implemented.
132 11/13/2016 Oleh Derevenko
133 * dGeomTriMeshDataGetBuff and dGeomTriMeshDataSetBuff have been marked
134 deprecated and their functionality implemented via
135 dGeomTriMeshDataGet and dGeomTriMeshDataSet. Extra function variant
136 dGeomTriMeshDataGet2() has been added to allow returning data size.
138 11/07/2016 Oleh Derevenko
139 * The implementation of OPCODE TriMesh data pre-processing
140 (dGeomTriMeshDataPreprocess()) has been optimized to only contain
141 a sort and a single pass over edges (used to be a sort and O(N^2)).
143 10/29/2016 Oleh Derevenko
144 * dGeomTriMeshDataPreprocess() public function has been changed to
145 return a boolean status (it can fail in low memory conditions).
147 07/10/2016 Oleh Derevenko
148 * The correct handling of dJOINT_REVERSE mode for AngularMotor Joint
149 implemented (issue #37).
151 06/29/2016 Oleh Derevenko
152 * A bug fixed with HashSpace calling big boxes collision twice
153 (both straight and reverse geometries order) since revision #1831.
155 06/03/2016 Oleh Derevenko
156 * dJointSetHinge2Axes public function has been added and
157 dJointSetHinge2Axis1/2 have been marked deprecated due to being
160 05/13/2016 Oleh Derevenko
161 * ICE Container class allocation strategy fixed to avoid reserving
162 excess memory with large collections.
164 05/10/2016 Oleh Derevenko
165 * dSafeNormalize3 and dSafeNormalize4 functions changed to leave the
166 parameter intact instead of replacing it with the X-axis unit in case
169 04/12/2016 Oleh Derevenko
170 * A function to create a self-threaded threading implementation object
171 has been moved back to public headers as there could be a use for it
172 while running several worlds in parallel threads.
174 01/09/2016 Oleh Derevenko
175 * Hinge2 joint corected to avoid faulting asserts when the axes get
176 temporarily invalid during assignments (suggested by David Mansolino)
178 01/03/2016 Oleh Derevenko
179 * An invalid memory access fixed in dxSAPSpace::BoxPruning() in case
180 if there were NaN values in AABBs to be sorted.
182 12/25/2015 Oleh Derevenko
183 * Unexpected joint mode assignment (instead of comparison) fixed within
184 an dUASSERT in dJointSetTransmissionAxis2() of transmission joint
186 11/28/2015 Oleh Derevenko
187 * Convex-Trimesh collider added (libccd+GIMPACT only)(by Piotr Piastucki)
188 * dCreateConvex() and dGeomSetConvex() public APIs changed to expect
189 their parameter arrays as const pointers
191 11/01/2015 Oleh Derevenko
192 * OPCODE mesh colliders' input coordinates have been offset to
193 mesh-relative frames to decrease potential computational errors
194 (suggested by luckytrashsc2@g***l.com)
196 08/05/2015 Oleh Derevenko
197 * Implemented change to return highest depth contacts subset for GIMPACT
198 in cases if contacts count exceeds requested maximum (as suggested in
199 the issue #36 by Piotr Piastucki)
201 11/17/2014 Daniel K. O.
202 * Added support for using libccd from the system (if found via
205 11/10/2014 Oleh Derevenko
206 * Floating point division by zero in capsule-ray collision routine
207 in case if the ray axis was parallel the cylinder and the ray started
208 from within it fixed (issue #26)
210 11/08/2014 Oleh Derevenko
211 * Threading support has been extended to complete implementation
214 10/29/2014 Daniel K. O.
215 * Added dJointSetDBallDistance
217 10/19/2014 Oleh Derevenko
218 * Built-in threading implementation compilation fixed for OSX
219 (clock_gettime() is missing from the system - reported by Bram)
221 08/10/2014 Oleh Derevenko
222 * Declarations of dWorld[Get/Set]AutoDisableLinearAverageThreshold and
223 dWorld[Get/Set]AutoDisableAngularAverageThreshold have been removed
224 from public headers (were orphaned since rev.1052)
226 07/16/2014 Oleh Derevenko
227 * Two fixes by Francesco Cat applied (fixes for mistakes made during
228 code style improvements in the past)
230 02/27/14 Daniel K. O.
231 * Added dODE_VERSION macro to public headers (issue #24).
233 02/11/14 Daniel K. O.
234 * Added dJointGetHinge2Angle2 (issue #12).
236 02/07/14 Daniel K. O.
237 * Added dWorldSetData/dWorldGetData (issue #21).
239 01/31/14 Daniel K. O.
240 * Applied patch #185: Stable, implicit gyroscopic forces.
242 01/27/14 Daniel K. O.
243 * Fixed cylinder AABB computation.
245 01/25/14 Daniel K. O.
246 * Removed ALLOCA calls from dHashSpace; it should not depend
247 on stack size limits anymore.
249 12/06/13 Daniel K. O.
250 * Applied patch #181: fix some bugs in AMotor joint.
251 * Applied patch #186: fix some bugs in PU joint.
252 * Applied patch #182: Transmission joint.
253 * Applied patch #184: implement rolling friction for contacts.
255 08/08/13 Oleh Derevenko
256 * Joint feedback forces application fixed in QuickStep implementation
257 (was broken since revision #1919 in old repository (#1927 in new one))
259 08/04/13 Oleh Derevenko
260 * Bugfix #89 by Luc applied (dJointAddSliderForce() adds a zero force
261 when the parent body is NULL)
263 05/18/13 Oleh Derevenko
264 * OU library has been included in ODE at revision #46 instead of
265 being used as an external link due to difficulties using external
266 references with new protocol used for storage at SF.
268 03/03/13 Oleh Derevenko
269 * Fixed issue with "findex==-1" constraints being intermixed with
270 "findex!=-1" ones during constraints random reordering in QuickStep.
272 02/03/13 Oleh Derevenko
273 * [u]int[8/16/32] renamed to contain "d" prefix so that global namespace
274 was not polluted with these names unconditionally.
275 If your project depended on these types other than just for passing
276 parameters to ODE calls, add similar typedefs for yourself in some
277 of your project's global headers.
279 01/02/13 Oleh Derevenko
280 * Applied patch #183 by Joseph Cooper (complementary matrix
283 12/28/12 Oleh Derevenko
284 * A bug with heightfield data assigned to a wrong field in
285 dGeomHeightfieldSetHeightfieldData fixed (bug report #88 by Luc).
287 12/18/12 Oleh Derevenko
288 * Fixed issue with some kinds of joints (Ball, DBall, DHinge, Fixed)
289 might overwrite world ERP value with their custom ERP during
290 getInfo2() call and that inappropriate value would then be passed
291 to subsequent joints in solver instead of world ERP.
293 12/01/12 Oleh Derevenko
294 * Fixed issues reported in patches #151 and #22 (collisions with
295 SAPSpace and QuadTreeSpace might not work because geometries list
296 was misused in them).
297 * Applied patch #160 "IsPointInPolygon in convex.cpp returns wrong
298 results" (by Janis Rucis)
300 11/25/12 Oleh Derevenko
301 * Configuration option --disable-threading-intf added
302 (--no-threading-intf for Windows/Premake). This allows disabling
303 threading interface support (external implementations may not be
304 assigned) but eliminates dependency on OU and use of atomics in
307 11/05/12 Oleh Derevenko
308 * Fixed zero comparisons in OPCODE to use relative error instead of
309 absolute epsilon value (found by Bill Sellers)
311 06/08/12 Daniel K. O.
312 * Removed the need for defining dSINGLE/dDOUBLE; this is stored now in
313 the generated ode/precision.h header.
314 * Some code cleanup to get rid of GCC warnings.
316 05/30/12 Daniel K. O.
317 * Made drawstuff draw shadows for lines.
318 * Fixed dhinge's last constraint to properly handle rotations.
320 05/03/12 Daniel K. O.
321 * Added two new joints: Double Ball and Double Hinge.
323 04/22/12 Daniel K. O.
324 * Fixed plane2d joint: uninitialized variables (reported by Dimitris
327 04/14/12 Oleh Derevenko
328 * Assertion checking macros moved into library private headers.
330 04/13/12 Daniel K. O.
331 * Applied patch from bug #3431829 - better handling of capsule-box with
333 * Fixed zero-mu issues: now either mu or mu2 can be set to zero.
335 03/17/12 Oleh Derevenko
336 * Threaded execution support interface added. Optional built-in threading
337 implementation added.
338 Internal threading implementation is excluded by default and to be used,
339 it must be enabled with configure/premake.
340 At present, if threading interface is assigned to a world, island
341 selection and stepping is performed in multiple threads (one thread per
344 03/12/12 Oleh Derevenko
345 * PURE_INLINE macro renamed to ODE_PURE_INLINE and definition of
346 dNextAfter()/dCopySign() corrected to avoid creating conflicts with
349 02/03/12 Oleh Derevenko
350 * Assertion checking macros moved from common.h to error.h
352 12/18/11 Oleh Derevenko
353 * dIVERIFY macro added (same as dIASSERT in debug mode but evaluates its
354 expression in release mode) to be used to assert variable value
355 which is not used further in text while avoiding compiler warning.
356 * dICHECK macro added (same as dIASSERT but evaluates its expression and
357 raises assertion fault regardless of compilation mode) to be used to
358 generate a fault in cases when error is very unlikely but must be
359 handled and handling is very troublesome (e.g. failure to lock a mutex
360 due to lack of resources).
362 12/07/11 Oleh Derevenko
363 * Partially fixed size_t to integer conversion warnings
364 * Fixed type signedness and added casts to size_t wherever necessary
367 11/04/11 Daniel K. O.
368 * Applied patch #3429454 - fix compilation on some platforms.
370 10/28/11 Daniel K. O.
371 * Fixed a box-capsule bug: more reasonable normal for deep penetrations
372 (contributed by Georg Martius.)
374 10/27/11 Daniel K. O.
375 * Disabled merging of contacts for trimesh-sphere by default.
376 * Added new demo: demo_tracks.
378 10/17/11 Daniel K. O.
379 * Added python bindings, contributed by Gideon Klompje.
380 * Updated some build scripts.
381 * Changed spheres distribution in demo_space_stress.
383 05/17/11 Oleh Derevenko
384 * A typo in step.cpp fixed (assignment operator in a conditional
385 instead of comparison) (reported by Bram Stolk)
387 01/29/11 Oleh Derevenko
388 * Heightfield zone boundaries calculation code fixed to also consider
389 whole next cell after the AABB if the AABB ends exactly at the cell
392 01/23/11 Daniel K. O.
393 * Applied patch from Daniel Fiser, add libccd collider for
396 01/20/11 Daniel K. O.
397 * Applied patch from Daniel Fiser, fix infinite loop in libccd caused
398 by numerical problems.
400 01/06/11 Daniel K. O.
401 * Applied patch from Daniel Fiser, efficient libccd tests when using
402 CONTACTS_UNIMPORTANT.
404 12/17/10 Daniel K. O.
405 * Applied patches from Daniel Fiser for new colliders based on libccd.
407 11/08/10 Daniel K. O.
408 * Applied patches from Daniel Fiser to incorporate libccd for
409 Cylinder-Cylinder collision tests.
411 08/21/10 Oleh Derevenko
412 * Fix applied to dxReallocateTemporayWorldProcessContext() to remove typo
413 which caused segmentation fault (by Kyle McKay).
414 dTestSolveLCP() fixed to avoid exceeding allocated memory pool
417 07/19/10 Oleh Derevenko
418 * Patch applied (#3030783) to fix drawstuff dimensions being ignored
419 in OSX GLUT port (by Danny Price).
422 * Applied patch #2991622: dGeomGetRelPointPos, dGeomGetPosRelPoint,
423 dGeomVectorToWorld, and dGeomVectorFromWorld.
425 07/16/10 Daniel K. O.
426 * Fixed bug #2937076: don't try to build demos if drawstuff is disabled.
428 05/02/10 Oleh Derevenko
429 * Missing extern "C" wrapper has been added to include/ode/export-dif.h
430 (reported by Danny Price). The change affects dWorldExportDIF() public
433 05/02/10 Oleh Derevenko
434 * Patch applied (#2995450) to generate up to four contacts for box-
435 plane collision test (by alexdu) and fix contact depths.
437 05/02/10 Oleh Derevenko
438 * dGeomLowLevelControl function added with ability to change/query OPCODE
439 trimesh-sphere contact merging behavior at runtime.
441 02/18/10 Daniel K. O.
442 * Fixed bug affecting disabled joints and dWorldStep.
444 01/16/10 Oleh Derevenko
445 * Patch applied (#2931174) to make demos work for recent MacOS.
446 * Patch applied (#2931177) to fix the demos' framerate on X11.
448 12/20/09 Oleh Derevenko
449 * QuadTreeSpace implementation corrected to avoid object-block relation
450 ambiguity due to numeric errors.
452 12/04/09 Oleh Derevenko
453 * odecpp classes changed to be inheritable and easily expandable
455 11/29/09 Oleh Derevenko
456 * Improvement for trimesh-plane collision (also used in trimesh-heightfield)
457 to exclude mesh vertices that have already generated contacts from further
458 examination and contact generation in other triangles (suggested by LR).
460 10/25/09 Oleh Derevenko
461 * Macros changed to static inline functions in odemath.h and related files.
462 Some code duplication has been eliminated across the files.
464 * Fixed handling of --disable-asserts and --enable-double-precision
465 (absence of --enable-double-precision) in configure script. The script
466 was not appending compiler defines correctly.
468 * dWorldStep implementation changed to remove allocation on stack.
469 dUSE_MALLOC_FOR_ALLOCA define has been removed as well as corresponding
470 configuration parameter. Also dMemoryFlag public variable has been removed.
471 (look for presence of ODE_EXT_malloc_not_alloca configuration string if
472 your application is dependent on that variable).
474 09/05/09 Oleh Derevenko
475 * dWorldStepFast1 API removed along with dWorld[Get/Set]AutoEnableDepthSF1
477 08/29/09 Oleh Derevenko
478 * Fixed uninitialized floating point array used in computations.
480 08/12/09 Oleh Derevenko
481 * A typo fixed in dGeomCopyOffsetRotation() (final_posr was used instead
482 of offset_posr). Reported by Tilmann.
484 08/11/09 Daniel K. O.
485 * Made sure neither dSINGLE or dDOUBLE is defined by default; the user
486 should always explicitly specify the precision.
488 06/27/09 Oleh Derevenko
489 * New functions have been added:
490 - dWorldUseSharedWorkingMemory
491 - dWorldCleanupWorkingMemory
492 - dWorldSetStepMemoryReservationPolicy
493 - dWorldSetStepMemoryManager
495 06/25/09 Remi Ricard (papaDoc)
496 * Add limit to the to the second axis of the universal joint
499 06/14/09 Oleh Derevenko
500 * dWorldQuickStep re-implemented to avoid memory allocation on stack.
501 Also several optimizations have been made to decrease memory
502 requirements and optimize algorithm implementation of dWorldQuickStep.
503 dWorldStep still remains with old memory allocation however new APIs
504 mentioned below are fully functional for it.
505 Both dWorldStep and dWorldQuickStep have been changed to return boolean
508 * dInitODE2() changed to automatically call
509 AllocateODEDataForThread(dAllocateFlagBasicData) after library
510 initialization as this is a required initialization minimum that
511 must always be performed anyway.
513 06/05/09 Daniel K. O.
514 * Removed aliasing issues from OPCODE/Ice, plus some other warnings.
515 Now it builds on gcc 4.3.2 with '-Wall -Werror -O3".
517 05/30/09 Oleh Derevenko
518 * A minor memory usage optimization for QuickStep.
520 05/24/09 Daniel K. O.
521 * Made the new trimesh collider the default.
522 * Added a "-texturepath" option to drawstuff.
524 05/18/09 Oleh Derevenko
525 * Heightfield rotation fixed to avoid NaNs while rotating infinite
528 05/03/09 Oleh Derevenko
529 * Incorrect parameter order fixed on contact merging in Sphere-Trimesh
530 collisions. The bug resulted in merged contact remaining with normal
531 of first contact found. Thanks to Dimitris Papavasiliou for reporting.
533 04/23/09 Daniel K. O.
534 * Fixed bug #2685170: use the C99 __func__ instead of __FUNCTION__ when
535 a C99 implementation is available.
537 04/07/09 Remi Ricard (papaDoc)
538 * Remove unused code in demo_joints.cpp, reported by Tilmann.
540 04/07/09 Remi Ricard (papaDoc)
541 * Fix bug in collision categories in demo_jointPU, reported by Tilmann
543 03/14/09 Oleh Derevenko
544 * A possibility to initialize/close ODE multiple times recursively has
546 Also, now a call to dSpaceSetManualCleanup() is required for each
547 space right after creation if ODE has been initialized in thread data
550 03/07/09 Oleh Derevenko
551 * Thread local data has been cleaned up from OPCODE and OdeTls as it is
552 not used (OPC_SweepAndPrune.* and OPC_BoxPruning.* have been removed
553 - rebuilding project files is necessary).
555 02/07/09 Daniel K. O.
556 * New house of cards demo, which stresses the friction handling stability.
558 01/29/09 Remi Ricard (papaDoc)
559 * Fix bug: Fix problem when attaching no body to a joint. Before calling
560 setRelativeValues a check is made for bodies.
563 01/28/09 Daniel K. O.
564 * Applied patch #2538046: Heightfield AABB bounds patch.
566 01/23/09 Remi Ricard (papaDoc)
567 * Add new function dJointSetUniversalAxis1Offset and dJointSetUniversalAxis2Offset
568 * Add unittest for those funcitons.
570 01/23/09 Remi Ricard (papaDoc)
571 * Fix problem with dJointGetUniversalAngle2 when the joint is attached to
572 only a body 2. The sign was inverted.
573 * Add unit test to verify for this problem
575 01/21/09 Remi Ricard (papaDoc)
576 * Fix bug reported by Tilman: dxJointPU::getInfo1 was setting twice the
577 limit of limot1 to zero and not limot2
579 01/17/09 Daniel K. O.
580 * Fixed a bug in dSpaceCollide2: if both geoms are not in spaces they would
581 not have valid AABBs.
583 12/20/08 Daniel K. O.
584 * New functions: dJointEnable, dJointDisable, dJointIsEnabled
587 12/19/08 Daniel K. O.
588 * Removed inline asm statements that break builds on 64-bit VC++.
590 12/09/08 Daniel K. O.
591 * Applied patch #2381592, which adds support for Kinematic Bodies.
593 12/06/08 Oleh Derevenko
595 * Applied a patch by Martijn Buijs to make GIMPACT trimesh-ray collisions to
596 be consistent with those in OPCODE.
597 * Swapped geometries returned in contacts for OPCODE Trimesh-Plane collisions
598 as they were returned in unnatural order being different from that in GIMPACT
599 * Applied a patch by Martijn Buijs to make side1, side2 fields of contact
600 structure be always initialized, either with -1 for non-trmesh geometries
601 or with triangle index for trimeshes. These fields were only assigned for
602 trimesh-trimesh collisions before.
603 * dGeomTriMeshSetTriMergeCallback/dGeomTriMeshGetTriMergeCallback API added
604 to set/get user defined callback procedure for trimeshes that would be
605 invoked when contacts are merged to let user code accumulate attributes of
606 original contact triangles and generate a fake index by which it would
607 later be able to determine those attributes. If the callback is not
608 assigned (the default) -1 is generated as triangle index for merged
609 contacts (there was an index of first of merged triangles before!!!).
610 The callback is currently used within OPCODE trimesh-sphere and OPCODE
611 new trimesh-trimesh collisions.
613 11/20/08 Remi Ricard (papaDoc)
614 * Fix problem with dJointGetPUPosition and
615 dJointGetPUPositionRate when the joint is attached to only
616 a body 2. The sign was inverted.
617 * Fix bug: When a pu joint had only one body attached to position 2,
618 dJointAttach(jId, 0, bId). The body was not push in the right direction to
619 move back between the limits.
620 * Add unit test to check the above problem
621 * Add the function void dJointSetPUAnchorOffset
622 * Make the function void dJointSetPUAnchorDelta deprecated
624 11/19/08 Remi Ricard (papaDoc)
625 * Fix bug: When a pr joint had only one body attached to position 2,
626 dJointAttach(jId, 0, bId). The body was not push in the right direction to
627 move back between the limits.
628 * Add unit test to check the above problem
630 11/19/08 Remi Ricard (papaDoc)
631 * Fix problem with dJointGetPRPosition and
632 dJointGetPRPositionRate when the joint is attached to only
633 a body 2. The sign was inverted.
634 * Add unit test to check the above problem
635 * Increase the tolerance to remove failure in unit test
636 * Remove compilation warning in unit test with the use of REAL()
638 11/18/08 Remi Ricard (papaDoc)
639 * Fix bug: When a piston joint had only one body attached to position 2,
640 dJointAttach(jId, 0, bId). The body was not push in the right direction to
641 move back between the limits.
642 * Add more functionality to demo_piston.cpp
643 * Run astyle on modified files.
645 11/18/08 Remi Ricard (papaDoc)
646 * Fix bug: When a slider joint had only one body attached to position 2,
647 dJointAttach(jId, 0, bId). The body was not push in the right direction to
648 move back between the limits.
650 10/29/08 Oleh Derevenko
652 * Premake scripts changed to only include chosen collision library
653 sources in project on Windows. --all-collis-libs premake option
654 added to allow inclusion of all collision library sources into the
657 10/15/08 Remi Ricard (papaDoc)
658 * Applying patch #2158425 64-bit GIMPACT provided by Mark
659 William. This patch enable GIMPACT to works on 64-bit machine.
661 10/15/08 Remi Ricard (papaDoc)
662 * Add function dJointGetPRAngle and dJointGetPRAngleRate
664 10/15/08 Remi Ricard (papaDoc)
665 * Enable the motor on the rotoide part of the PR joint
667 10/15/08 Remi Ricard (papaDoc)
668 * Add unit test to check if using directly a joint
669 or using after setting with default values is the same.
670 * Add function setRelativeValues called in dJointAttach for
673 10/10/08 Remi Ricard (papaDoc)
674 * Fix bug in dJointGetPUAxis2. The axis was not multiplied with the
675 the rotation matrix of the good body.
676 * Fix bug if there is only one body on the PU joint the axis returned
677 was not the right one.
678 * Add unit test to verify previous bug.
680 10/03/08 Rodrigo Hernandez (Kwizatz)
681 * Added Blender script to create ODE convex geoms under tools.
683 10/01/08 Rodrigo Hernandez (Kwizatz)
684 * Convex-Convex collision detection code is finally stable.
686 08/31/08 Daniel K. O.
687 * Applied patch 2080674: Improved dBodySetRotation; now exact rotation
688 matrices are preserved until the next simulation step.
690 08/07/08 Daniel K. O.
691 * Fixed strict aliasing issue that was breaking the new trimesh collider.
693 07/24/08 Daniel K. O.
694 * New functions: dBodyGetGyroscopicMode and dBodySetGyroscopicMode
697 07/15/08 Remi Ricard (papaDoc)
698 * Add a new define ODE_API_DEPRECATED to mark function as deprecated
701 07/14/08 Remi Ricard (papaDoc)
702 * Finish adding patch 1336066: Joint feedback in quickstep by jsinecky
703 * demo_boxstack.cpp can now print joint feedback
705 07/11/08 Daniel K. O.
706 * Bumped version for 0.10.1
707 * Added proper usage of libtool's version info.
709 07/10/08 Remi Ricard (papaDoc)
710 * Add new function dJointSetPistonAnchorOffset
711 * Add unittest for the piston joint
712 * Fix problem with dJointGetPistonPosition and
713 dJointGetPistonPositionRate when the joint is attached to only
714 a body 2. The sign was inverted.
716 07/09/08 Remi Ricard (papaDoc)
717 * Optimize function Multiply1_12q1 in quickstep
718 Patch proposed by Riemer v.d. Zee and modified by Patrick Baggett
720 07/08/08 Remi Ricard (papaDoc)
721 * Update the slider joint to have the same behavior as the other joint
722 when there is only a body2 attached to it.
723 * Update documentation for the slider joint.
724 * Remove warning by using REAL()
725 * Add new unittest for dJointGetSliderPositionRate
727 07/08/08 Remi Ricard (papaDoc)
728 * Update unittest for the slider.
729 * Rename the new function dJointSetHingeAxisDelta to
730 dJointSetHingeAxisOffset. This remove will remove confusion with
731 the old function dJointSetHingeAnchorDelta
732 * Update documentation for the Hinge unittest
733 * Remove warning by using REAL()
735 07/07/08 Daniel K. O.
736 * Max Correcting Vel doesn't affect bounciness, as before.
738 07/03/08 Remi Ricard (papaDoc)
739 * Add new function dJointSetHingeAxisDelta
740 * Add unittest for this new function
742 06/17/08 Remi Ricard (papaDoc)
744 * Move the computation of the Relative Rotation for the slider joint
746 * Add unittest for to check qrel
748 06/17/08 Remi Ricard (papaDoc)
750 * Remove unused variables.
751 * Remove a conversion warning between unsigned int and int
753 06/17/08 Remi Ricard (papaDoc)
755 * Move the function hingeComputeRelativeRotation as a member of
756 the hinge structure/class.
758 06/17/08 Remi Ricard (papaDoc)
760 * Move the computation of the Relative Rotation for the fixed joint
763 06/16/08 Remi Ricard (papaDoc)
765 * Add testunit for the dxJointFixed
767 06/04/08 Daniel K. O.
769 * Moved joints to ode/src/joints, converted them to true virtual
772 06/02/08 Daniel K. O.
774 * Added an Auto<T> template to step.cpp to handle memory deallocation.
776 05/09/08 Daniel K. O.
778 * Applied patch #1335202: Contact Joint Motion (with some corrections),
779 and added demo_motion.
781 05/01/08 Oleh Derevenko
783 * Memory leak in GIMPACT fixed (reported by Derek)
785 04/28/08 Oleh Derevenko
787 * Added possibility to collide a space of lower sublevel as a geometry
788 against another space of a higher level with dSpaceCollide2.
789 dSpaceSetSublevel/dSpaceGetSublevel are used for sublevel assignment/
792 04/27/08 Oleh Derevenko
794 * Fixed incorrect memory copying which could lead to memory corruption
795 in GIMPACT (luckily, in unused code)
796 * Fixed possible memory read beyond the end of allocated buffer along
797 with unnecessary extra memory copying in GIMPACT.
798 * Fixed buffer reserve being incorrectly reset to zero for bitsets
799 what resulted in unnecessary memory reallocations in GIMPACT.
800 * Implemented support for ability to run collision detection from
801 multiple threads for separate spaces.
803 04/14/08 Oleh Derevenko
805 * Fixed possible memory corruption in new trimesh-trimesh collider
806 in case if two degenerated triangles are checked against each other.
808 04/12/08 Oleh Derevenko
810 * Fixed sporadic assertion failure on vector normalization caused
811 by small triangles degenerating into segments during space
816 * Fix a bug in dJointXXXGetInfo. The value in limot.limit was not
817 always updated. (Ex: If hi and lo limit were changed).
821 * Added a new Joint: Prismatic Universal (patch #1828454).
825 * Fixed bug #1841309: collide2() method buggy.
829 * New function: dVector4Copy.
833 * Added stub calls for trimesh functions.
834 * Applied patch #1914232: dGetConfiguration.
835 * Applied patch #1655333: Optimize the function dNormalize3.
836 * New function: dSetColliderOverride.
837 * New function: dCheckConfiguration.
841 * Disabled building shared library by default with autotools.
845 * New function: dJointGetNumBodies (patch #1901550).
846 * New function: dSpaceGetClass (patch #1901637).
847 * Applied patch #1901649: Add missing function in the export
851 * Fixed drawstuff build issues on OSX.
853 01/12/08 Daniel K. O.
855 * Fixed a typedef bug in configure.in.
856 * Added dCylinder to the C++ wrappers.
857 * Applied patch 1851394: support for GIMPACT with double precision,
859 * Moved bunny geometry to bunny_geom.h.
861 12/11/07 Daniel K. O.
863 * Added damping and MaxAngularVel() functions.
864 * Const-correctness: added const qualifier to some dWorldGet and dBodyGet
866 * Updated the odecpp.h header.
868 12/07/07 Daniel K. O.
870 * Removed most of the compiler warnings from Drawstuff, ODE and
872 * Upgraded automake requirement to 1.10, and change some Makefile.am
876 * Modified autotools to use libtool for
877 library generation and administration
878 * Removed release and debug flags for configure.in
879 CPPFLAGS, CFLAGS, CXXFLAGS should be set by the
880 user to their liking, respecting autotools policies.
882 11/30/07 Daniel K. O.
883 * Applied patch 1813079 (moved callback)
884 * Replaced moveAndRotateBody by dxStepBody in stepfast.cpp
888 * Added 'Sweep and Prune' collision space.
889 * New Piston joint type with demo, by Remi Ricard
890 * Added build option to use 16-bit indices for OPCODE trimesh
894 * Integrated Christoph Beyer's average based sampling system for body
897 10/26/06 Francisco Leon
899 * Totally refactored trimesh collision system.
900 Using GIMPACT instead of OPCODE. Now works correctly, and faster.
901 Visit http://gimpact.sourceforge.net.
903 * Finally, test_moving_trimesh.exe works nicely.
905 * Fixed autodisable system. Now is possible to set bigger sleeping
906 threshold values and objects won't be sleeping on the air. They will
907 rest on the floor properly.
909 * dInitODE function added.
911 * Is Obligatory to call dInitODE() at the beginning for initialize ODE,
912 and calling dCloseODE() when the program ends.
916 * Fixed two bugs in cyl/plane collision test.
920 * New Rotoide - Prismatic joint type
921 * dJointGetUniversalAngles for efficient angle retrieval.
925 * Integrated plane2d joint type which constrains bodies to z == 0.
929 * Added heightfield primitive collision code. Simple test available in
930 ode/test/test_heightfield
934 * Added Convex primitive collision code,
935 currently only convex-sphere and convex-plane work
939 * Added program to test trimesh vs sphere: ode/test/test_basket
943 * Added new autogenerated Visual Studio projects, with Premake scripts
947 * Added plane/cyl intersection test
948 * Renamed CCylinder to Capsule
952 * Added support for geom offsets.
956 * Removed LIBTOOL from autotools since it was not really required.
957 * Added a target to build ODE as a shared library, this shared
958 library gets build alongside the static one, no flags required.
962 (Backported patches from STABLE branch, applied by Adam)
964 * dRandInt changed for a non-double all-int version.
965 * mics minor fixes and improvements.
969 * Fixed segmentation fault with OPCODE on 64 bits systems.
973 * Fixed timer.cpp compiler error on x86-64 using GCC.
977 * Added trimesh preprocessing to mark unneeded edges and verts. Also
978 added support for preprocessed info to the ccylinder-trimesh
983 * Important AMotors bugfix
987 * Assorted small bugfixes and tweaks for
988 trimesh_{box,ccylinder,trimesh} collisions
992 * added functions to joint.cpp to allow joint attachment to moving
995 * added malloc-based memory allocation in step.cpp & lcp.cpp (turned
996 on with a #define switch in common.h)
1000 * added joint feedback to the QuickStep solver
1004 * added warm starting to the QuickStep solver
1008 * added the QuickStep solver
1010 * added contact parameter functions.
1014 * use dRandInt instead of rand() in stepfast.
1018 * added auto-disable support from Aras Pranckevicius (with
1019 modifications by russ). this useful feature can speed up
1020 simulation significantly in some cases.
1022 * various internal tidyups.
1026 * changed the meaning of the 'index' argument to dJointGetBody():
1027 it was the only remaining API function that does not respect
1028 dJOINT_REVERSE (spotted by Matthew D. Hancher).
1030 * updated the C++ headers: fixed two minor bugs and added
1031 support for dQuadTreeSpace, dRay, and the dGeom::getSpace() method
1032 (from Matthew D. Hancher).
1036 * changed the way that the dInfinity constant is implemented: now it
1037 is #defined to be one of: FLT_MAX, DBL_MAX, HUGE_VAL, HUGE_VALF, or
1038 a large numeric constant. previously it was a variable that was
1039 exported from the library. this simplifies the configuration and
1040 build process quite a bit, especially in the case of DLLs.
1042 * removed the old, deprecated collision system (geom.cpp,space.cpp,
1043 geom.h,space.h,odecpp_old_collision.h). the ODE_OLD_COLLISION
1044 configuration setting no longer has any meaning.
1046 * removed support for dGeomGroups, which have been deprecated for
1047 a while and are equivalent to 'spaces' anyway.
1051 * bug fix in dMassSetCappedCylinder(), from Matthew D. Hancher.
1055 * added trimesh-CCylinder capability, from Vadim Macagon
1056 <vadim_mcagon@hotmail.com>.
1060 * yet another rewrite of triangle-box collision code, this
1061 time based on code donated by Croteam, ported by asko@jetti.org
1062 and tweaked by Erwin.
1066 * merged trimesh-trimesh collision code by
1067 Jeffrey Smith <jeffreys@Softimage.com>.
1069 * changed it to not break the trimesh interface, fix
1070 some GCC compilation problems, bring it up to date with
1071 ODE changes from 2003-11-15 -> 2004-04-04.
1073 * add ability to drop meshes on meshes in test_moving_trimesh,
1074 not as good as it could be but it's illustrative.
1078 * implement a bunch of ultra-simple TriMesh functions that were
1079 in the headers but not in the code -- patch by
1080 Vadim Macagon <vadim_mcagon@hotmail.com>
1082 * disable temporal coherence on trimeshes by default, since
1083 it has scaleability issues that don't make it a general clear win.
1087 * implement dxHashSpace::collide2(), not particularly efficiently.
1091 * applied several Trimesh fixes and improvements from
1092 Aras Pranckevicius <nearaz@interamotion.com>
1096 * apply Nguyen Binh's work for removing many dSetZero() calls
1097 and some other extraneous initializations.
1101 * added dJointAdd*Torque/Force().
1105 * added the StepFast code, by David Whittaker.
1109 * added dMassSet*Total().
1113 * added joint limits and motors to universal joints.
1115 * reversed the polarity of the dJOINT_REVERSE flag.
1119 * added the TriMesh geom class and the quad tree space to the ODE
1120 core. both of these were developed by Erwin de Vries. added OPCODE
1121 to the ODE distribution, this is required by TriMesh.
1125 * added dGeomSetQuaternion() and dGeomGetQuaternion()
1127 * added dJointGet*Anchor2()
1131 * added dGeomGetSpace().
1135 * added dMassSetCylinder().
1139 * added dAreConnectedExcluding().
1143 * added the ray geom class.
1145 * added the dGeomXXXPointDepth() functions.
1147 * added a collision test infrastructure, and some more tests.
1151 * added support for multiple box-box contacts.
1155 * added new collision system. select between the old/new system by
1156 setting the ODE_OLD_COLLISION variable in config/user-settings.
1160 * fixed two problems in the LCP code to improve the reliability of
1161 the dContactApprox1 contact mode.
1163 * added a FAQ question about rolling bodies getting stuck when they
1168 * added dClosestLineSegmentPoints().
1169 * implemented dCollideCB().
1173 * added dJointSetFeedback() and dJointGetFeedback().
1177 * added dGeomTransformSetInfo() and dGeomTransformGetInfo().
1181 * added dBodySetForce(), dBodySetTorque(), dWorldImpulseToForce(),
1182 dBodyGetPosRelPoint(), dBodyGetPosRelPoint(), dBodyVectorToWorld(),
1183 dBodyVectorFromWorld().
1185 * added dBodyGetPointVel() (thanks to Colin Reed).
1187 * added a new C++ interface (from Martin C. Martin, with modifications
1188 by russ). the old C++ interface is now in odecpp_old.h.
1192 * added an additional BSD-style licensing option for ODE.
1196 * added dCloseODE(), contributed by Nate Waddoups and David McClurg.
1200 * added dSpaceQuery(), contributed by Nate Waddoups.
1204 * added a section to the documentation for universal joints.
1205 this includes a picture of the joint.
1209 * added a universal joint class (generously contributed by
1210 Martin C. Martin). it doesn't (yet) have a motor or joint limits,
1211 but it does come with tests.
1215 * makefile changes to accomodate OSs with command line length
1216 limitations (thanks to Norman Lin).
1220 * added the dBodySetGravityMode() and dBodyGetGravityMode()
1221 functions, which change the dxBodyNoGravity body flag.
1223 * added support for building a DLL with MSVC - there is now a
1224 msvc-dll target. thanks to Norman Lin for doing this.
1228 * added the dParamCFM joint parameter.
1232 * reworked the build system to make it more cross-platform.
1233 there is now a single top-level makefile and a configurator.c
1234 program. see the INSTALL file for details.
1238 * the "angular motor" joint has been completed, and a new section
1239 has been added to the documentation.
1243 * added a new joint type: "angular motor". using this joint is a good
1244 way to get ball-joint motors and limits. this is work in progress -
1245 it has not been fully implemented or tested yet.
1249 * replaced the mmap()-based joint group stack (stack.cpp) with a
1250 malloc()-based arena stack (obstack.cpp). this will be more
1251 portable and should not impact performance.
1255 * changed the meaning of the 'flags' parameter to dCollide() and
1256 related functions: now the size of the contact buffer is kept in
1257 the lower 16 bits. this change will be backward compatible.
1259 * added dBodyGetFiniteRotationMode() and dBodyGetFiniteRotationAxis().
1261 * added dBodyAddForceAtRelPos() function.
1265 * added the ability to manually enable and disable bodies.
1266 see dBodyEnable(), dBodyDisable(), dBodyIsEnabled().
1268 * fixed a potential bug: when a world is destroyed that contains
1269 joints in joint groups, those joints are marked as "deactivated" in
1270 the joint group, so when the joint group is destroyed they can be
1273 * the test_boxstack demo has new options to enable and disable bodies.
1275 * new configuration parameter in config.h: dEFFICIENT_SIZE.
1279 * started the change log for ODE. changes older than today were added
1280 to this file by inspecting the CVS logs.
1284 * added REAL() constructions for floating point numbers, to prevent
1285 many warnings when compiling under VC++.
1289 * added geometry transform class, documented composite objects.
1291 * added collision rule: no contacts if both geoms on the same body.
1292 this is not the best rule, may have to remove this in the future.
1294 * new dMassAdd() function.
1296 * capped cylinder to capped cylinder collision function.
1300 * increase CFM in some demos to make them more robust.
1304 * added new accessor functions.
1308 * added the dJOINT_TWOBODIES flag to the joint, that says it can not
1309 be attached to just one body.
1313 * fixed a collision bug in dCollide() that was causing memory
1314 corruption when multiple contacts were being returned.
1318 * joints can now return m=0 to be "inactive". added a "null" joint
1323 * in the LCP solver, try to fail gracefully when s <= 0.
1325 * dAABBTestFn() API change.
1329 * fixed a contact swapping bug in dCollide().
1333 * added capped cylinder geometry object.
1337 * the test_buggy demo now uses geometry groups.
1339 * added a dAABBTestFn field in the geometry classes.
1343 * added geometry groups.
1347 * added finite rotation stuff.