Merged: oleh_derevenko#1928: Fixed: Fixed issue with "findex==-1" constraints being...
[ode.git] / CHANGELOG.txt
blob73f8b23db74c914886a7a01d01328901dbb3ed68
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/03/13 Oleh_Derevenko
12         * Fixed issue with "findex==-1" constraints being intermixed with 
13           "findex!=-1" ones during constraints random reordering in QuickStep.
15 02/03/13 Oleh_Derevenko
16         * [u]int[8/16/32] renamed to contain "d" prefix so that global namespace
17           was not polluted with these names unconditionally. 
18           If your project depended on these types other than just for passing 
19           parameters to ODE calls, add similar typedefs for yourself in some 
20           of your project's global headers.
22 01/02/13 Oleh_Derevenko
23         * Applied patch #183 by Joseph Cooper (complementary matrix 
24           calculation fix).
26 12/28/12 Oleh_Derevenko
27         * A bug with heightfield data assigned to a wrong field in 
28           dGeomHeightfieldSetHeightfieldData fixed (bug report #88 by Luc).
30 12/18/12 Oleh_Derevenko
31         * Fixed issue with some kinds of joints (Ball, DBall, DHinge, Fixed)
32           might overwrite world ERP value with their custom ERP during 
33           getInfo2() call and that inappropriate value would then be passed 
34           to subsequent joints in solver instead of world ERP.
36 12/01/12 Oleh_Derevenko
37         * Fixed issues reported in patches #151 and #22 (collisions with
38           SAPSpace and QuadTreeSpace might not work because geometries list
39           was misused in them).
40         * Applied patch #160 "IsPointInPolygon in convex.cpp returns wrong 
41           results" (by Janis Rucis)
43 11/25/12 Oleh Derevenko
44         * Configuration option --disable-threading-intf added 
45           (--no-threading-intf for Windows/Premake). This allows disabling
46           threading interface support (external implementations may not be 
47           assigned) but eliminates dependency on OU and use of atomics in 
48           steppers.
50 11/05/12 Oleh Derevenko
51         * Fixed zero comparisons in OPCODE to use relative error instead of
52           absolute epsilon value (found by Bill Sellers)
54 06/08/12 Daniel K. O.
55         * Removed the need for defining dSINGLE/dDOUBLE; this is stored now in
56           the generated ode/precision.h header.
57         * Some code cleanup to get rid of GCC warnings.
59 05/30/12 Daniel K. O.
60         * Made drawstuff draw shadows for lines.
61         * Fixed dhinge's last constraint to properly handle rotations.
63 05/03/12 Daniel K. O.
64         * Added two new joints: Double Ball and Double Hinge.
66 04/22/12 Daniel K. O.
67         * Fixed plane2d joint: uninitialized variables (reported by Dimitris
68           Papavasiliou)
70 04/14/12 Oleh Derevenko
71         * Assertion checking macros moved into library private headers.
73 04/13/12 Daniel K. O.
74         * Applied patch from bug  #3431829 - better handling of capsule-box with
75           deep penetrations.
76         * Fixed zero-mu issues: now either mu or mu2 can be set to zero.
78 03/17/12 Oleh Derevenko
79         * Threaded execution support interface added. Optional built-in threading
80           implementation added.
81           Internal threading implementation is excluded by default and to be used, 
82           it must be enabled with configure/premake.
83           At present, if threading interface is assigned to a world, island 
84           selection and stepping is performed in multiple threads (one thread per 
85           island).
87 03/12/12 Oleh Derevenko
88         * PURE_INLINE macro renamed to ODE_PURE_INLINE and definition of 
89           dNextAfter()/dCopySign() corrected to avoid creating conflicts with 
90           other libraries.
92 02/03/12 Oleh Derevenko
93         * Assertion checking macros moved from common.h to error.h
95 12/18/11 Oleh Derevenko
96         * dIVERIFY macro added (same as dIASSERT in debug mode but evaluates its
97           expression in release mode) to be used to assert variable value 
98           which is not used further in text while avoiding compiler warning.
99         * dICHECK macro added (same as dIASSERT but evaluates its expression and 
100           raises assertion fault regardless of compilation mode) to be used to
101           generate a fault in cases when error is very unlikely but must be 
102           handled and handling is very troublesome (e.g. failure to lock a mutex
103           due to lack of resources).
105 12/07/11 Oleh Derevenko
106         * Partially fixed size_t to integer conversion warnings
107         * Fixed type signedness and added casts to size_t wherever necessary 
108           in Step/QuickStep
110 11/04/11 Daniel K. O.
111         * Applied patch #3429454 - fix compilation on some platforms.
113 10/28/11 Daniel K. O.
114         * Fixed a box-capsule bug: more reasonable normal for deep penetrations
115           (contributed by Georg Martius.)
117 10/27/11 Daniel K. O.
118         * Disabled merging of contacts for trimesh-sphere by default.
119         * Added new demo: demo_tracks.
121 10/17/11 Daniel K. O.
122         * Added python bindings, contributed by Gideon Klompje.
123         * Updated some build scripts.
124         * Changed spheres distribution in demo_space_stress.
126 05/17/11 Oleh Derevenko
127         * A typo in step.cpp fixed (assignment operator in a conditional 
128           instead of comparison) (reported by Bram Stolk)
130 01/29/11 Oleh Derevenko
131         * Heightfield zone boundaries calculation code fixed to also consider
132           whole next cell after the AABB if the AABB ends exactly at the cell
133           boundary.
135 01/23/11 Daniel K. O.
136         * Applied patch from Daniel Fiser, add libccd collider for
137           box-cylinder.
139 01/20/11 Daniel K. O.
140         * Applied patch from Daniel Fiser, fix infinite loop in libccd caused
141           by numerical problems.
143 01/06/11 Daniel K. O.
144         * Applied patch from Daniel Fiser, efficient libccd tests when using
145           CONTACTS_UNIMPORTANT.
147 12/17/10 Daniel K. O.
148         * Applied patches from Daniel Fiser for new colliders based on libccd.
150 11/08/10 Daniel K. O.
151         * Applied patches from Daniel Fiser to incorporate libccd for
152           Cylinder-Cylinder collision tests.
154 08/21/10 Oleh Derevenko
155         * Fix applied to dxReallocateTemporayWorldProcessContext() to remove typo 
156           which caused segmentation fault (by Kyle McKay).
157           dTestSolveLCP() fixed to avoid exceeding allocated memory pool 
158           (by Kyle McKay).
160 07/19/10 Oleh Derevenko
161         * Patch applied (#3030783) to fix drawstuff dimensions being ignored
162           in OSX GLUT port (by Danny Price).
164          Daniel K. O.
165         * Applied patch #2991622: dGeomGetRelPointPos, dGeomGetPosRelPoint,
166           dGeomVectorToWorld, and dGeomVectorFromWorld.
168 07/16/10 Daniel K. O.
169         * Fixed bug #2937076: don't try to build demos if drawstuff is disabled.
171 05/02/10 Oleh Derevenko
172         * Missing extern "C" wrapper has been added to include/ode/export-dif.h
173           (reported by Danny Price). The change affects dWorldExportDIF() public 
174           function.
176 05/02/10 Oleh Derevenko
177         * Patch applied (#2995450) to generate up to four contacts for box-
178           plane collision test (by alexdu) and fix contact depths.
180 05/02/10 Oleh Derevenko
181         * dGeomLowLevelControl function added with ability to change/query OPCODE 
182           trimesh-sphere contact merging behavior at runtime.
184 02/18/10 Daniel K. O.
185         * Fixed bug affecting disabled joints and dWorldStep.
187 01/16/10 Oleh Derevenko
188         * Patch applied (#2931174) to make demos work for recent MacOS.
189         * Patch applied (#2931177) to fix the demos' framerate on X11.
191 12/20/09 Oleh Derevenko
192         * QuadTreeSpace implementation corrected to avoid object-block relation 
193           ambiguity due to numeric errors.
195 12/04/09 Oleh Derevenko
196         * odecpp classes changed to be inheritable and easily expandable
198 11/29/09 Oleh Derevenko
199         * Improvement for trimesh-plane collision (also used in trimesh-heightfield)
200           to exclude mesh vertices that have already generated contacts from further
201           examination and contact generation in other triangles (suggested by LR).
203 10/25/09 Oleh Derevenko
204         * Macros changed to static inline functions in odemath.h and related files.
205           Some code duplication has been eliminated across the files.
207         * Fixed handling of --disable-asserts and --enable-double-precision 
208           (absence of --enable-double-precision) in configure script. The script
209           was not appending compiler defines correctly.
211         * dWorldStep implementation changed to remove allocation on stack. 
212           dUSE_MALLOC_FOR_ALLOCA define has been removed as well as corresponding
213           configuration parameter. Also dMemoryFlag public variable has been removed.
214           (look for presence of ODE_EXT_malloc_not_alloca configuration string if
215           your application is dependent on that variable).
217 09/05/09 Oleh Derevenko
218         * dWorldStepFast1 API removed along with dWorld[Get/Set]AutoEnableDepthSF1
220 08/29/09 Oleh Derevenko
221         * Fixed uninitialized floating point array used in computations.
223 08/12/09 Oleh Derevenko
224         * A typo fixed in dGeomCopyOffsetRotation() (final_posr was used instead 
225           of offset_posr). Reported by Tilmann.
227 08/11/09 Daniel K. O.
228         * Made sure neither dSINGLE or dDOUBLE is defined by default; the user
229           should always explicitly specify the precision.
231 06/27/09 Oleh Derevenko
232         * New functions have been added:
233            - dWorldUseSharedWorkingMemory
234            - dWorldCleanupWorkingMemory
235            - dWorldSetStepMemoryReservationPolicy
236            - dWorldSetStepMemoryManager
237                 
238 06/25/09 Remi Ricard (papaDoc)
239         * Add limit to the to the second axis of the universal joint
240          for the pu joint.
242 06/14/09 Oleh Derevenko
243                 * dWorldQuickStep re-implemented to avoid memory allocation on stack.
244                   Also several optimizations have been made to decrease memory 
245                   requirements and optimize algorithm implementation of dWorldQuickStep.
246                   dWorldStep still remains with old memory allocation however new APIs
247                   mentioned below are fully functional for it.
248                   Both dWorldStep and dWorldQuickStep have been changed to return boolean
249                   success status.
251                 * dInitODE2() changed to automatically call 
252                   AllocateODEDataForThread(dAllocateFlagBasicData) after library 
253                   initialization as this is a required initialization minimum that
254                   must always be performed anyway.
256 06/05/09 Daniel K. O.
257          * Removed aliasing issues from OPCODE/Ice, plus some other warnings.
258            Now it builds on gcc 4.3.2 with '-Wall -Werror -O3".
260 05/30/09 Oleh Derevenko
261          * A minor memory usage optimization for QuickStep.
263 05/24/09 Daniel K. O.
264          * Made the new trimesh collider the default.
265          * Added a "-texturepath" option to drawstuff.
267 05/18/09 Oleh Derevenko
268         * Heightfield rotation fixed to avoid NaNs while rotating infinite
269           MIN/MAX heights.
271 05/03/09 Oleh Derevenko
272         * Incorrect parameter order fixed on contact merging in Sphere-Trimesh
273           collisions. The bug resulted in merged contact remaining with normal
274           of first contact found. Thanks to Dimitris Papavasiliou for reporting.
276 04/23/09 Daniel K. O.
277         * Fixed bug #2685170: use the C99 __func__ instead of __FUNCTION__ when
278           a C99 implementation is available.
280 04/07/09 Remi Ricard (papaDoc)
281         * Remove unused code in demo_joints.cpp, reported by Tilmann.
283 04/07/09 Remi Ricard (papaDoc)
284         * Fix bug in collision categories in demo_jointPU, reported by Tilmann
286 03/14/09 Oleh Derevenko
287         * A possibility to initialize/close ODE multiple times recursively has 
288           been added.
289           Also, now a call to dSpaceSetManualCleanup() is required for each 
290           space right after creation if ODE has been initialized in thread data
291           manual cleanup mode.
292            
293 03/07/09 Oleh Derevenko
294         * Thread local data has been cleaned up from OPCODE and OdeTls as it is
295           not used (OPC_SweepAndPrune.* and OPC_BoxPruning.* have been removed
296           - rebuilding project files is necessary).
298 02/07/09 Daniel K. O.
299         * New house of cards demo, which stresses the friction handling stability.
301 01/29/09 Remi Ricard (papaDoc)
302         * Fix bug: Fix problem when attaching no body to a joint. Before calling
303           setRelativeValues a check is made for bodies.
304         * Add unittest
306 01/28/09 Daniel K. O.
307         * Applied patch #2538046: Heightfield AABB bounds patch.
309 01/23/09 Remi Ricard (papaDoc)
310          * Add new function dJointSetUniversalAxis1Offset and dJointSetUniversalAxis2Offset
311          * Add unittest for those funcitons.
313 01/23/09 Remi Ricard (papaDoc)
314          * Fix problem with dJointGetUniversalAngle2 when the joint is attached to
315            only a body 2. The sign was inverted.
316          * Add unit test to verify for this problem
318 01/21/09 Remi Ricard (papaDoc)
319          * Fix bug reported by Tilman: dxJointPU::getInfo1 was setting twice the
320            limit of limot1 to zero and not limot2
322 01/17/09 Daniel K. O.
323         * Fixed a bug in dSpaceCollide2: if both geoms are not in spaces they would
324           not have valid AABBs.
326 12/20/08 Daniel K. O.
327         * New functions: dJointEnable, dJointDisable, dJointIsEnabled
328           (patch #2454764).
330 12/19/08 Daniel K. O.
331         * Removed inline asm statements that break builds on 64-bit VC++.
333 12/09/08 Daniel K. O.
334         * Applied patch #2381592, which adds support for Kinematic Bodies.
336 12/06/08 Oleh Derevenko
338        * Applied a patch by Martijn Buijs to make GIMPACT trimesh-ray collisions to
339          be consistent with those in OPCODE.
340        * Swapped geometries returned in contacts for OPCODE Trimesh-Plane collisions
341          as they were returned in unnatural order being different from that in GIMPACT
342        * Applied a patch by Martijn Buijs to make side1, side2 fields of contact 
343          structure be always initialized, either with -1 for non-trmesh geometries
344          or with triangle index for trimeshes. These fields were only assigned for
345          trimesh-trimesh collisions before.
346        * dGeomTriMeshSetTriMergeCallback/dGeomTriMeshGetTriMergeCallback API added
347          to set/get user defined callback procedure for trimeshes that would be 
348          invoked when contacts are merged to let user code accumulate attributes of
349          original contact triangles and generate a fake index by which it would 
350          later be able to determine those attributes. If the callback is not 
351          assigned (the default) -1 is generated as triangle index for merged 
352          contacts (there was an index of first of merged triangles before!!!).
353          The callback is currently used within OPCODE trimesh-sphere and OPCODE
354          new trimesh-trimesh collisions.
356 11/20/08 Remi Ricard (papaDoc)
357        * Fix problem with dJointGetPUPosition and
358          dJointGetPUPositionRate when the joint is attached to only
359          a body 2. The sign was inverted.
360        * Fix bug: When a pu joint had only one body attached to position 2,
361          dJointAttach(jId, 0, bId). The body was not push in the right direction to
362          move back between the limits.
363        * Add unit test to check the above problem
364        * Add the function void dJointSetPUAnchorOffset
365        * Make the function void dJointSetPUAnchorDelta deprecated
367 11/19/08 Remi Ricard (papaDoc)
368        * Fix bug: When a pr joint had only one body attached to position 2,
369          dJointAttach(jId, 0, bId). The body was not push in the right direction to
370          move back between the limits.
371        * Add unit test to check the above problem
373 11/19/08 Remi Ricard (papaDoc)
374         * Fix problem with dJointGetPRPosition and
375           dJointGetPRPositionRate when the joint is attached to only
376           a body 2. The sign was inverted.
377         * Add unit test to check the above problem
378         * Increase the tolerance to remove failure in unit test
379         * Remove compilation warning in unit test with the use of REAL()
381 11/18/08 Remi Ricard (papaDoc)
382        * Fix bug: When a piston joint had only one body attached to position 2,
383          dJointAttach(jId, 0, bId). The body was not push in the right direction to
384          move back between the limits.
385        * Add more functionality to demo_piston.cpp
386        * Run astyle on modified files.
388 11/18/08 Remi Ricard (papaDoc)
389         * Fix bug: When a slider joint had only one body attached to position 2,
390          dJointAttach(jId, 0, bId). The body was not push in the right direction to
391          move back between the limits.
393 10/29/08 Oleh_Derevenko
395         * Premake scripts changed to only include chosen collision library
396           sources in project on Windows. --all-collis-libs premake option 
397           added to allow inclusion of all collision library sources into the 
398           project
400 10/15/08 Remi Ricard (papaDoc)
401         * Applying patch #2158425 64-bit GIMPACT provided by Mark
402           William. This patch enable GIMPACT to works on 64-bit machine.
404 10/15/08 Remi Ricard (papaDoc)
405         * Add function dJointGetPRAngle and dJointGetPRAngleRate
407 10/15/08 Remi Ricard (papaDoc)
408         * Enable the motor on the rotoide part of the PR joint
410 10/15/08 Remi Ricard (papaDoc)
411         * Add unit test to check if using directly a joint
412           or using after setting with default values is the same.
413         * Add function setRelativeValues called in dJointAttach for
414           all joints.
416 10/10/08 Remi Ricard (papaDoc)
417         * Fix bug in dJointGetPUAxis2. The axis was not multiplied with the
418           the rotation matrix of the good body.
419         * Fix bug if there is only one body on the PU joint the axis returned
420           was not the right one.
421         * Add unit test to verify previous bug.
423 10/03/08 Rodrigo Hernandez (Kwizatz)
424         * Added Blender script to create ODE convex geoms under tools.
426 10/01/08 Rodrigo Hernandez (Kwizatz)
427         * Convex-Convex collision detection code is finally stable.
429 08/31/08 Daniel K. O.
430         * Applied patch 2080674: Improved dBodySetRotation; now exact rotation
431           matrices are preserved until the next simulation step.
433 08/07/08 Daniel K. O.
434         * Fixed strict aliasing issue that was breaking the new trimesh collider.
436 07/24/08 Daniel K. O.
437         * New functions: dBodyGetGyroscopicMode and dBodySetGyroscopicMode
438           (patch #2019242).
440 07/15/08  Remi Ricard (papaDoc)
441         * Add a new define ODE_API_DEPRECATED to mark function as deprecated
442           when necessary.
444 07/14/08 Remi Ricard (papaDoc)
445         * Finish adding patch 1336066: Joint feedback in quickstep by jsinecky
446         * demo_boxstack.cpp can now print joint feedback
448 07/11/08 Daniel K. O.
449         * Bumped version for 0.10.1
450         * Added proper usage of libtool's version info.
452 07/10/08 Remi Ricard (papaDoc)
453         * Add new function dJointSetPistonAnchorOffset
454         * Add unittest for the piston joint
455         * Fix problem with dJointGetPistonPosition and 
456           dJointGetPistonPositionRate when the joint is attached to only
457           a body 2. The sign was inverted.
459 07/09/08 Remi Ricard (papaDoc)
460         * Optimize function Multiply1_12q1 in quickstep
461           Patch proposed by Riemer v.d. Zee and modified by Patrick Baggett
463 07/08/08 Remi Ricard (papaDoc)
464         * Update the slider joint to have the same behavior as the other joint
465           when there is only a body2 attached to it.
466         * Update documentation for the slider joint.
467         * Remove warning by using REAL()
468         * Add new unittest for dJointGetSliderPositionRate
470 07/08/08 Remi Ricard (papaDoc)
471         * Update unittest for the slider.
472         * Rename the new function dJointSetHingeAxisDelta to 
473           dJointSetHingeAxisOffset. This remove will remove confusion with 
474           the old function dJointSetHingeAnchorDelta
475         * Update documentation for the Hinge unittest
476         * Remove warning by using REAL()
478 07/07/08 Daniel K. O.
479         * Max Correcting Vel doesn't affect bounciness, as before.
481 07/03/08 Remi Ricard (papaDoc)
482         * Add new function dJointSetHingeAxisDelta
483         * Add unittest for this new function
485 06/17/08 Remi Ricard (papaDoc)
487         *  Move the computation of the Relative Rotation for the slider joint
488            into a function.
489         * Add unittest for to check qrel 
491 06/17/08 Remi Ricard (papaDoc)
493        * Remove unused variables. 
494        * Remove a conversion warning between unsigned int and int
495         
496 06/17/08 Remi Ricard (papaDoc)
498         * Move the function hingeComputeRelativeRotation as a member of 
499           the hinge structure/class.
501 06/17/08 Remi Ricard (papaDoc)
503         *  Move the computation of the Relative Rotation for the fixed joint
504            into a function.
506 06/16/08 Remi Ricard (papaDoc)
508         * Add testunit for the dxJointFixed
510 06/04/08 Daniel K. O.
512         * Moved joints to ode/src/joints, converted them to true virtual
513           methods.
515 06/02/08 Daniel K. O.
517         * Added an Auto<T> template to step.cpp to handle memory deallocation.
519 05/09/08 Daniel K. O.
521         * Applied patch #1335202: Contact Joint Motion (with some corrections),
522           and added demo_motion.
524 05/01/08 Oleh_Derevenko
526         * Memory leak in GIMPACT fixed (reported by Derek)
528 04/28/08 Oleh_Derevenko
530         * Added possibility to collide a space of lower sublevel as a geometry
531           against another space of a higher level with dSpaceCollide2.
532           dSpaceSetSublevel/dSpaceGetSublevel are used for sublevel assignment/
533           retrieval.
535 04/27/08 Oleh_Derevenko
537         * Fixed incorrect memory copying which could lead to memory corruption
538           in GIMPACT (luckily, in unused code)
539         * Fixed possible memory read beyond the end of allocated buffer along
540           with unnecessary extra memory copying in GIMPACT.
541         * Fixed buffer reserve being incorrectly reset to zero for bitsets 
542           what resulted in unnecessary memory reallocations in GIMPACT.
543         * Implemented support for ability to run collision detection from
544           multiple threads for separate spaces.
545            
546 04/14/08 Oleh_Derevenko
548         * Fixed possible memory corruption in new trimesh-trimesh collider
549           in case if two degenerated triangles are checked against each other.
551 04/12/08 Oleh_Derevenko
553         * Fixed sporadic assertion failure on vector normalization caused
554           by small triangles degenerating into segments during space 
555           transformations.
557 03/28/08 Remi
559         * Fix a bug in dJointXXXGetInfo. The value in limot.limit was not
560           always updated. (Ex: If hi and lo limit were changed). 
562 03/27/08 Remi
564         * Added a new Joint: Prismatic Universal (patch #1828454).
566          Daniel K. O.
568         * Fixed bug #1841309: collide2() method buggy.
570 03/18/08 Rodrigo
572         * New function: dVector4Copy.
574 03/14/08 david
576         * Added stub calls for trimesh functions.
577         * Applied patch #1914232: dGetConfiguration.
578         * Applied patch #1655333: Optimize the function dNormalize3.
579         * New function: dSetColliderOverride.
580         * New function: dCheckConfiguration.
581         
582          Daniel K. O.
584         * Disabled building shared library by default with autotools.
586 03/13/08 david
588         * New function: dJointGetNumBodies (patch #1901550).
589         * New function: dSpaceGetClass (patch #1901637).
590         * Applied patch #1901649: Add missing function in the export
592 03/12/08 Rodrigo
594         * Fixed drawstuff build issues on OSX.
596 01/12/08 Daniel K. O.
598         * Fixed a typedef bug in configure.in.
599         * Added dCylinder to the C++ wrappers.
600         * Applied patch 1851394: support for GIMPACT with double precision,
601           dCollide fix.
602         * Moved bunny geometry to bunny_geom.h.
604 12/11/07 Daniel K. O.
606         * Added damping and MaxAngularVel() functions.
607         * Const-correctness: added const qualifier to some dWorldGet and dBodyGet
608           functions.
609         * Updated the odecpp.h header.
611 12/07/07 Daniel K. O.
613         * Removed most of the compiler warnings from Drawstuff, ODE and
614           OPCODE
615         * Upgraded automake requirement to 1.10, and change some Makefile.am
617 12/06/07 Rodrigo
619         * Modified autotools to use libtool for
620           library generation and administration
621         * Removed release and debug flags for configure.in
622           CPPFLAGS, CFLAGS, CXXFLAGS should be set by the
623           user to their liking, respecting autotools policies.
625 11/30/07 Daniel K. O.
626         * Applied patch 1813079 (moved callback)
627         * Replaced moveAndRotateBody by dxStepBody in stepfast.cpp
629 11/10/07 david
631         * Added 'Sweep and Prune' collision space.
632         * New Piston joint type with demo, by Remi Ricard
633         * Added build option to use 16-bit indices for OPCODE trimesh
635 11/03/06 david
637         * Integrated Christoph Beyer's average based sampling system for body
638           disabling.
640 10/26/06 Francisco Leon
642         * Totally refactored trimesh collision system.
643           Using GIMPACT instead of OPCODE. Now works correctly, and faster.
644           Visit http://gimpact.sourceforge.net.
645           
646         * Finally, test_moving_trimesh.exe works nicely.   
647           
648         * Fixed autodisable system. Now is possible to set bigger sleeping 
649           threshold values and objects won't be sleeping on the air. They will
650           rest on the floor properly.
651                   
652         * dInitODE function added.
653         
654         * Is Obligatory to call dInitODE() at the beginning for initialize ODE,
655           and calling dCloseODE() when the program ends.
657 09/20/06 bram
659         * Fixed two bugs in cyl/plane collision test.
661 09/13/06 Remi
663         * New Rotoide - Prismatic joint type
664         * dJointGetUniversalAngles for efficient angle retrieval.
666 08/09/06 david
668         * Integrated plane2d joint type which constrains bodies to z == 0.
670 07/06/06 david
672         * Added heightfield primitive collision code. Simple test available in
673           ode/test/test_heightfield
675 04/03/06 rodrigo
677         * Added Convex primitive collision code,
678           currently only convex-sphere and convex-plane work
680 04/01/06 bram
682         * Added program to test trimesh vs sphere: ode/test/test_basket
684 03/20/06 jason379
686         * Added new autogenerated Visual Studio projects, with Premake scripts
688 03/17/06 bram
690         * Added plane/cyl intersection test
691         * Renamed CCylinder to Capsule
692         
693 02/04/06 gcarlton
695         * Added support for geom offsets.
697 10/26/05 rodrigo
699         * Removed LIBTOOL from autotools since it was not really required.
700         * Added a target to build ODE as a shared library, this shared
701           library gets build alongside the static one, no flags required.
703 10/24/05 tfautre
705         (Backported patches from STABLE branch, applied by Adam)
706         
707         * dRandInt changed for a non-double all-int version.
708         * mics minor fixes and improvements.
710 04/05/05 tfautre
712         * Fixed segmentation fault with OPCODE on 64 bits systems.
714 03/31/05 tfautre
716         * Fixed timer.cpp compiler error on x86-64 using GCC.
718 03/29/05 colin
720         * Added trimesh preprocessing to mark unneeded edges and verts.  Also
721           added support for preprocessed info to the ccylinder-trimesh
722           collider.
724 12/07/04 adam
726         * Important AMotors bugfix
728 09/22/04 jeff
730         * Assorted small bugfixes and tweaks for
731           trimesh_{box,ccylinder,trimesh} collisions
733 09/21/04 jeff
735         * added functions to joint.cpp to allow joint attachment to moving
736           geoms.
738         * added malloc-based memory allocation in step.cpp & lcp.cpp (turned
739           on with a #define switch in common.h)
740         
741 05/29/04 russ
743         * added joint feedback to the QuickStep solver
745 05/18/04 russ
747         * added warm starting to the QuickStep solver
749 05/18/04 russ
751         * added the QuickStep solver
752         
753         * added contact parameter functions.
755 05/05/04 adam
757         * use dRandInt instead of rand() in stepfast.
759 04/21/04 russ
761         * added auto-disable support from Aras Pranckevicius (with
762           modifications by russ). this useful feature can speed up
763           simulation significantly in some cases.
764         
765         * various internal tidyups.
767 04/20/04 russ
769         * changed the meaning of the 'index' argument to dJointGetBody():
770           it was the only remaining API function that does not respect
771           dJOINT_REVERSE (spotted by Matthew D. Hancher).
772         
773         * updated the C++ headers: fixed two minor bugs and added
774           support for dQuadTreeSpace, dRay, and the dGeom::getSpace() method
775           (from Matthew D. Hancher).
777 04/18/04 russ
779         * changed the way that the dInfinity constant is implemented: now it
780           is #defined to be one of: FLT_MAX, DBL_MAX, HUGE_VAL, HUGE_VALF, or
781           a large numeric constant. previously it was a variable that was
782           exported from the library. this simplifies the configuration and
783           build process quite a bit, especially in the case of DLLs.
784         
785         * removed the old, deprecated collision system (geom.cpp,space.cpp,
786           geom.h,space.h,odecpp_old_collision.h). the ODE_OLD_COLLISION
787           configuration setting no longer has any meaning.
788         
789         * removed support for dGeomGroups, which have been deprecated for
790           a while and are equivalent to 'spaces' anyway.
792 04/13/04 russ
794         * bug fix in dMassSetCappedCylinder(), from Matthew D. Hancher.
796 04/08/04 russ
798         * added trimesh-CCylinder capability, from Vadim Macagon
799           <vadim_mcagon@hotmail.com>.
801 04/04/04 adam
803         * yet another rewrite of triangle-box collision code, this
804         time based on code donated by Croteam, ported by asko@jetti.org
805         and tweaked by Erwin.
807 04/04/04 adam
809         * merged trimesh-trimesh collision code by
810         Jeffrey Smith <jeffreys@Softimage.com>.
812         * changed it to not break the trimesh interface, fix
813         some GCC compilation problems, bring it up to date with
814         ODE changes from 2003-11-15 -> 2004-04-04.
816         * add ability to drop meshes on meshes in test_moving_trimesh,
817         not as good as it could be but it's illustrative.
819 01/16/04 adam
821         * implement a bunch of ultra-simple TriMesh functions that were
822         in the headers but not in the code -- patch by
823         Vadim Macagon <vadim_mcagon@hotmail.com>
825         * disable temporal coherence on trimeshes by default, since
826         it has scaleability issues that don't make it a general clear win.
828 12/01/03 adam
830         * implement dxHashSpace::collide2(), not particularly efficiently.
832 11/14/03 adam
834         * applied several Trimesh fixes and improvements from
835         Aras Pranckevicius <nearaz@interamotion.com>
837 10/22/03 adam
839         * apply Nguyen Binh's work for removing many dSetZero() calls
840         and some other extraneous initializations.
842 07/29/03 martin
844         * added dJointAdd*Torque/Force().
846 07/10/03 russ
848         * added the StepFast code, by David Whittaker.
850 07/02/03 martin
852         * added dMassSet*Total().
854 07/01/03 martin
856         * added joint limits and motors to universal joints.
858         * reversed the polarity of the dJOINT_REVERSE flag.
860 06/30/03 russ
862         * added the TriMesh geom class and the quad tree space to the ODE
863           core. both of these were developed by Erwin de Vries. added OPCODE
864           to the ODE distribution, this is required by TriMesh.
866 06/23/03 martin
868         * added dGeomSetQuaternion() and dGeomGetQuaternion()
869         
870         * added dJointGet*Anchor2()
872 05/07/03 russ
874         * added dGeomGetSpace().
876 02/05/03 russ
878         * added dMassSetCylinder().
880 12/07/02 russ
882         * added dAreConnectedExcluding().
884 11/30/02 russ
886         * added the ray geom class.
888         * added the dGeomXXXPointDepth() functions.
890         * added a collision test infrastructure, and some more tests.
892 11/24/02 russ
894         * added support for multiple box-box contacts.
896 11/10/02 russ
898         * added new collision system. select between the old/new system by
899           setting the ODE_OLD_COLLISION variable in config/user-settings.
901 10/28/02 russ
903         * fixed two problems in the LCP code to improve the reliability of
904           the dContactApprox1 contact mode.
906         * added a FAQ question about rolling bodies getting stuck when they
907           hit multiple geoms.
909 09/08/02 russ
911         * added dClosestLineSegmentPoints().
912         * implemented dCollideCB().
914 08/28/02 russ
916         * added dJointSetFeedback() and dJointGetFeedback().
918 08/05/02 russ
920         * added dGeomTransformSetInfo() and dGeomTransformGetInfo().
922 07/13/02 russ
924         * added dBodySetForce(), dBodySetTorque(), dWorldImpulseToForce(),
925           dBodyGetPosRelPoint(), dBodyGetPosRelPoint(), dBodyVectorToWorld(),
926           dBodyVectorFromWorld().
928         * added dBodyGetPointVel() (thanks to Colin Reed).
930         * added a new C++ interface (from Martin C. Martin, with modifications
931           by russ). the old C++ interface is now in odecpp_old.h.
933 06/25/02 russ
935         * added an additional BSD-style licensing option for ODE.
937 06/23/02 russ
939         * added dCloseODE(), contributed by Nate Waddoups and David McClurg.
941 05/16/02 russ
943         * added dSpaceQuery(), contributed by Nate Waddoups.
945 04/07/02 russ
947         * added a section to the documentation for universal joints.
948           this includes a picture of the joint.
950 04/05/02 russ
952         * added a universal joint class (generously contributed by
953           Martin C. Martin). it doesn't (yet) have a motor or joint limits,
954           but it does come with tests.
956 03/11/02 russ
958         * makefile changes to accomodate OSs with command line length
959           limitations (thanks to Norman Lin).
961 01/06/02 russ
963         * added the dBodySetGravityMode() and dBodyGetGravityMode()
964           functions, which change the dxBodyNoGravity body flag.
966         * added support for building a DLL with MSVC - there is now a
967           msvc-dll target. thanks to Norman Lin for doing this.
969 12/28/01 russ
971         * added the dParamCFM joint parameter.
973 12/24/01 russ
975         * reworked the build system to make it more cross-platform.
976           there is now a single top-level makefile and a configurator.c
977           program. see the INSTALL file for details.
979 12/04/01 russ
981         * the "angular motor" joint has been completed, and a new section
982           has been added to the documentation.
984 11/26/01 russ
986         * added a new joint type: "angular motor". using this joint is a good
987           way to get ball-joint motors and limits. this is work in progress -
988           it has not been fully implemented or tested yet.
990 11/22/01 russ
992         * replaced the mmap()-based joint group stack (stack.cpp) with a
993           malloc()-based arena stack (obstack.cpp). this will be more
994           portable and should not impact performance.
996 11/12/01 russ
998         * changed the meaning of the 'flags' parameter to dCollide() and
999           related functions: now the size of the contact buffer is kept in
1000           the lower 16 bits. this change will be backward compatible.
1002         * added dBodyGetFiniteRotationMode() and dBodyGetFiniteRotationAxis().
1004         * added dBodyAddForceAtRelPos() function.
1006 11/11/01 russ
1008         * added the ability to manually enable and disable bodies.
1009           see dBodyEnable(), dBodyDisable(), dBodyIsEnabled().
1011         * fixed a potential bug: when a world is destroyed that contains
1012           joints in joint groups, those joints are marked as "deactivated" in
1013           the joint group, so when the joint group is destroyed they can be
1014           ignored.
1016         * the test_boxstack demo has new options to enable and disable bodies.
1018         * new configuration parameter in config.h: dEFFICIENT_SIZE.
1020 11/11/01 russ
1022         * started the change log for ODE. changes older than today were added
1023           to this file by inspecting the CVS logs.
1025 11/05/01 russ
1027         * added REAL() constructions for floating point numbers, to prevent
1028           many warnings when compiling under VC++.
1030 11/03/01 russ
1032         * added geometry transform class, documented composite objects.
1034         * added collision rule: no contacts if both geoms on the same body.
1035           this is not the best rule, may have to remove this in the future.
1037         * new dMassAdd() function.
1039         * capped cylinder to capped cylinder collision function.
1041 10/31/01 russ
1043         * increase CFM in some demos to make them more robust.
1045 10/29/01 russ
1047         * added new accessor functions.
1049 10/19/01 russ
1051         * added the dJOINT_TWOBODIES flag to the joint, that says it can not
1052           be attached to just one body.
1054 10/12/01 russ
1056         * fixed a collision bug in dCollide() that was causing memory
1057           corruption when multiple contacts were being returned.
1059 10/11/01 russ
1061         * joints can now return m=0 to be "inactive". added a "null" joint
1062           to test this.
1064 10/09/01 russ
1066         * in the LCP solver, try to fail gracefully when s <= 0.
1068         * dAABBTestFn() API change.
1070 10/08/01 russ
1072         * fixed a contact swapping bug in dCollide().
1074 10/07/01 russ
1076         * added capped cylinder geometry object.
1078 09/30/01 russ
1080         * the test_buggy demo now uses geometry groups.
1082         * added a dAABBTestFn field in the geometry classes.
1084 09/29/01 russ
1086         * added geometry groups.
1088 09/20/01 russ
1090         * added finite rotation stuff.