Version History
Version 2.1 - February 11, 2008
- API Change: Removed OxMath.Initialize and OxMath.Deinitialize. Everything "just works" now.
- API Change: The OxMath module's 3D vector pseudo-constants are now fully qualified read-only properties (but they're still mutable). The "k" prefix has been removed.
- API Change: All of the OxMath module's "random" methods and properties have been replaced with a singleton-style OxMath.RandomGenerator As Random property. This is safer and faster but some convenience methods (like RandomBoolean) have been removed.
- API Change: OxMVector2.Origin and OxMVector3.Origin methods have been removed. These would always set the vector to zero rather than respecting the OxMath.Vector3Origin value which could lead to confusion. Use vec = 0 for the same functionality.
- API Change: The vector array classes no longer expose an Address As Ptr property. They now auto-convert to Ptr when needed.
- API Change: In an attempt to standardize class naming conventions the several time-slice functions have been renamed.
- API Change: All vector and vector-array Add, Subtract, Multiply, and Divide overloads that store the result of two other vectors or scalars have been renamed to SetToSum, SetToDifference, SetToProduct, and SetToQuotient respectively.
- Note: The class folder structure has been separated into a core (required) OxMath folder and optional OxMath Extras folders.
- Vector classes now auto-convert from scalars (e.g. vec = 4.0 sets all members to 4.0).
- Vector CloseEnough and (rounded) Equals extensions have been promoted to full class methods.
- Vector Ceil extensions actually Ceil now (previously they would Round).
- Vector Ceil extensions and (rounded) Equals methods now work properly with negative components.
- The vector-array classes contain workarounds for Ptr related crashes on x86 targets due to a REALbasic bug (vqeosdsi) marked fixed in 2008r2. These classes may perform less efficiently on x86 targets when built with REALbasic versions less than 2008r2 due to these workarounds.
- New vector-array SetToSum, SetToProduct, and SetToDifference scalar operations that store the result given a second array and scalar.
- Vector and index array classes now properly handle cases where the requested Count is less than one.
- OxMBounds2DPoint and OxMBounds3DPoint now return correct validity flags during debug checks (they now actually work in debug builds).
- OxMBounds classes now have default constructors that create valid "normalized" volumes.
- OxMathExtensions: New vector SetToDirectionFromPointToPoint and DirectionFromSelfToPoint extensions.
- OxMathExtensions: New vector Round and Floor extensions with arbitrary decimal precision.
- OxMathExtensions: New (overloaded) scalar Round, Floor, and Ceil methods with arbitrary decimal precision.
- OxMathExtensions: New scalar CloseEnough and (rounded) Equals extensions.
- Corrected spelling of OxMath.kReleaseBuildErrorChecking constant.
- New intersection example project.
- Full and proper documentation.
Version 2.0 - April 27, 2007
- Important: These classes have undergone a major overhaul since the initial release and now require REALbasic 2006r4 or higher. Projects based on the previous release may require some minor updating due to API changes.
- New bounding volume / intersection classes.
- The vector array classes have essentially been re-written and are no longer subclasses of MemoryBlock. The biggest change is the addition of bulk-math methods that work on the entire array as efficiently as possible.
- OxMVector2 and OxMVector3 have been fleshed out with more functionality, including a full range of vector-to-vector and vector-to-scalar mathematical operations, with (and without) operator overloading.
- OxMQuaternion and OxMAxisAngle have a few new operations, optimizations, and more stable quaternion to axis angle conversion.
- The OxMath module contains more constants, a new RandomSignedFloat function, and an ErrorLogger interface to route warnings.
- A new (and optional) OxMathExtensions module provides more exotic functions. Note that Integer bit testing extensions have been moved here from the OxMath module.
- Background tasks are now disabled for debug builds in all methods that use "speedy" pragmas in release targets. This results in more consistent behaviour between release and debug builds, particularly when using threads.
- Numerous other optimizations, bug fixes, and general code clean up.
Version 1.0 - March 13, 2006
- Initial release