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š
35c4b5bd23
Doc++
13 years ago
Vladimír Vondruš
ff06d88a24
Extension header for OpenGL ES is available now.
...
ES3 will need to be handled differently, not bothering with that for now.
13 years ago
Vladimír Vondruš
5af9e3abc6
TextureTools: use Math::max() instead of doing it by hand.
13 years ago
Vladimír Vondruš
afea4f34db
Text: proper UTF-8 support in Font::prerender().
13 years ago
Vladimír Vondruš
692f4854a7
Ability to retrieve texture image size in given mip level.
13 years ago
Vladimír Vondruš
f23827bd87
Clang linker fixes.
13 years ago
Vladimír Vondruš
8d2485c331
Clang also needs parentheses around default templated arguments.
13 years ago
Vladimír Vondruš
3610a80dfd
Clang fixes for templated base classes.
...
Unlike GCC it does need the `template` keyword on weird places.
13 years ago
Vladimír Vondruš
28c15aeb93
Clang fixes for friend declarations.
...
Friending only constructor apparently doesn't help, specifying
full-scope name for Resource.
13 years ago
Vladimír Vondruš
55fecaff5a
Template aliases also can't have "conflicting" default arguments.
...
Clang didn't like that (and I thought these workarounds aren't needed
with C++11's alias template anymore).
13 years ago
Vladimír Vondruš
c339063566
Don't instanitate/declare structs as classes.
...
Clang warned about that.
13 years ago
Vladimír Vondruš
dd9fcd83f0
Fixed name clash in internal implementation.
...
Clang didn't like that.
13 years ago
Vladimír Vondruš
18ad4307aa
Implementation for texture level parameter query.
13 years ago
Vladimír Vondruš
bc48107d5a
magnum-info: indent with 4, not 3 spaces.
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š
9a1f1e1a16
Text: mutable TextRenderer implementation.
...
Allows fast text updates (using buffer mapping). Also fully documented
the workflow.
13 years ago
Vladimír Vondruš
780228d0b8
SceneGraph: restarting animation should allow the same repeat count.
...
Updated test to check that.
13 years ago
Vladimír Vondruš
8a63939134
Math: added vector/scalar abs() function.
13 years ago
Vladimír Vondruš
e67142db1d
Properly check (and document) dependencies for Text library.
13 years ago
Vladimír Vondruš
a2e21020aa
Text: reworked TextRenderer internals.
...
* Common layouting code in separate non-templated class.
* Direct creation of interleaved vertex array and compressed index
buffer, saves some memory operations and removes MeshTools dependency.
* Preparation for mutable TextRenderer implementation.
13 years ago
Vladimír Vondruš
3eef49ae8b
Text: cleaned up TextRenderer header.
13 years ago
Vladimír Vondruš
c113598845
Platform: added Sdl2Application::exit().
13 years ago
Vladimír Vondruš
0dea0d8aff
Platform: cleaned-up AbstractXApplication header.
13 years ago
Vladimír Vondruš
49b5c3c561
Minor code cleanup.
13 years ago