Releases: JOML-CI/JOML
Releases · JOML-CI/JOML
1.9.3
Breaking Changes
- renamed Matrix4.mulAffineR(Matrix4x3) to .mul(Matrix4x3) - (13604ef)
Additions
- Matrix4.rotateTowardsXY() - rotation around Z axis using X/Y base vectors (44e738b)
- missing Vector3*c interface methods - (e804ca4, 1b0cab7)
- Matrix3d.transform(Vector3f) - (1b0cab7)
- Matrix4d.transformDirection(Vector3f) - (1b0cab7)
- Quaternionf.transform(Vector3d) - (1b0cab7)
- Vector3.mul(Matrix3d, Vector3f) - (1b0cab7)
- Vector3/4.rotateAbout() - (1b0cab7)
- AxisAngle4d.transform(Vector3f/4d) - (54ae6b7)
- Matrix3.set()/get() - to set individual matrix elements (498a6ca)
- Vector3.absolute() - (6d01be7)
- Matrix4.setFromIntrinsic() - to build projection matrix from intrinsic camera properties (d6d6d9a)
-Djoml.format
and-Djoml.format.decimals
- (#113, 9eb908b)- Matrix3x2.shearX/Y() - (b87204e)
- Matrix3x2.transform() - with vector components (b87204e)
- Vector4.get(int) - (#116, 9d156aa)
- Matrix3/4.rotateLocalX/Y/Z() - (7418ab3, 1703d19, 490f06a, 14f8764)
- Matrix4.affineSpan()/Matrix3x2.span() - (28e132e)
- Matrix3x2.*Local() methods - (13604ef)
- Matrix4.mul(Matrix3x2) - (13604ef)
Fixes
- GWT compliance - thanks to @sriharshachilakapati (318c47c, 9d4a780, 657bb9b)
- Matrix3.set() - thanks to @auberondreaming (#115) (a1391b6)
- Intersection.testRayTriangle() - thanks to @madidier (#118, 4cb92d3)
- Quaternion/Matrix -> Matrix conversion - (54ae6b7)
- AxisAngle4d.transform(Vector4d) signature - use vector interface (54ae6b7)
- Vector3/4.rotateAbout() - (091325a)
- Matrix4f.sub(Matrix4f) - signature (2eb2562)
- Vector parameter types in Matrix3x2 methods - use interface types (13604ef)
- JavaDocs (06171c3, 3c97078, 62832de)
1.9.2
1.9.1
Changes compared to 1.9.0:
Breaking Changes
- remove
-Djoml.noproxy
- proxy instantiation intoImmutable()
is now explicitly enabled via-Djoml.debug
(e1032ac) - rename Vector3.set() to setComponent() - (#99)
- Quaternion.scale() - now applies uniform scaling instead of spherical interpolation, so has the same geometric interpretation as (and is symmetric to) Matrix.scale() (14e89a5)
Additions
- Vector2/4.setComponent() - (#99) thanks to @mfg92
- Quaternion can now represent rotations and uniform scaling - (14e89a5, c74116c)
- Matrix4x3.translationRotateMul() - (7987a28)
Fixes
- Matrix4x3.setTranslation() - (082e09a) thanks to @theagentd for reporting
Improvements
1.9.0
Changes compared to 1.8.6:
Breaking Changes
- Intersection.testCircleCircle() now also returns true if one circle contains the other one
- Removed TrapezoidOrthoCrop due to implementing a patented algorithm
Fixes
- Quaterniond.fromAxisAngleDeg() was taking radians and not degrees - thanks to @bcdaughe (#98)
- Maven plugin upgrades to build JOML under JDK9 - (ac5fcea)
- various JavaDocs
Additions
- New 'immutable views' on all JOML classes (vectors, matrices, quaternions) - (#52)
- New sampling package for generating:
- "Best Candidate" sample patterns on quad, disk and sphere
- "Poisson" sample patterns on disk
- "Spiral" sample patterns with equi-angular distribution on disk
- "Stratified" sample patterns on an N times N strata grid
- "Uniform"/random sample patterns on disk and sphere
- Convolution class to generate (separable) Gaussian kernels
- new system property
-Djoml.debug
- performs checks that direct NIO Buffers are used when-Djoml.nounsafe
is not set andsun.misc.Unsafe
is available - missing Quaternionf.fromAxisAngle*() - (7ebd0fe)
- Matrix.getEulerAnglesZYX() - the reverse of Matrix.rotateZYX() (5901ae4)
- Vector3.mulPosition/Direction(Matrix4x3) - (fc72745)
- Matrix4x3d.get4x4(Buffer) - (65a08cd)
- various overloads for Matrix methods taking other compatible classes as parameters - (1d3a2f2)
- Matrix.setColumn/setRow() - (c8cd17d)
Improvements
- system property
-Djoml.fastmath
now uses even faster and more accurate sin/cos approximation - thanks to @roquendm (cb0cb05) - performance improvements for copying between Vector and NIO Buffer - (3cbc166)
- optimize Matrix4f copy constructors - (536143f)
- optimize Vector2i/Vector3i.get/put() - (cb1fe8a)
- optimize Matrix3f.scaling() and Matrix4/4x3f.translate() - (f5d2f32)
1.8.6
1.8.5
Changes compared to 1.8.4:
Fixes
Additions
- Matrix.lerp() - as requested by #91 (7830e7c)
- Vector2.distance() - with primitive parameters (5163f06)
- Matrix.rotateTowards() - inverse of lookAt() without translation (7685a87)
- Matrix4/4x3.translationRotateTowards() - rotateTowards() including translation (53394e7)
- Quaternionf.getAsMatrix[4/3]f(Buffer) - fast serialization of a quaternion as a 3x3 or 4x4 matrix (79b7158)
- Quaternionf.get(Matrix4x3)/.getAsMatrix4x3(Buffer) - represent a quaternion as a 4x3 matrix (2956e20)
Improvements
1.8.4
1.8.3
Changes compared to 1.8.2:
Breaking Changes
- Rename Quaternion.lookRotate() to .lookAlong() (13af0bf)
Fixes
- JavaDocs (d632a65)
Additions
- Vector3.orthogonalizeUnit (af83ccd)
- new Matrix3/4 and Vector3 methods (7d98f8c)
- the class org.joml.Math is now included in the compilation by default (see: https://github.com/JOML-CI/JOML/wiki/Configuration)
- fast and accurate arithmetic sin/cos approximation (aed138c) (see: http://www.gamedev.net/topic/681723-faster-sin-and-cos/#entry5308906) (see: https://github.com/JOML-CI/JOML/wiki/Configuration)
Improvements
1.8.2
Changes compared to 1.8.1:
Fixes
- radius parameter in Intersection.intersectCircleCircle() and .intersectSphereSphere() (thanks to @Physiix) (see #85)
- Matrix4.setTranslation() did not remove identity property (see c8ecbf7)
- JavaDocs
Additions
- Matrix4.rotateAround()/rotateAroundLocal() - applies rotation around a given rotation origin (see 3693f94)
- Matrix4.scaleAround()/scaleAroundLocal() - applies scaling around a given origin (see ae87fbb)
- Matrix4.translationRotate() - with uniform scale parameter (see e02b9e3)
- Matrix4.translationRotateScale() - with uniform scale parameter (see 4a9ae73)
- Matrix4.translationRotateScaleInvert() - with uniform scale parameter (see ae18a5a)
- new system property "joml.nounsafe" to opt-out of using sun.misc.Unsafe (see 9be40bd)
Improvements
1.8.1
Changes compared to 1.8.0:
Breaking changes:
- Matrix4.transpose3x3() now only modifies the upper-left submatrix (1968e40) - use-case: Matrix4.get3x3(Matrix3), transpose(), Matrix4.set3x3(Matrix3) for building billboard model transformations
- renamed Matrix4.rotateAffineLocal() to .rotateLocal() (4875481)
- disallow direct access to the fields in Matrix4. The existing mNN() accessor methods must be used now
Fixes:
- Matrix4.set(AxisAngle) and .getColumn() (1da9732)
- ambiguous rotation in Quaternion.rotateTo()/rotationTo() (0d9848c, be67325) - thanks to @sanjay900 for reporting ( #82)
- various JavaDoc fixes
Additions:
- Matrix4x3f/Matrix4x3d class for affine-only transformations
- Matrix.transform*() overloads taking primitive floats as the input vector (64a94d6)
- Quaternion.transform() overloads taking primitive floats as input vector (b8f4f41)
- Matrix4d.getTransposed() and .get4x3Transposed() (af218ac, 14c41be)
- QuaternionInterpolator classes (28985a3) - interpolation over a series of quaternions using SVD for skeletal animation
- Quaternion.add() with primitive parameters (3c6f58c)
- Vector3.rotationTo() (60d7912) - convenience for Quaternion.rotationTo() similar to OGRE3D's Vector3.getRotationTo()
- Matrix4.lookAtPerspective()/lookAtPerspectiveLH() (4953e3b) - special-case method for applying look-at transformation to a perspective projection
- Matrix4.set4x3(Matrix4) (fb22d0f)
- Matrix4.translationRotateScaleInvert() (c8a8de7) - 2x performance improvement over special-case translationRotateScale().invertAffine()
- Gradle build.gradle (1d77dad)
Improvements:
- performance improvement for most Matrix4 methods by tracking common properties of a matrix and routing to specialized methods (4953e3b)
- performance improvements for Matrix3.mul()/invert() (82ed59c)
- performance optimization for Matrix4.set(Matrix4) (b2dd814) - thanks to @theagentd for reporting