Vladimír Vondruš
a3924c9176
Brought Math::Deg/Rad and related operators to Magnum namespace.
13 years ago
Vladimír Vondruš
ff929c04e9
Math: type-safe implementation for degrees and radians.
...
Next few commits will add requirement for "strongly typed" angles in all
function parameters, e.g.:
Matrix3::rotation(24.0_degf);
Math::sin(1.047_radf);
The purpose is to make angle entering less error-prone, e.g. not passing
degrees when radians should be etc.
13 years ago
Vladimír Vondruš
f1e3453517
Math: base class for units.
13 years ago
Vladimír Vondruš
687bd37b81
Math: initial complex number implementation.
13 years ago
Vladimír Vondruš
99be617278
Work-around preprocessor issues on Windows.
...
I hate windows.h.
13 years ago
Vladimír Vondruš
e94a596a80
Math: code cleanup, doc++
13 years ago
Vladimír Vondruš
9cb0b77d1e
Math: added underlying type typedef for remaining types.
...
Also updated and unified documentation.
13 years ago
Vladimír Vondruš
5b1463fa0c
Math: test constexpr methods on DualQuaternion.
13 years ago
Vladimír Vondruš
dccfc1f8ba
Math: test constexpr methods on Quaternion.
13 years ago
Vladimír Vondruš
184bf38fc1
Math: test constexpr methods on Dual.
13 years ago
Vladimír Vondruš
e2591253ae
Math: test constexpr swizzle().
13 years ago
Vladimír Vondruš
227517ff89
Math: added DualQuaternion::transformPoint().
13 years ago
Vladimír Vondruš
7e0d8d119f
Math: ability to normalize DualQuaternion.
...
Also hope that this is proper implementation.
13 years ago
Vladimír Vondruš
12c786c408
Math: renamed DualQuaternion::norm() to length(), added lengthSquared().
...
Hopefully this is properly implemented and properly named. On the other
hand, having length everywhere (vectors, quaternions, complex numbers)
and norm only at one place is inconsistent.
13 years ago
Vladimír Vondruš
f1da7a08b4
Math: added sqrt() overload for Dual.
13 years ago
Vladimír Vondruš
fec6822187
Math: added sqrt() scalar/vector overload.
13 years ago
Vladimír Vondruš
83346ce023
Math: converting DualQuaternion to matrix.
...
Also updated and simplified Quaternion to matrix test.
13 years ago
Vladimír Vondruš
389e9194e0
Math: doc++
13 years ago
Vladimír Vondruš
07c0c4d845
Math: added tests for composed dual quaternion parts.
...
To be sure everything is implemented properly.
13 years ago
Vladimír Vondruš
a49bb0d718
Math: convenience functions for transforming vectors with matrices.
...
It's now possible to conveniently transform 2D vectors and points with
3x3 matrices and 3D vectors/points with 4x4 matrices. Previous most
low-level solution:
Matrix4 m;
Vector3 v;
Vector3 a = (m*Vector4(v, 1.0f)).xyz();
Vector4 b = (m*Vector4(v, 0.0f)).xyz();
Another, more generalized solution for points was with Point2D/Point3D,
adding a lot of confusion (what is that class and what does .vector()?):
Vector3 a = (m*Point3D(v)).vector();
And the worst solution was with generic 2D/3D code (WTF!):
auto a = (m*typename DimensionTraits::PointType(v)).vector();
Now it is just this, similar for both dimensions:
Vector3 a = m.transformPoint(v);
Vector3 b = m.transformVector(v);
Note that transformation three-component vectors with 3x3 matrices or
four-component vectors with 4x4 matrices is easy enough so it doesn't
need any special convenience functions whatsoever:
Vector3 c = m.rotation()*v;
13 years ago
Vladimír Vondruš
0f554a49f6
Math: convenience function to transform points with DualQuaternion.
13 years ago
Vladimír Vondruš
4697658ed2
Math: ability to also multiply Dual with Dual of another underlying type.
13 years ago
Vladimír Vondruš
0f130ad55d
Math: simplified Quaternion::rotateVector*() tests.
...
Comparing to Matrix4 transformation.
13 years ago
Vladimír Vondruš
03ae82b448
Math: creating DualQuaternion from vector.
13 years ago
Vladimír Vondruš
5673cf2656
Math: better documentation for vector/quat constructors.
13 years ago
Vladimír Vondruš
3ad264893e
Math: creating rotation and translation DualQuaternion.
13 years ago
Vladimír Vondruš
4c1608378a
Math: document that Quaternion::rotationAxis() might return NaN vector.
13 years ago
Vladimír Vondruš
5615a4c7f6
Math: initial implementation of DualQuaternion class.
...
Currently practically unusable.
13 years ago
Vladimír Vondruš
6eeac71290
Math: Use default pure equality comparison for arbitrary types.
13 years ago
Vladimír Vondruš
2a25c6eafd
Math: return proper type from Dual operators in subclasses.
13 years ago
Vladimír Vondruš
b8df58a5e7
Math: Allow division of Dual with Dual of another type.
...
Will allow dividing Dual<Quaternion<T>> with Dual<T>.
13 years ago
Vladimír Vondruš
3f6a2d5ae8
Math: dual number implementation.
13 years ago
Vladimír Vondruš
5d6b2b4ecd
Math: properly test Quaternion comparison.
13 years ago
Vladimír Vondruš
95982e5176
Math: various code cleanup.
13 years ago
Vladimír Vondruš
a0b8dcc067
Math: rename Quaternion::fromRotation() to rotation().
...
Now it is similar in usage to Matrix4 functions and is now also
crossreferenced in documentation. Also updated the test to also check
assertion.
13 years ago
Vladimír Vondruš
93ac7f0d3c
Math: rotating vectors with Quaternion.
13 years ago
Vladimír Vondruš
730c09567d
Math: ability to explicitly create Quaternion for given vector.
13 years ago
Vladimír Vondruš
7c81755152
Math: slightly reorganize Quaternion test.
13 years ago
Vladimír Vondruš
99e2bd4c64
Doc++
13 years ago
Vladimír Vondruš
0144c38a54
Math: moved lerp() from Vector to Functions.h.
...
It does nothing special for vectors (unlike e.g. quaternion LERP) and
scalar overload is useful too.
13 years ago
Vladimír Vondruš
b63adf2404
Math: added Gram-Schmidt orthogonalization algorithm.
13 years ago
Vladimír Vondruš
1967179a40
Math: slight improvement of Gram-Schmidt orthonormalization algorithm.
...
Using Vector::projectOntoNormalized(), as it is slightly faster, renamed
the functions to properly mention that this is orthonormalization.
13 years ago
Vladimír Vondruš
ce2a07a09a
Math: slightly faster Vector::projectedOntoNormalized().
...
The assertion will still compute the dot product (but not in release
builds).
13 years ago
Vladimír Vondruš
019c9c0c5f
Math: Gauss-Jordan algorithm as pure functions.
...
No need to wrap this in a class.
13 years ago
Vladimír Vondruš
11544813a2
Math: don't needlessly include Matrix in GaussJordanTest.
...
Should save another bit of recompilation time in addition to previous
commit.
13 years ago
Vladimír Vondruš
ede0d9b503
Math: generalize Gram-Schmidt algorithm for non-square matrices.
13 years ago
Vladimír Vondruš
8a63939134
Math: added vector/scalar abs() function.
13 years ago
Vladimír Vondruš
0885320603
Math: vector dot product in terms of component-wise multiply and sum.
...
Less SIMD alternatives to implement in the future.
13 years ago
Vladimír Vondruš
f517a000ed
Math: follow Vector changes in BoolVector.
...
Added constexpr "filling" constructor, updated tests, added constexpr
test.
13 years ago
Vladimír Vondruš
bbea562a6c
Math: properly testing all constexpr methods in RectangularMatrix.
...
Fixed data() method, it doesn't need to use reinterpret_cast.
13 years ago