Vladimír Vondruš
b2328f57cd
Math: fall back to lerp when slerp'd quaternions are too close.
...
Returning just the first argument had several issues, one of them was
causing iterative interpolations to get stuck at the initial position
forever.
6 years ago
Vladimír Vondruš
6fbedd8f52
Revert "doc: pile on more Doxygen workarounds."
...
This reverts commit 0b7831c1ad .
6 years ago
Vladimír Vondruš
0b7831c1ad
doc: pile on more Doxygen workarounds.
...
Sad! https://github.com/doxygen/doxygen/issues/7472
6 years ago
Vladimír Vondruš
959ab7a444
Math: haha whoops.
7 years ago
Vladimír Vondruš
15e5bfa09e
Update credits and changelog, minor cleanup.
7 years ago
Marco Melorio
097289850a
Add toEuler() to Quaternion
7 years ago
Vladimír Vondruš
2030e7cfef
Math: clarify how quaternion data are ordered.
7 years ago
Vladimír Vondruš
4b4b8efc1b
Math: doc++
...
Fixing Engrish while doing the Python bindings.
7 years ago
Vladimír Vondruš
36ba5f4333
Math: ensure ZeroInit and IdentityInit constructors are explicit.
...
Like NoInit ones. Not sure what I was doing there.
7 years ago
Vladimír Vondruš
754c84525e
The <cmath> header is not allowed anymore.
7 years ago
Vladimír Vondruš
cee530733e
Math: make it possible to opt out of Debug output operators.
...
Undocumented at this point, will be used for magnum-singles export.
7 years ago
Vladimír Vondruš
64bc7f9c8e
Math: moved configuration value parsers to a dedicated header.
...
There's a lot of string operations and that's nothing good to have
included everywhere. Should speed up the compilation quite a bit.
7 years ago
Vladimír Vondruš
e6b7aa12fa
Updated copyright year.
7 years ago
Vladimír Vondruš
f5e30bb5d3
Math: minor coding style cleanup.
8 years ago
Borislav Stanimirov
f7f2ab8cb5
Math: added StrictWeakOrdering for math types
8 years ago
Vladimír Vondruš
0cf65741ae
Math: helpfully print the offending values in all assertions.
8 years ago
Vladimír Vondruš
66a313bc0d
Math: doc++
8 years ago
Vladimír Vondruš
2c1da5466e
Math: added data() accessors to all remaining types.
8 years ago
Vladimír Vondruš
28a19f5add
Math: adapt to m.css Doxygen theme updates.
...
In particular, there's now warning about ignored documented friend
declarations. I don't have them documented, that's just Doxygen being
shitty.
8 years ago
Vladimír Vondruš
523c16779d
Math: added missing CubicHermite [s]lerp[ShortestPath]() overloads.
8 years ago
Vladimír Vondruš
dfcd33ffe8
Math: properly test also (s)lerpShortestPath() assertions.
...
And boom, there was a bug.
8 years ago
Vladimír Vondruš
eadf8986f6
Math: fuzzy compare for division-by-zero in quaternion s(c)lerp.
...
Also remove a totally unneeded conversion.
8 years ago
Vladimír Vondruš
780e5258cc
Math: consistently use arccos() in math equations.
8 years ago
Vladimír Vondruš
ec34009025
Math: document the usual notation for complex/dual/quat numbers.
8 years ago
Vladimír Vondruš
737104f2c7
Math: added "shortest path" alternatives to lerp(), slerp() and sclerp().
...
Before neither of the lerp(), slerp() had the shortest path check, while
sclerp() had it. Now, to be consistent, none of them has it and there
are lerpShortestPath(), slerpShortestPath() and sclerpShortestPath()
functions that have the shortest path check.
This is different from other engines, where there's usually only the
shortest path interpolation by default and either an optional
"non-shortest-path" interpolation or no alternative at all. I like to
give the users a choice, so there's both versions and the
non-shortest-path version is the default, because -- at least in case of
lerp() -- this results in a quite significant perf difference (15%
faster), so why not have it. Preprocess your data instead ;)
8 years ago
Vladimír Vondruš
e997344b8c
Math: new CubicHermite class.
...
For spline interpolation.
8 years ago
Vladimír Vondruš
8c7c74c22e
Math: mutable getters for Complex, Dual and Quaternion.
...
Not sure why these were omitted. Everything else has them.
8 years ago
Vladimír Vondruš
c2c6b9f22b
Math: added lerp() and slerp() for complex numbers.
...
It's a straight copy of the code for quaternions -- it could probably be
simplified a bit, but I don't have the necessary brain cells at the
moment. I tried the following but failed:
retun Complex::rotation(acos(cosAngle)*t)*normalizedA;
8 years ago
Vladimír Vondruš
b9c96d76e8
Math: ability to use [Dual]Complex and [Dual]Quaternion in configuration.
8 years ago
Vladimír Vondruš
d88e79cd9e
Math: new Color[34]::fromSrgb[Alpha]() and Color[34]::toSrgb[Alpha]Int().
...
For easier conversion of packed 24-/32-bit colors to the Color types.
8 years ago
Vladimír Vondruš
105cef5efd
No need to use fully qualified name for \debugoperator.
8 years ago
Vladimír Vondruš
a421b50be3
Math: doc++
8 years ago
Vladimír Vondruš
468af3284a
Math: removed long-deprecated member dot(), angle(), lerp(), cross().
...
Use free functions in Math namespace instead.
8 years ago
Vladimír Vondruš
2136466f0f
Math: doc++, add search aliases for GLSL functions.
8 years ago
Vladimír Vondruš
623fa97970
Updated copyright year.
8 years ago
Vladimír Vondruš
7a16273e5d
Updated copyright year.
9 years ago
Vladimír Vondruš
40d60f6a3f
Math: make all constructor noexcept and test their behavior.
10 years ago
Vladimír Vondruš
eaeda24399
Don't restrict Double usage on OpenGL ES.
...
Restrict only what's not defined by GL on the ES flavor (double
attributes and uniforms). I love the smell of burning code.
10 years ago
Vladimír Vondruš
23646e6690
Hell, this project is big.
10 years ago
Vladimír Vondruš
6e8c16c960
MSVC 2015 Update 1: fixed nearly all constexpr bugs.
11 years ago
Vladimír Vondruš
7bb8bb271b
Math: test Quaternion SLERP division by zero with non-trivial data.
...
So that we test it returns the first argument and not
default-constructed value or something. Also updated the documentation.
11 years ago
Squareys
998f63bcb2
Math: Fix slerp interpolation of equal quaternions and add test.
...
If and only if the quaternions to interpolate are equal, the angle between
them is 0.0 and we therefore cannot safely divide by the sin of that angle.
Credits to @wivlaro for finding this one.
Fixes #117 .
Signed-off-by: Squareys <Squareys@googlemail.com>
11 years ago
Vladimír Vondruš
34df5a0aaa
Math: explicit conversion constructors for Dual, Complex and Quaternion.
...
Similarly to what's already in all Vector and Matrix classes. Not sure
why this wasn't there already.
11 years ago
Squareys
ae07f15676
Math: Super minor formatting fix.
...
Signed-off-by: Squareys <Squareys@googlemail.com>
11 years ago
Vladimír Vondruš
670c9d0763
Adapted to Corrade::Utility::Debug changes.
11 years ago
Vladimír Vondruš
0aa16595eb
Use new-style debug operators everywhere.
11 years ago
Vladimír Vondruš
000d8f8129
MSVC 2015 compatibility: Math external conversion constexpr issues.
...
Caused by inability to delegate constexpr constructors. Subclasses are
okay, fortunately.
11 years ago
Vladimír Vondruš
eae48a3380
Math: simplify Quaternion default constructor.
...
It should generate the same (constexpr) code, but this way it doesn't
go through replicating the zero value four times and just
zero-initializes the data array in vector. Also fixes "not a constexpr"
issues with GCC 4.6 in compatibility branch (but these shouldn't be
there anyway).
11 years ago
Vladimír Vondruš
d0baab2bfe
I hate GCC.
...
Why the hell it does not have std::is_trivially_constructible until
version 5?!
11 years ago
Vladimír Vondruš
1b0da5b2df
Math: ability to construct all types without initializing the contents.
...
Useful for squeezing out last bits of performance, e.g. in this case:
Vector3 a;
a[0] = something++;
a[1] = something++;
a[2] = something++;
In the code all elements are first zeroed out and then overwritten
later, thus it might be good to avoid the zero-initialization:
Vector3 a{Math::NoInit};
a[0] = something++;
a[1] = something++;
a[2] = something++;
This will of course be more useful in far larger data types and arrays
of these.
11 years ago