aboutsummaryrefslogtreecommitdiffstats
path: root/include/jau/math/mat4f.hpp
Commit message (Collapse)AuthorAgeFilesLines
* cleanup C++20: Cleanup and test Exception* OO tree, ensure only one ↵Sven Göthel2024-05-191-2/+2
| | | | std::exception OO tree instance is included (as they are not using virtual base classes)
* math Matrix4f: Fix setToRotationAxis() 0.9f -> zero, typoSven Göthel2024-05-101-1/+1
|
* math: Fix and test Matrix4::mapWinToObj, unit test test_math_mat4f_10_project01Sven Göthel2024-04-291-2/+2
|
* math: Matrix4: Reuse copy methods, incr-pointer instead of array-indexSven Göthel2024-04-281-85/+61
|
* math: mat4f: Complete static multi Matrix ops; Misc fixesSven Göthel2024-04-281-52/+49
|
* math: Mat4f: Use proper Vec3 template type; Started multi Matrix opsSven Göthel2024-04-261-87/+79
|
* math: Mat4f: Refine constexpr, add translate/scale methods. TODO: Static ↵Sven Göthel2024-04-261-126/+21
| | | | multi Matrix ops
* math: Mat4f: toString() default w/ 13.9f formatting; Reuse load method for ↵Sven Göthel2024-04-261-6/+2
| | | | assignment op
* math: Mat4f/Quaternion: Use multiple of epsilon max deviation constantsSven Göthel2024-04-261-0/+8
|
* math: Mat4f tests: Add test_math_mat4f_01 (simple); test_math_mat4f_02_perf ↵Sven Göthel2024-04-251-0/+1
| | | | | | | | | | | | | | | | | | | | (perfomance) Native C++ Mat4f multiplications beat JOGL's Matrix4f Java implementation by factor >13 (Java-17/C++ -O3), utilizing same code logic. Java: Summary loops 25000000: I4a 1080 ms total, 0.021600 us/mul, I4a / I2 141.732283%, I4a / I4b 99.447514% Summary loops 25000000: I4b 1086 ms total, 0.021720 us/mul, I4b / I2 142.519685%, I4b / I4a 100.555556% C++: Summary loops 300000000: I4a 981 ms total (981,836 us), 1.636394 ns/mul, I4a / I4b 99.785742% Summary loops 300000000: I4b 983 ms total (983,944 us), 1.639908 ns/mul, I4b / I4a 100.214718% Java: 21.600 ns/mul <- 0.021600 us/mul C++: 1.64 ns/mul Java / C++: >13
* math: Use templates, fix alignment and 'iterator' (pointer) r/w access; ↵Sven Göthel2024-04-151-616/+503
| | | | | | | | | | | | | | | | | | | | enforce 'constexpr'; mat4f dropped Stack for constexpr; Dropped math.cpp having clear dependencies Dropped math.cpp having clear dependencies Adding ctor w/ initializer_list Enforcing 'constexpr' where possible also enforces strict aliasing etc, hence resulting in a more tight definition. Template types for floating-point or integral types are used, added the generic inner class typedef variations used in methods for clarity and proper meta-programming. alignas() on base type enforces utilization with arrays. operator[] uses address of first element w/ strict alignment and proper type (for constexpr).
* Fix macro header name (to be included once)Sven Göthel2024-04-151-3/+3
|
* math: Mat4f: Add get{Column|Row} w/o passing result storage; Add ↵Sven Göthel2024-04-131-1/+41
| | | | operator*(const Vec4f&)
* math: Add std::ostream operator<<(..) to all types; string_util: Add ↵Sven Göthel2024-04-131-0/+15
| | | | [v]format_string(..) for [v]printf(..) formatting a string
* math: AffineTransform: Use epsilon aware is_zero() and equals() operationsSven Göthel2024-04-131-4/+0
|
* math: Migrate linear algebra + float IEEE 754 (IEC 559) functionality from ↵Sven Göthel2024-04-131-0/+2087
gfxbox2 and certain Jogl of mine classes to jau::math::** Chosen CamelCase (PascalCase) for class types, differing from gfxbox2. Status: - Compile clean - Tests -- test_math_float.cpp: Covers epsilon/zero/equal/compare/IEC559 of float_math.hpp -- test_math_vec.cpp: Covers Vec2f + Vec3f (TODO) -- TODO: Mat4f, Quaternion, Frustum, ...