Fixed: Windows target Subsystem was fixed for demos in CMake to match changes in...
[ode.git] / CHANGELOG.txt
blobe8491ecd6df232d82953f9c47f96c03f06833b0a
1 ODE CHANGELOG
2 -------------
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/06/2016 Oleh Derevenko
12         * dWorldAttachQuickStepDynamicIterationStatisticsSink public function 
13           was added to allow dynamic step count adjustment monitoring for
14           world instances.
16 02/21/2019 Oleh Derevenko
17         * Dynamic step count adjustment was implemented for dWorldQuickStep
18           with dWorldSetQuickStepDynamicIterationParameters and 
19           dWorldGetQuickStepDynamicIterationParameters new API functions
20           to control the feature.
21           The solver estimates per body resulting contact force maximal 
22           absolute adjustment value and may exit after fewer iterations if
23           the adjustments get smaller than the given threshold, or iterate 
24           longer if the adjustments are still significant after the default
25           iteration count is executed.
27 01/20/2019 Oleh Derevenko
28         * x86 targets have been changed to generate SSE2 code for calculations
29           by default with possibility to explicitly configure back for FPU.
31 11/12/2018 Oleh Derevenko
32         * The commentary from 11/05/2018 was wrong. The constraints were not
33           reset to their natural order and remained randomized.
34           The other thing that was missing was full contraint reorder without 
35           separation into independent and dependent ones. The algorithm doesn't
36           converge without it well.
38 11/10/2018 Oleh Derevenko
39         * An incorrect optimization to Jacobian Copy building code from #1938
40           that resulted in corrupt data in multi-threaded execution mode was 
41           fixed.
43 11/05/2018 Oleh Derevenko
44         * An unintended change from commit #1898 has been reverted.
45           The QuickStep used to solve with randomized constraint order 
46           each 8th iteration. The other iterations, the constraints 
47           were reset to their natural order, as generated, with the dependent
48           constraints gathered in reverse order at end (the reverse order is 
49           somehow important). With the commit #1898 the constraints were
50           randomly reordered each 8th iteration but then remained 
51           in that randomized order and only were re-randomized on subsequent
52           multiples of 8.
54 10/09/2017 Markus Rickert
55         * CMake support for project file generation has been added.
57 06/14/2017 Oleh Derevenko
58         * dxHashSpace::collide() has been changed to fault host program 
59           if scene gets too large and causes integer overflow.
61 06/06/2017 Oleh Derevenko
62         * Memory and pointer size integer type use has been changed so that 
63           internal typedefs are used instead of "_t" suffixed types.
65 05/09/2017 Oleh Derevenko
66         * Introduction of cooperative algorithms API. 
67           L*D*LT cooperative factorization and linear equation system 
68           cooperative solving have been implemented.
69         * AtomicReadReorderBarrier, AtomicStore, AtomicStorePointer functions 
70           have been added and some atomic function implementations have been 
71           improved in OU.
73 02/20/2017 Oleh Derevenko
74         * Project generation options have been changed to have built-in
75           multithreaded threading implementation enabled by default.
77 02/19/2017 Oleh Derevenko
78         * dWorldStep threaded implementation has been extended to the final 
79           steps of constraint force applications and body position updates
80           after the LCP solving. Note that body callbacks (if set) may be
81           called from multiple threads if threaded execution is enabled.
82         * OU atomicord32 type has been fixed to be unsigned on all supported
83           platforms.
85 01/09/2017 Oleh Derevenko
86         * dGeomTriMeshDataPreprocess2() public function has been added to 
87           replace dGeomTriMeshDataPreprocess(). Face angles pre-computation
88           for triangle meshes has been implemented.
90 11/13/2016 Oleh Derevenko
91         * dGeomTriMeshDataGetBuff and dGeomTriMeshDataSetBuff have been marked 
92           deprecated and their functionality implemented via 
93           dGeomTriMeshDataGet and dGeomTriMeshDataSet. Extra function variant
94           dGeomTriMeshDataGet2() has been added to allow returning data size.
96 11/07/2016 Oleh Derevenko
97         * The implementation of OPCODE TriMesh data pre-processing 
98           (dGeomTriMeshDataPreprocess()) has been optimized to only contain
99           a sort and a single pass over edges (used to be a sort and O(N^2)).
101 10/29/2016 Oleh Derevenko
102         * dGeomTriMeshDataPreprocess() public function has been changed to 
103           return a boolean status (it can fail in low memory conditions).
105 07/10/2016 Oleh Derevenko
106         * The correct handling of dJOINT_REVERSE mode for AngularMotor Joint 
107           implemented (issue #37).
109 06/29/2016 Oleh Derevenko
110         * A bug fixed with HashSpace calling big boxes collision twice 
111           (both straight and reverse geometries order) since revision #1831.
113 06/03/2016 Oleh Derevenko
114         * dJointSetHinge2Axes public function has been added and 
115           dJointSetHinge2Axis1/2 have been marked deprecated due to being 
116           unsafe.
118 05/13/2016 Oleh Derevenko
119         * ICE Container class allocation strategy fixed to avoid reserving 
120           excess memory with large collections.
122 05/10/2016 Oleh Derevenko
123         * dSafeNormalize3 and dSafeNormalize4 functions changed to leave the
124           parameter intact instead of replacing it with the X-axis unit in case 
125           of fault.
127 04/12/2016 Oleh Derevenko
128         * A function to create a self-threaded threading implementation object
129           has been moved back to public headers as there could be a use for it
130           while running several worlds in parallel threads.
132 01/09/2016 Oleh Derevenko
133         * Hinge2 joint corected to avoid faulting asserts when the axes get 
134           temporarily invalid during assignments (suggested by David Mansolino)
136 01/03/2016 Oleh Derevenko
137         * An invalid memory access fixed in dxSAPSpace::BoxPruning() in case
138           if there were NaN values in AABBs to be sorted.
140 12/25/2015 Oleh Derevenko
141         * Unexpected joint mode assignment (instead of comparison) fixed within
142           an dUASSERT in dJointSetTransmissionAxis2() of transmission joint
144 11/28/2015 Oleh Derevenko
145         * Convex-Trimesh collider added (libccd+GIMPACT only)(by Piotr Piastucki)
146         * dCreateConvex() and dGeomSetConvex() public APIs changed to expect 
147           their parameter arrays as const pointers
149 11/01/2015 Oleh Derevenko
150         * OPCODE mesh colliders' input coordinates have been offset to  
151           mesh-relative frames to decrease potential computational errors
152           (suggested by luckytrashsc2@g***l.com)
154 08/05/2015 Oleh Derevenko
155         * Implemented change to return highest depth contacts subset for GIMPACT 
156           in cases if contacts count exceeds requested maximum (as suggested in 
157           the issue #36 by Piotr Piastucki)
159 11/17/2014 Daniel K. O.
160         * Added support for using libccd from the system (if found via
161           pkg-config)
163 11/10/2014 Oleh Derevenko
164         * Floating point division by zero in capsule-ray collision routine 
165           in case if the ray axis was parallel the cylinder and the ray started
166           from within it fixed (issue #26)
168 11/08/2014 Oleh Derevenko
169         * Threading support has been extended to complete implementation 
170           of QuickStep
172 10/29/2014 Daniel K. O.
173         * Added dJointSetDBallDistance
175 10/19/2014 Oleh Derevenko
176         * Built-in threading implementation compilation fixed for OSX
177           (clock_gettime() is missing from the system - reported by Bram)
179 08/10/2014 Oleh Derevenko
180         * Declarations of dWorld[Get/Set]AutoDisableLinearAverageThreshold and
181           dWorld[Get/Set]AutoDisableAngularAverageThreshold have been removed 
182           from public headers (were orphaned since rev.1052)
184 07/16/2014 Oleh Derevenko
185         * Two fixes by Francesco Cat applied (fixes for mistakes made during
186           code style improvements in the past)
187                  
188 02/27/14 Daniel K. O.
189         * Added dODE_VERSION macro to public headers (issue #24).
191 02/11/14 Daniel K. O.
192         * Added dJointGetHinge2Angle2 (issue #12).
194 02/07/14 Daniel K. O.
195         * Added dWorldSetData/dWorldGetData (issue #21).
197 01/31/14 Daniel K. O.
198         * Applied patch #185: Stable, implicit gyroscopic forces.
200 01/27/14 Daniel K. O.
201         * Fixed cylinder AABB computation.
203 01/25/14 Daniel K. O.
204         * Removed ALLOCA calls from dHashSpace; it should not depend
205           on stack size limits anymore.
207 12/06/13 Daniel K. O.
208         * Applied patch #181: fix some bugs in AMotor joint.
209         * Applied patch #186: fix some bugs in PU joint.
210         * Applied patch #182: Transmission joint.
211         * Applied patch #184: implement rolling friction for contacts.
213 08/08/13 Oleh Derevenko
214         * Joint feedback forces application fixed in QuickStep implementation
215           (was broken since revision #1919 in old repository (#1927 in new one))
217 08/04/13 Oleh Derevenko
218         * Bugfix #89 by Luc applied (dJointAddSliderForce() adds a zero force
219           when the parent body is NULL) 
221 05/18/13 Oleh Derevenko
222         * OU library has been included in ODE at revision #46 instead of  
223           being used as an external link due to difficulties using external 
224           references with new protocol used for storage at SF.
226 03/03/13 Oleh Derevenko
227         * Fixed issue with "findex==-1" constraints being intermixed with 
228           "findex!=-1" ones during constraints random reordering in QuickStep.
230 02/03/13 Oleh Derevenko
231         * [u]int[8/16/32] renamed to contain "d" prefix so that global namespace
232           was not polluted with these names unconditionally. 
233           If your project depended on these types other than just for passing 
234           parameters to ODE calls, add similar typedefs for yourself in some 
235           of your project's global headers.
237 01/02/13 Oleh Derevenko
238         * Applied patch #183 by Joseph Cooper (complementary matrix 
239           calculation fix).
241 12/28/12 Oleh Derevenko
242         * A bug with heightfield data assigned to a wrong field in 
243           dGeomHeightfieldSetHeightfieldData fixed (bug report #88 by Luc).
245 12/18/12 Oleh Derevenko
246         * Fixed issue with some kinds of joints (Ball, DBall, DHinge, Fixed)
247           might overwrite world ERP value with their custom ERP during 
248           getInfo2() call and that inappropriate value would then be passed 
249           to subsequent joints in solver instead of world ERP.
251 12/01/12 Oleh Derevenko
252         * Fixed issues reported in patches #151 and #22 (collisions with
253           SAPSpace and QuadTreeSpace might not work because geometries list
254           was misused in them).
255         * Applied patch #160 "IsPointInPolygon in convex.cpp returns wrong 
256           results" (by Janis Rucis)
258 11/25/12 Oleh Derevenko
259         * Configuration option --disable-threading-intf added 
260           (--no-threading-intf for Windows/Premake). This allows disabling
261           threading interface support (external implementations may not be 
262           assigned) but eliminates dependency on OU and use of atomics in 
263           steppers.
265 11/05/12 Oleh Derevenko
266         * Fixed zero comparisons in OPCODE to use relative error instead of
267           absolute epsilon value (found by Bill Sellers)
269 06/08/12 Daniel K. O.
270         * Removed the need for defining dSINGLE/dDOUBLE; this is stored now in
271           the generated ode/precision.h header.
272         * Some code cleanup to get rid of GCC warnings.
274 05/30/12 Daniel K. O.
275         * Made drawstuff draw shadows for lines.
276         * Fixed dhinge's last constraint to properly handle rotations.
278 05/03/12 Daniel K. O.
279         * Added two new joints: Double Ball and Double Hinge.
281 04/22/12 Daniel K. O.
282         * Fixed plane2d joint: uninitialized variables (reported by Dimitris
283           Papavasiliou)
285 04/14/12 Oleh Derevenko
286         * Assertion checking macros moved into library private headers.
288 04/13/12 Daniel K. O.
289         * Applied patch from bug  #3431829 - better handling of capsule-box with
290           deep penetrations.
291         * Fixed zero-mu issues: now either mu or mu2 can be set to zero.
293 03/17/12 Oleh Derevenko
294         * Threaded execution support interface added. Optional built-in threading
295           implementation added.
296           Internal threading implementation is excluded by default and to be used, 
297           it must be enabled with configure/premake.
298           At present, if threading interface is assigned to a world, island 
299           selection and stepping is performed in multiple threads (one thread per 
300           island).
302 03/12/12 Oleh Derevenko
303         * PURE_INLINE macro renamed to ODE_PURE_INLINE and definition of 
304           dNextAfter()/dCopySign() corrected to avoid creating conflicts with 
305           other libraries.
307 02/03/12 Oleh Derevenko
308         * Assertion checking macros moved from common.h to error.h
310 12/18/11 Oleh Derevenko
311         * dIVERIFY macro added (same as dIASSERT in debug mode but evaluates its
312           expression in release mode) to be used to assert variable value 
313           which is not used further in text while avoiding compiler warning.
314         * dICHECK macro added (same as dIASSERT but evaluates its expression and 
315           raises assertion fault regardless of compilation mode) to be used to
316           generate a fault in cases when error is very unlikely but must be 
317           handled and handling is very troublesome (e.g. failure to lock a mutex
318           due to lack of resources).
320 12/07/11 Oleh Derevenko
321         * Partially fixed size_t to integer conversion warnings
322         * Fixed type signedness and added casts to size_t wherever necessary 
323           in Step/QuickStep
325 11/04/11 Daniel K. O.
326         * Applied patch #3429454 - fix compilation on some platforms.
328 10/28/11 Daniel K. O.
329         * Fixed a box-capsule bug: more reasonable normal for deep penetrations
330           (contributed by Georg Martius.)
332 10/27/11 Daniel K. O.
333         * Disabled merging of contacts for trimesh-sphere by default.
334         * Added new demo: demo_tracks.
336 10/17/11 Daniel K. O.
337         * Added python bindings, contributed by Gideon Klompje.
338         * Updated some build scripts.
339         * Changed spheres distribution in demo_space_stress.
341 05/17/11 Oleh Derevenko
342         * A typo in step.cpp fixed (assignment operator in a conditional 
343           instead of comparison) (reported by Bram Stolk)
345 01/29/11 Oleh Derevenko
346         * Heightfield zone boundaries calculation code fixed to also consider
347           whole next cell after the AABB if the AABB ends exactly at the cell
348           boundary.
350 01/23/11 Daniel K. O.
351         * Applied patch from Daniel Fiser, add libccd collider for
352           box-cylinder.
354 01/20/11 Daniel K. O.
355         * Applied patch from Daniel Fiser, fix infinite loop in libccd caused
356           by numerical problems.
358 01/06/11 Daniel K. O.
359         * Applied patch from Daniel Fiser, efficient libccd tests when using
360           CONTACTS_UNIMPORTANT.
362 12/17/10 Daniel K. O.
363         * Applied patches from Daniel Fiser for new colliders based on libccd.
365 11/08/10 Daniel K. O.
366         * Applied patches from Daniel Fiser to incorporate libccd for
367           Cylinder-Cylinder collision tests.
369 08/21/10 Oleh Derevenko
370         * Fix applied to dxReallocateTemporayWorldProcessContext() to remove typo 
371           which caused segmentation fault (by Kyle McKay).
372           dTestSolveLCP() fixed to avoid exceeding allocated memory pool 
373           (by Kyle McKay).
375 07/19/10 Oleh Derevenko
376         * Patch applied (#3030783) to fix drawstuff dimensions being ignored
377           in OSX GLUT port (by Danny Price).
379          Daniel K. O.
380         * Applied patch #2991622: dGeomGetRelPointPos, dGeomGetPosRelPoint,
381           dGeomVectorToWorld, and dGeomVectorFromWorld.
383 07/16/10 Daniel K. O.
384         * Fixed bug #2937076: don't try to build demos if drawstuff is disabled.
386 05/02/10 Oleh Derevenko
387         * Missing extern "C" wrapper has been added to include/ode/export-dif.h
388           (reported by Danny Price). The change affects dWorldExportDIF() public 
389           function.
391 05/02/10 Oleh Derevenko
392         * Patch applied (#2995450) to generate up to four contacts for box-
393           plane collision test (by alexdu) and fix contact depths.
395 05/02/10 Oleh Derevenko
396         * dGeomLowLevelControl function added with ability to change/query OPCODE 
397           trimesh-sphere contact merging behavior at runtime.
399 02/18/10 Daniel K. O.
400         * Fixed bug affecting disabled joints and dWorldStep.
402 01/16/10 Oleh Derevenko
403         * Patch applied (#2931174) to make demos work for recent MacOS.
404         * Patch applied (#2931177) to fix the demos' framerate on X11.
406 12/20/09 Oleh Derevenko
407         * QuadTreeSpace implementation corrected to avoid object-block relation 
408           ambiguity due to numeric errors.
410 12/04/09 Oleh Derevenko
411         * odecpp classes changed to be inheritable and easily expandable
413 11/29/09 Oleh Derevenko
414         * Improvement for trimesh-plane collision (also used in trimesh-heightfield)
415           to exclude mesh vertices that have already generated contacts from further
416           examination and contact generation in other triangles (suggested by LR).
418 10/25/09 Oleh Derevenko
419         * Macros changed to static inline functions in odemath.h and related files.
420           Some code duplication has been eliminated across the files.
422         * Fixed handling of --disable-asserts and --enable-double-precision 
423           (absence of --enable-double-precision) in configure script. The script
424           was not appending compiler defines correctly.
426         * dWorldStep implementation changed to remove allocation on stack. 
427           dUSE_MALLOC_FOR_ALLOCA define has been removed as well as corresponding
428           configuration parameter. Also dMemoryFlag public variable has been removed.
429           (look for presence of ODE_EXT_malloc_not_alloca configuration string if
430           your application is dependent on that variable).
432 09/05/09 Oleh Derevenko
433         * dWorldStepFast1 API removed along with dWorld[Get/Set]AutoEnableDepthSF1
435 08/29/09 Oleh Derevenko
436         * Fixed uninitialized floating point array used in computations.
438 08/12/09 Oleh Derevenko
439         * A typo fixed in dGeomCopyOffsetRotation() (final_posr was used instead 
440           of offset_posr). Reported by Tilmann.
442 08/11/09 Daniel K. O.
443         * Made sure neither dSINGLE or dDOUBLE is defined by default; the user
444           should always explicitly specify the precision.
446 06/27/09 Oleh Derevenko
447         * New functions have been added:
448            - dWorldUseSharedWorkingMemory
449            - dWorldCleanupWorkingMemory
450            - dWorldSetStepMemoryReservationPolicy
451            - dWorldSetStepMemoryManager
452                 
453 06/25/09 Remi Ricard (papaDoc)
454         * Add limit to the to the second axis of the universal joint
455          for the pu joint.
457 06/14/09 Oleh Derevenko
458                 * dWorldQuickStep re-implemented to avoid memory allocation on stack.
459                   Also several optimizations have been made to decrease memory 
460                   requirements and optimize algorithm implementation of dWorldQuickStep.
461                   dWorldStep still remains with old memory allocation however new APIs
462                   mentioned below are fully functional for it.
463                   Both dWorldStep and dWorldQuickStep have been changed to return boolean
464                   success status.
466                 * dInitODE2() changed to automatically call 
467                   AllocateODEDataForThread(dAllocateFlagBasicData) after library 
468                   initialization as this is a required initialization minimum that
469                   must always be performed anyway.
471 06/05/09 Daniel K. O.
472          * Removed aliasing issues from OPCODE/Ice, plus some other warnings.
473            Now it builds on gcc 4.3.2 with '-Wall -Werror -O3".
475 05/30/09 Oleh Derevenko
476          * A minor memory usage optimization for QuickStep.
478 05/24/09 Daniel K. O.
479          * Made the new trimesh collider the default.
480          * Added a "-texturepath" option to drawstuff.
482 05/18/09 Oleh Derevenko
483         * Heightfield rotation fixed to avoid NaNs while rotating infinite
484           MIN/MAX heights.
486 05/03/09 Oleh Derevenko
487         * Incorrect parameter order fixed on contact merging in Sphere-Trimesh
488           collisions. The bug resulted in merged contact remaining with normal
489           of first contact found. Thanks to Dimitris Papavasiliou for reporting.
491 04/23/09 Daniel K. O.
492         * Fixed bug #2685170: use the C99 __func__ instead of __FUNCTION__ when
493           a C99 implementation is available.
495 04/07/09 Remi Ricard (papaDoc)
496         * Remove unused code in demo_joints.cpp, reported by Tilmann.
498 04/07/09 Remi Ricard (papaDoc)
499         * Fix bug in collision categories in demo_jointPU, reported by Tilmann
501 03/14/09 Oleh Derevenko
502         * A possibility to initialize/close ODE multiple times recursively has 
503           been added.
504           Also, now a call to dSpaceSetManualCleanup() is required for each 
505           space right after creation if ODE has been initialized in thread data
506           manual cleanup mode.
507            
508 03/07/09 Oleh Derevenko
509         * Thread local data has been cleaned up from OPCODE and OdeTls as it is
510           not used (OPC_SweepAndPrune.* and OPC_BoxPruning.* have been removed
511           - rebuilding project files is necessary).
513 02/07/09 Daniel K. O.
514         * New house of cards demo, which stresses the friction handling stability.
516 01/29/09 Remi Ricard (papaDoc)
517         * Fix bug: Fix problem when attaching no body to a joint. Before calling
518           setRelativeValues a check is made for bodies.
519         * Add unittest
521 01/28/09 Daniel K. O.
522         * Applied patch #2538046: Heightfield AABB bounds patch.
524 01/23/09 Remi Ricard (papaDoc)
525          * Add new function dJointSetUniversalAxis1Offset and dJointSetUniversalAxis2Offset
526          * Add unittest for those funcitons.
528 01/23/09 Remi Ricard (papaDoc)
529          * Fix problem with dJointGetUniversalAngle2 when the joint is attached to
530            only a body 2. The sign was inverted.
531          * Add unit test to verify for this problem
533 01/21/09 Remi Ricard (papaDoc)
534          * Fix bug reported by Tilman: dxJointPU::getInfo1 was setting twice the
535            limit of limot1 to zero and not limot2
537 01/17/09 Daniel K. O.
538         * Fixed a bug in dSpaceCollide2: if both geoms are not in spaces they would
539           not have valid AABBs.
541 12/20/08 Daniel K. O.
542         * New functions: dJointEnable, dJointDisable, dJointIsEnabled
543           (patch #2454764).
545 12/19/08 Daniel K. O.
546         * Removed inline asm statements that break builds on 64-bit VC++.
548 12/09/08 Daniel K. O.
549         * Applied patch #2381592, which adds support for Kinematic Bodies.
551 12/06/08 Oleh Derevenko
553        * Applied a patch by Martijn Buijs to make GIMPACT trimesh-ray collisions to
554          be consistent with those in OPCODE.
555        * Swapped geometries returned in contacts for OPCODE Trimesh-Plane collisions
556          as they were returned in unnatural order being different from that in GIMPACT
557        * Applied a patch by Martijn Buijs to make side1, side2 fields of contact 
558          structure be always initialized, either with -1 for non-trmesh geometries
559          or with triangle index for trimeshes. These fields were only assigned for
560          trimesh-trimesh collisions before.
561        * dGeomTriMeshSetTriMergeCallback/dGeomTriMeshGetTriMergeCallback API added
562          to set/get user defined callback procedure for trimeshes that would be 
563          invoked when contacts are merged to let user code accumulate attributes of
564          original contact triangles and generate a fake index by which it would 
565          later be able to determine those attributes. If the callback is not 
566          assigned (the default) -1 is generated as triangle index for merged 
567          contacts (there was an index of first of merged triangles before!!!).
568          The callback is currently used within OPCODE trimesh-sphere and OPCODE
569          new trimesh-trimesh collisions.
571 11/20/08 Remi Ricard (papaDoc)
572        * Fix problem with dJointGetPUPosition and
573          dJointGetPUPositionRate when the joint is attached to only
574          a body 2. The sign was inverted.
575        * Fix bug: When a pu joint had only one body attached to position 2,
576          dJointAttach(jId, 0, bId). The body was not push in the right direction to
577          move back between the limits.
578        * Add unit test to check the above problem
579        * Add the function void dJointSetPUAnchorOffset
580        * Make the function void dJointSetPUAnchorDelta deprecated
582 11/19/08 Remi Ricard (papaDoc)
583        * Fix bug: When a pr joint had only one body attached to position 2,
584          dJointAttach(jId, 0, bId). The body was not push in the right direction to
585          move back between the limits.
586        * Add unit test to check the above problem
588 11/19/08 Remi Ricard (papaDoc)
589         * Fix problem with dJointGetPRPosition and
590           dJointGetPRPositionRate when the joint is attached to only
591           a body 2. The sign was inverted.
592         * Add unit test to check the above problem
593         * Increase the tolerance to remove failure in unit test
594         * Remove compilation warning in unit test with the use of REAL()
596 11/18/08 Remi Ricard (papaDoc)
597        * Fix bug: When a piston joint had only one body attached to position 2,
598          dJointAttach(jId, 0, bId). The body was not push in the right direction to
599          move back between the limits.
600        * Add more functionality to demo_piston.cpp
601        * Run astyle on modified files.
603 11/18/08 Remi Ricard (papaDoc)
604         * Fix bug: When a slider joint had only one body attached to position 2,
605          dJointAttach(jId, 0, bId). The body was not push in the right direction to
606          move back between the limits.
608 10/29/08 Oleh Derevenko
610         * Premake scripts changed to only include chosen collision library
611           sources in project on Windows. --all-collis-libs premake option 
612           added to allow inclusion of all collision library sources into the 
613           project
615 10/15/08 Remi Ricard (papaDoc)
616         * Applying patch #2158425 64-bit GIMPACT provided by Mark
617           William. This patch enable GIMPACT to works on 64-bit machine.
619 10/15/08 Remi Ricard (papaDoc)
620         * Add function dJointGetPRAngle and dJointGetPRAngleRate
622 10/15/08 Remi Ricard (papaDoc)
623         * Enable the motor on the rotoide part of the PR joint
625 10/15/08 Remi Ricard (papaDoc)
626         * Add unit test to check if using directly a joint
627           or using after setting with default values is the same.
628         * Add function setRelativeValues called in dJointAttach for
629           all joints.
631 10/10/08 Remi Ricard (papaDoc)
632         * Fix bug in dJointGetPUAxis2. The axis was not multiplied with the
633           the rotation matrix of the good body.
634         * Fix bug if there is only one body on the PU joint the axis returned
635           was not the right one.
636         * Add unit test to verify previous bug.
638 10/03/08 Rodrigo Hernandez (Kwizatz)
639         * Added Blender script to create ODE convex geoms under tools.
641 10/01/08 Rodrigo Hernandez (Kwizatz)
642         * Convex-Convex collision detection code is finally stable.
644 08/31/08 Daniel K. O.
645         * Applied patch 2080674: Improved dBodySetRotation; now exact rotation
646           matrices are preserved until the next simulation step.
648 08/07/08 Daniel K. O.
649         * Fixed strict aliasing issue that was breaking the new trimesh collider.
651 07/24/08 Daniel K. O.
652         * New functions: dBodyGetGyroscopicMode and dBodySetGyroscopicMode
653           (patch #2019242).
655 07/15/08  Remi Ricard (papaDoc)
656         * Add a new define ODE_API_DEPRECATED to mark function as deprecated
657           when necessary.
659 07/14/08 Remi Ricard (papaDoc)
660         * Finish adding patch 1336066: Joint feedback in quickstep by jsinecky
661         * demo_boxstack.cpp can now print joint feedback
663 07/11/08 Daniel K. O.
664         * Bumped version for 0.10.1
665         * Added proper usage of libtool's version info.
667 07/10/08 Remi Ricard (papaDoc)
668         * Add new function dJointSetPistonAnchorOffset
669         * Add unittest for the piston joint
670         * Fix problem with dJointGetPistonPosition and 
671           dJointGetPistonPositionRate when the joint is attached to only
672           a body 2. The sign was inverted.
674 07/09/08 Remi Ricard (papaDoc)
675         * Optimize function Multiply1_12q1 in quickstep
676           Patch proposed by Riemer v.d. Zee and modified by Patrick Baggett
678 07/08/08 Remi Ricard (papaDoc)
679         * Update the slider joint to have the same behavior as the other joint
680           when there is only a body2 attached to it.
681         * Update documentation for the slider joint.
682         * Remove warning by using REAL()
683         * Add new unittest for dJointGetSliderPositionRate
685 07/08/08 Remi Ricard (papaDoc)
686         * Update unittest for the slider.
687         * Rename the new function dJointSetHingeAxisDelta to 
688           dJointSetHingeAxisOffset. This remove will remove confusion with 
689           the old function dJointSetHingeAnchorDelta
690         * Update documentation for the Hinge unittest
691         * Remove warning by using REAL()
693 07/07/08 Daniel K. O.
694         * Max Correcting Vel doesn't affect bounciness, as before.
696 07/03/08 Remi Ricard (papaDoc)
697         * Add new function dJointSetHingeAxisDelta
698         * Add unittest for this new function
700 06/17/08 Remi Ricard (papaDoc)
702         *  Move the computation of the Relative Rotation for the slider joint
703            into a function.
704         * Add unittest for to check qrel 
706 06/17/08 Remi Ricard (papaDoc)
708        * Remove unused variables. 
709        * Remove a conversion warning between unsigned int and int
710         
711 06/17/08 Remi Ricard (papaDoc)
713         * Move the function hingeComputeRelativeRotation as a member of 
714           the hinge structure/class.
716 06/17/08 Remi Ricard (papaDoc)
718         *  Move the computation of the Relative Rotation for the fixed joint
719            into a function.
721 06/16/08 Remi Ricard (papaDoc)
723         * Add testunit for the dxJointFixed
725 06/04/08 Daniel K. O.
727         * Moved joints to ode/src/joints, converted them to true virtual
728           methods.
730 06/02/08 Daniel K. O.
732         * Added an Auto<T> template to step.cpp to handle memory deallocation.
734 05/09/08 Daniel K. O.
736         * Applied patch #1335202: Contact Joint Motion (with some corrections),
737           and added demo_motion.
739 05/01/08 Oleh Derevenko
741         * Memory leak in GIMPACT fixed (reported by Derek)
743 04/28/08 Oleh Derevenko
745         * Added possibility to collide a space of lower sublevel as a geometry
746           against another space of a higher level with dSpaceCollide2.
747           dSpaceSetSublevel/dSpaceGetSublevel are used for sublevel assignment/
748           retrieval.
750 04/27/08 Oleh Derevenko
752         * Fixed incorrect memory copying which could lead to memory corruption
753           in GIMPACT (luckily, in unused code)
754         * Fixed possible memory read beyond the end of allocated buffer along
755           with unnecessary extra memory copying in GIMPACT.
756         * Fixed buffer reserve being incorrectly reset to zero for bitsets 
757           what resulted in unnecessary memory reallocations in GIMPACT.
758         * Implemented support for ability to run collision detection from
759           multiple threads for separate spaces.
760            
761 04/14/08 Oleh Derevenko
763         * Fixed possible memory corruption in new trimesh-trimesh collider
764           in case if two degenerated triangles are checked against each other.
766 04/12/08 Oleh Derevenko
768         * Fixed sporadic assertion failure on vector normalization caused
769           by small triangles degenerating into segments during space 
770           transformations.
772 03/28/08 Remi
774         * Fix a bug in dJointXXXGetInfo. The value in limot.limit was not
775           always updated. (Ex: If hi and lo limit were changed). 
777 03/27/08 Remi
779         * Added a new Joint: Prismatic Universal (patch #1828454).
781          Daniel K. O.
783         * Fixed bug #1841309: collide2() method buggy.
785 03/18/08 Rodrigo
787         * New function: dVector4Copy.
789 03/14/08 david
791         * Added stub calls for trimesh functions.
792         * Applied patch #1914232: dGetConfiguration.
793         * Applied patch #1655333: Optimize the function dNormalize3.
794         * New function: dSetColliderOverride.
795         * New function: dCheckConfiguration.
796         
797          Daniel K. O.
799         * Disabled building shared library by default with autotools.
801 03/13/08 david
803         * New function: dJointGetNumBodies (patch #1901550).
804         * New function: dSpaceGetClass (patch #1901637).
805         * Applied patch #1901649: Add missing function in the export
807 03/12/08 Rodrigo
809         * Fixed drawstuff build issues on OSX.
811 01/12/08 Daniel K. O.
813         * Fixed a typedef bug in configure.in.
814         * Added dCylinder to the C++ wrappers.
815         * Applied patch 1851394: support for GIMPACT with double precision,
816           dCollide fix.
817         * Moved bunny geometry to bunny_geom.h.
819 12/11/07 Daniel K. O.
821         * Added damping and MaxAngularVel() functions.
822         * Const-correctness: added const qualifier to some dWorldGet and dBodyGet
823           functions.
824         * Updated the odecpp.h header.
826 12/07/07 Daniel K. O.
828         * Removed most of the compiler warnings from Drawstuff, ODE and
829           OPCODE
830         * Upgraded automake requirement to 1.10, and change some Makefile.am
832 12/06/07 Rodrigo
834         * Modified autotools to use libtool for
835           library generation and administration
836         * Removed release and debug flags for configure.in
837           CPPFLAGS, CFLAGS, CXXFLAGS should be set by the
838           user to their liking, respecting autotools policies.
840 11/30/07 Daniel K. O.
841         * Applied patch 1813079 (moved callback)
842         * Replaced moveAndRotateBody by dxStepBody in stepfast.cpp
844 11/10/07 david
846         * Added 'Sweep and Prune' collision space.
847         * New Piston joint type with demo, by Remi Ricard
848         * Added build option to use 16-bit indices for OPCODE trimesh
850 11/03/06 david
852         * Integrated Christoph Beyer's average based sampling system for body
853           disabling.
855 10/26/06 Francisco Leon
857         * Totally refactored trimesh collision system.
858           Using GIMPACT instead of OPCODE. Now works correctly, and faster.
859           Visit http://gimpact.sourceforge.net.
860           
861         * Finally, test_moving_trimesh.exe works nicely.   
862           
863         * Fixed autodisable system. Now is possible to set bigger sleeping 
864           threshold values and objects won't be sleeping on the air. They will
865           rest on the floor properly.
866                   
867         * dInitODE function added.
868         
869         * Is Obligatory to call dInitODE() at the beginning for initialize ODE,
870           and calling dCloseODE() when the program ends.
872 09/20/06 bram
874         * Fixed two bugs in cyl/plane collision test.
876 09/13/06 Remi
878         * New Rotoide - Prismatic joint type
879         * dJointGetUniversalAngles for efficient angle retrieval.
881 08/09/06 david
883         * Integrated plane2d joint type which constrains bodies to z == 0.
885 07/06/06 david
887         * Added heightfield primitive collision code. Simple test available in
888           ode/test/test_heightfield
890 04/03/06 rodrigo
892         * Added Convex primitive collision code,
893           currently only convex-sphere and convex-plane work
895 04/01/06 bram
897         * Added program to test trimesh vs sphere: ode/test/test_basket
899 03/20/06 jason379
901         * Added new autogenerated Visual Studio projects, with Premake scripts
903 03/17/06 bram
905         * Added plane/cyl intersection test
906         * Renamed CCylinder to Capsule
907         
908 02/04/06 gcarlton
910         * Added support for geom offsets.
912 10/26/05 rodrigo
914         * Removed LIBTOOL from autotools since it was not really required.
915         * Added a target to build ODE as a shared library, this shared
916           library gets build alongside the static one, no flags required.
918 10/24/05 tfautre
920         (Backported patches from STABLE branch, applied by Adam)
921         
922         * dRandInt changed for a non-double all-int version.
923         * mics minor fixes and improvements.
925 04/05/05 tfautre
927         * Fixed segmentation fault with OPCODE on 64 bits systems.
929 03/31/05 tfautre
931         * Fixed timer.cpp compiler error on x86-64 using GCC.
933 03/29/05 colin
935         * Added trimesh preprocessing to mark unneeded edges and verts.  Also
936           added support for preprocessed info to the ccylinder-trimesh
937           collider.
939 12/07/04 adam
941         * Important AMotors bugfix
943 09/22/04 jeff
945         * Assorted small bugfixes and tweaks for
946           trimesh_{box,ccylinder,trimesh} collisions
948 09/21/04 jeff
950         * added functions to joint.cpp to allow joint attachment to moving
951           geoms.
953         * added malloc-based memory allocation in step.cpp & lcp.cpp (turned
954           on with a #define switch in common.h)
955         
956 05/29/04 russ
958         * added joint feedback to the QuickStep solver
960 05/18/04 russ
962         * added warm starting to the QuickStep solver
964 05/18/04 russ
966         * added the QuickStep solver
967         
968         * added contact parameter functions.
970 05/05/04 adam
972         * use dRandInt instead of rand() in stepfast.
974 04/21/04 russ
976         * added auto-disable support from Aras Pranckevicius (with
977           modifications by russ). this useful feature can speed up
978           simulation significantly in some cases.
979         
980         * various internal tidyups.
982 04/20/04 russ
984         * changed the meaning of the 'index' argument to dJointGetBody():
985           it was the only remaining API function that does not respect
986           dJOINT_REVERSE (spotted by Matthew D. Hancher).
987         
988         * updated the C++ headers: fixed two minor bugs and added
989           support for dQuadTreeSpace, dRay, and the dGeom::getSpace() method
990           (from Matthew D. Hancher).
992 04/18/04 russ
994         * changed the way that the dInfinity constant is implemented: now it
995           is #defined to be one of: FLT_MAX, DBL_MAX, HUGE_VAL, HUGE_VALF, or
996           a large numeric constant. previously it was a variable that was
997           exported from the library. this simplifies the configuration and
998           build process quite a bit, especially in the case of DLLs.
999         
1000         * removed the old, deprecated collision system (geom.cpp,space.cpp,
1001           geom.h,space.h,odecpp_old_collision.h). the ODE_OLD_COLLISION
1002           configuration setting no longer has any meaning.
1003         
1004         * removed support for dGeomGroups, which have been deprecated for
1005           a while and are equivalent to 'spaces' anyway.
1007 04/13/04 russ
1009         * bug fix in dMassSetCappedCylinder(), from Matthew D. Hancher.
1011 04/08/04 russ
1013         * added trimesh-CCylinder capability, from Vadim Macagon
1014           <vadim_mcagon@hotmail.com>.
1016 04/04/04 adam
1018         * yet another rewrite of triangle-box collision code, this
1019         time based on code donated by Croteam, ported by asko@jetti.org
1020         and tweaked by Erwin.
1022 04/04/04 adam
1024         * merged trimesh-trimesh collision code by
1025         Jeffrey Smith <jeffreys@Softimage.com>.
1027         * changed it to not break the trimesh interface, fix
1028         some GCC compilation problems, bring it up to date with
1029         ODE changes from 2003-11-15 -> 2004-04-04.
1031         * add ability to drop meshes on meshes in test_moving_trimesh,
1032         not as good as it could be but it's illustrative.
1034 01/16/04 adam
1036         * implement a bunch of ultra-simple TriMesh functions that were
1037         in the headers but not in the code -- patch by
1038         Vadim Macagon <vadim_mcagon@hotmail.com>
1040         * disable temporal coherence on trimeshes by default, since
1041         it has scaleability issues that don't make it a general clear win.
1043 12/01/03 adam
1045         * implement dxHashSpace::collide2(), not particularly efficiently.
1047 11/14/03 adam
1049         * applied several Trimesh fixes and improvements from
1050         Aras Pranckevicius <nearaz@interamotion.com>
1052 10/22/03 adam
1054         * apply Nguyen Binh's work for removing many dSetZero() calls
1055         and some other extraneous initializations.
1057 07/29/03 martin
1059         * added dJointAdd*Torque/Force().
1061 07/10/03 russ
1063         * added the StepFast code, by David Whittaker.
1065 07/02/03 martin
1067         * added dMassSet*Total().
1069 07/01/03 martin
1071         * added joint limits and motors to universal joints.
1073         * reversed the polarity of the dJOINT_REVERSE flag.
1075 06/30/03 russ
1077         * added the TriMesh geom class and the quad tree space to the ODE
1078           core. both of these were developed by Erwin de Vries. added OPCODE
1079           to the ODE distribution, this is required by TriMesh.
1081 06/23/03 martin
1083         * added dGeomSetQuaternion() and dGeomGetQuaternion()
1084         
1085         * added dJointGet*Anchor2()
1087 05/07/03 russ
1089         * added dGeomGetSpace().
1091 02/05/03 russ
1093         * added dMassSetCylinder().
1095 12/07/02 russ
1097         * added dAreConnectedExcluding().
1099 11/30/02 russ
1101         * added the ray geom class.
1103         * added the dGeomXXXPointDepth() functions.
1105         * added a collision test infrastructure, and some more tests.
1107 11/24/02 russ
1109         * added support for multiple box-box contacts.
1111 11/10/02 russ
1113         * added new collision system. select between the old/new system by
1114           setting the ODE_OLD_COLLISION variable in config/user-settings.
1116 10/28/02 russ
1118         * fixed two problems in the LCP code to improve the reliability of
1119           the dContactApprox1 contact mode.
1121         * added a FAQ question about rolling bodies getting stuck when they
1122           hit multiple geoms.
1124 09/08/02 russ
1126         * added dClosestLineSegmentPoints().
1127         * implemented dCollideCB().
1129 08/28/02 russ
1131         * added dJointSetFeedback() and dJointGetFeedback().
1133 08/05/02 russ
1135         * added dGeomTransformSetInfo() and dGeomTransformGetInfo().
1137 07/13/02 russ
1139         * added dBodySetForce(), dBodySetTorque(), dWorldImpulseToForce(),
1140           dBodyGetPosRelPoint(), dBodyGetPosRelPoint(), dBodyVectorToWorld(),
1141           dBodyVectorFromWorld().
1143         * added dBodyGetPointVel() (thanks to Colin Reed).
1145         * added a new C++ interface (from Martin C. Martin, with modifications
1146           by russ). the old C++ interface is now in odecpp_old.h.
1148 06/25/02 russ
1150         * added an additional BSD-style licensing option for ODE.
1152 06/23/02 russ
1154         * added dCloseODE(), contributed by Nate Waddoups and David McClurg.
1156 05/16/02 russ
1158         * added dSpaceQuery(), contributed by Nate Waddoups.
1160 04/07/02 russ
1162         * added a section to the documentation for universal joints.
1163           this includes a picture of the joint.
1165 04/05/02 russ
1167         * added a universal joint class (generously contributed by
1168           Martin C. Martin). it doesn't (yet) have a motor or joint limits,
1169           but it does come with tests.
1171 03/11/02 russ
1173         * makefile changes to accomodate OSs with command line length
1174           limitations (thanks to Norman Lin).
1176 01/06/02 russ
1178         * added the dBodySetGravityMode() and dBodyGetGravityMode()
1179           functions, which change the dxBodyNoGravity body flag.
1181         * added support for building a DLL with MSVC - there is now a
1182           msvc-dll target. thanks to Norman Lin for doing this.
1184 12/28/01 russ
1186         * added the dParamCFM joint parameter.
1188 12/24/01 russ
1190         * reworked the build system to make it more cross-platform.
1191           there is now a single top-level makefile and a configurator.c
1192           program. see the INSTALL file for details.
1194 12/04/01 russ
1196         * the "angular motor" joint has been completed, and a new section
1197           has been added to the documentation.
1199 11/26/01 russ
1201         * added a new joint type: "angular motor". using this joint is a good
1202           way to get ball-joint motors and limits. this is work in progress -
1203           it has not been fully implemented or tested yet.
1205 11/22/01 russ
1207         * replaced the mmap()-based joint group stack (stack.cpp) with a
1208           malloc()-based arena stack (obstack.cpp). this will be more
1209           portable and should not impact performance.
1211 11/12/01 russ
1213         * changed the meaning of the 'flags' parameter to dCollide() and
1214           related functions: now the size of the contact buffer is kept in
1215           the lower 16 bits. this change will be backward compatible.
1217         * added dBodyGetFiniteRotationMode() and dBodyGetFiniteRotationAxis().
1219         * added dBodyAddForceAtRelPos() function.
1221 11/11/01 russ
1223         * added the ability to manually enable and disable bodies.
1224           see dBodyEnable(), dBodyDisable(), dBodyIsEnabled().
1226         * fixed a potential bug: when a world is destroyed that contains
1227           joints in joint groups, those joints are marked as "deactivated" in
1228           the joint group, so when the joint group is destroyed they can be
1229           ignored.
1231         * the test_boxstack demo has new options to enable and disable bodies.
1233         * new configuration parameter in config.h: dEFFICIENT_SIZE.
1235 11/11/01 russ
1237         * started the change log for ODE. changes older than today were added
1238           to this file by inspecting the CVS logs.
1240 11/05/01 russ
1242         * added REAL() constructions for floating point numbers, to prevent
1243           many warnings when compiling under VC++.
1245 11/03/01 russ
1247         * added geometry transform class, documented composite objects.
1249         * added collision rule: no contacts if both geoms on the same body.
1250           this is not the best rule, may have to remove this in the future.
1252         * new dMassAdd() function.
1254         * capped cylinder to capped cylinder collision function.
1256 10/31/01 russ
1258         * increase CFM in some demos to make them more robust.
1260 10/29/01 russ
1262         * added new accessor functions.
1264 10/19/01 russ
1266         * added the dJOINT_TWOBODIES flag to the joint, that says it can not
1267           be attached to just one body.
1269 10/12/01 russ
1271         * fixed a collision bug in dCollide() that was causing memory
1272           corruption when multiple contacts were being returned.
1274 10/11/01 russ
1276         * joints can now return m=0 to be "inactive". added a "null" joint
1277           to test this.
1279 10/09/01 russ
1281         * in the LCP solver, try to fail gracefully when s <= 0.
1283         * dAABBTestFn() API change.
1285 10/08/01 russ
1287         * fixed a contact swapping bug in dCollide().
1289 10/07/01 russ
1291         * added capped cylinder geometry object.
1293 09/30/01 russ
1295         * the test_buggy demo now uses geometry groups.
1297         * added a dAABBTestFn field in the geometry classes.
1299 09/29/01 russ
1301         * added geometry groups.
1303 09/20/01 russ
1305         * added finite rotation stuff.