aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/geometry.cpp
Commit message (Collapse)AuthorAge
* * fix Quaternion::setFromTwoVectors (thanks to "benv" from the forum)Gravatar Gael Guennebaud2009-02-17
| | | | | | | | * extend PartialRedux::cross() to any matrix sizes with automatic vectorization when possible * unit tests: add "geo_" prefix to all unit tests related to the geometry module and start splitting the big "geometry.cpp" tests to multiple smaller ones (also include new tests)
* Big change in DiagonalMatrix and Geometry/Scaling:Gravatar Gael Guennebaud2009-01-28
| | | | | | | | | | | | | | | * previous DiagonalMatrix expression is now DiagonalMatrixWrapper * DiagonalMatrix class is now for storage * add the DiagonalMatrixBase class to factorize code of the two previous classes * remove Scaling class (it is now a global function) * add UniformScaling helper class (don't use it directly, use the Scaling function) * add the Scaling global function to simplify the creation of scaling objects There is still a lot to do, in particular about DiagonalProduct for which the goal is to get rid of the "if()" in the coeff() function. At least it is not worse than before ! Also need to uptade the tutorial and add more doc.
* now these tests succeed with 10,000 repeatsGravatar Benoit Jacob2009-01-27
|
* add computeRotationScaling and computeScalingRotation in SVDGravatar Benoit Jacob2009-01-22
| | | | | | add convenience functions in Transform reimplement Transform::rotation() to use that add unit-test
* fix warningsGravatar Benoit Jacob2009-01-21
|
* * make std::vector specializations also for Transform and for QuaternionGravatar Benoit Jacob2009-01-12
| | | | | | | * update test_stdvector * Quaternion() does nothing (instead of bug) * update test_geometry * some renaming
* *fix compilation with MSVC 2005 in the Transform::construct_from_matrixGravatar Benoit Jacob2009-01-05
| | | | *fix warnings with MSVC 2005: converting M_PI to float gives loss-of-precision warnings
* *add PartialRedux::cross() with unit testGravatar Benoit Jacob2009-01-05
| | | | | *add transform-from-matrices test *undo an unwanted change in Matrix
* add matrix * transform productGravatar Gael Guennebaud2008-12-19
|
* * fix a test giving some false positivesGravatar Benoit Jacob2008-12-19
| | | | * add coverage for various operator*=
* Transform*Transform should return TransformGravatar Benoit Jacob2008-12-19
| | | | unit test compiles again
* * extractRotation ---> rotationGravatar Benoit Jacob2008-12-19
| | | | | * expand the geometry/Transform tests, after Mek's reports * fix my own stupidity in eigensolver test
* bugfix in matrix to Euler-angles functionGravatar Gael Guennebaud2008-12-06
|
* Add a generic matrix to Euler-angles function.Gravatar Gael Guennebaud2008-12-05
| | | | | Perhaps the prototype of this function could be improved, see comments in the code
* norm2() renamed to squaredNorm(), kept as deprecated for now.Gravatar Benoit Jacob2008-11-03
|
* Add isApprox in Geometry module's classes.Gravatar Gael Guennebaud2008-10-25
| | | | Complete unit tests wrt previous commits.
* * Quaternion: added dot product and angularDistance functions. The latter isGravatar Gael Guennebaud2008-09-11
| | | | | | based on the former. * opengl_demo: makes IcoSphere better (vertices are instanciated only once) and removed the generation of a big geometry for the fancy spheres...
* * Extend a bit ParametrizedLine and move it to a separate file,Gravatar Gael Guennebaud2008-09-03
| | | | | | add unit-tests for it. * remove "using namespace std" in test/main.h such that the compilation bug found today in SVD won't happen again.
* if EIGEN_NICE_RANDOM is defined, the random functions will return numbers withGravatar Benoit Jacob2008-09-01
| | | | | | few bits left of the comma and for floating-point types will never return zero. This replaces the custom functions in test/main.h, so one does not anymore need to think about that when writing tests.
* remove the conceptualy broken "NoShear" transformation traits,Gravatar Gael Guennebaud2008-09-01
| | | | and rename NonAfine => Projective, GenericAffine => Affine, NoScaling => Isometry
* * Add Hyperplane::transform(Matrix/Transform)Gravatar Gael Guennebaud2008-08-31
| | | | | * Fix compilations with gcc 3.4, ICC and doxygen * Fix krazy directives (hopefully)
* add uniform scale/prescale functions in TranformGravatar Gael Guennebaud2008-08-30
|
* * added a RotationBase class following the CRT patternGravatar Gael Guennebaud2008-08-30
| | | | | | | | This allow code factorization and generic template specialization of functions * added any_rotation * {Translation,Scaling,Transform} products methods * rewrite of the actually broken ToRoationMatrix helper class to a global ei_toRotationMatrix function.
* * rename TranformationKnowledge to TransformTraitsGravatar Gael Guennebaud2008-08-30
| | | | | * apply the same principle to extractRotation and fix it to extract a rotation corresponding to a positive scaling
* update Transform::inverse() to take an optional argument stating whether the ↵Gravatar Gael Guennebaud2008-08-30
| | | | | | | | | | transformation is: NonAffine, Affine (default), contains NoShear, contains NoScaling that allows significant speed improvements. If you like it, this concept could be applied to Transform::extractRotation (or to a more advanced decomposition function) and to Hyperplane::transformed() and maybe to some other places... e.g., I think a Transform::normalMatrix() function would not harm and warn user that the transformation of normals is not that trivial (I saw this mistake much too often)
* Add Scaling and Translation class as discussed on ML, still missing:Gravatar Gael Guennebaud2008-08-30
| | | | | | | | * handling Quaternion, AngleAxis and Rotation2D, 2 options here: 1- make all of them inheriting a common base class Rotation such that we can have a single version of operator* for all the rotation type (they all get converted to a matrix) 2- write a version for all type (so 3 rotations types * 3 for Transform,Translation and Scaling) * real documentation
* spelling + some krazy directivesGravatar Gael Guennebaud2008-08-28
|
* Fix a bug discovered in Avogadro: the AngleAxis*Matrix and the newerGravatar Benoit Jacob2008-08-24
| | | | | | | | | | | | | | | | | AngleAxis*Vector products were wrong because they returned the product _expression_ toRotationMatrix()*other; and toRotationMatrix() died before that expression would be later evaluated. Here it would not have been practical to NestByValue as this is a whole matrix. So, let them simply evaluate and return the result by value. The geometry.cpp unit-test only checked for compatibility between various rotations, it didn't check the correctness of the rotations themselves. That's why this bug escaped us. So, this commit checks that the rotations produced by AngleAxis have all the expected properties. Since the compatibility with the other rotations is already checked, this should validate them as well.
* Rename someOrthogonal to unitOrthogonal. Fix a bug in it, with dyn-size ↵Gravatar Benoit Jacob2008-08-24
| | | | | | vectors of size <=3. Update doc and test to reflect that it always returns a unit vector.
* * bug fixes in: Dot, generalized eigen problem, singular matrix detetection ↵Gravatar Gael Guennebaud2008-08-23
| | | | | | | in Cholesky * fix all numerical instabilies in the unit tests, now all tests can be run 2000 times with almost zero failures.
* * bugfix in SolveTriangular found by Timothy Hunter (did not compiled for ↵Gravatar Gael Guennebaud2008-08-22
| | | | | | | | very small fixed size matrices) * bugfix in Dot unroller * added special random generator for the unit tests and reduced the tolerance threshold by an order of magnitude this fixes issues with sum.cpp but other tests still failed sometimes, this have to be carefully checked...
* *patch by Daniel Gomez:Gravatar Gael Guennebaud2008-08-21
| | | | | | - bugfix in SparseMatrix - add a sparse unit test * renamed Transform::affine => linear
* * Rewrite the triangular solver so that we can take advantage of our ↵Gravatar Gael Guennebaud2008-07-26
| | | | | | | | | | | efficient matrix-vector products: => up to 6 times faster ! * Added DirectAccessBit to Part * Added an exemple of a cwise operator * Renamed perpendicular() => someOrthogonal() (geometry module) * Fix a weired bug in ei_constant_functor: the default copy constructor did not copy the imaginary part when the single member of the class is a complex...
* Add .perpendicular() function in Geometry module (adapted from Eigen1)Gravatar Gael Guennebaud2008-07-22
| | | | | | Documentation: * add an overview for each module. * add an example for .all() and Cwise::operator<
* * Merge Extract and Part to the Part expression.Gravatar Gael Guennebaud2008-07-21
| | | | | | Renamed "MatrixBase::extract() const" to "MatrixBase::part() const" * Renamed static functions identity, zero, ones, random with an upper case first letter: Identity, Zero, Ones and Random.
* Added MatrixBase::Unit*() static function to easily create unit/basis vectors.Gravatar Gael Guennebaud2008-07-19
| | | | | | | Removed EulerAngles, addes typdefs for Quaternion and AngleAxis, and added automatic conversions from Quaternion/AngleAxis to Matrix3 such that: Matrix3f m = AngleAxisf(0.2,Vector3f::UnitX) * AngleAxisf(0.2,Vector3f::UnitY); just works.
* the big Array/Cwise rework as discussed on the mailing list. The new APIGravatar Benoit Jacob2008-07-08
| | | | can be seen in Eigen/src/Core/Cwise.h.
* * vectorize dot product, copying code from sum.Gravatar Benoit Jacob2008-06-24
| | | | | | | | | | | | | | | * make the conj functor vectorizable: it is just identity in real case, and complex doesn't use the vectorized path anyway. * fix bug in Block: a 3x1 block in a 4x4 matrix (all fixed-size) should not be vectorizable, since in fixed-size we are assuming the size to be a multiple of packet size. (Or would you prefer Vector3d to be flagged "packetaccess" even though no packet access is possible on vectors of that type?) * rename: isOrtho for vectors ---> isOrthogonal isOrtho for matrices ---> isUnitary * add normalize() * reimplement normalized with quotient1 functor
* work on rotations in the Geometry module:Gravatar Gael Guennebaud2008-06-21
| | | | | - convertions are done trough constructors and operator= - added a EulerAngles class
* Added an extensible mechanism to support any kind of rotationGravatar Gael Guennebaud2008-06-15
| | | | | | representation in Transform via the template static class ToRotationMatrix. Added a lightweight AngleAxis class (similar to Rotation2D).
* * split Product to a DiagonalProduct template specializationGravatar Gael Guennebaud2008-06-15
| | | | | | | | | | to optimize matrix-diag and diag-matrix products without making Product over complicated. * compilation fixes in Tridiagonalization and HessenbergDecomposition in the case of 2x2 matrices. * added an Orientation2D small class with similar interface than Quaternion (used by Transform to handle 2D and 3D orientations seamlessly) * added a couple of features in Transform.
* Started a Transform class in the Geometry module to representGravatar Gael Guennebaud2008-06-15
| | | | | homography. Fix indentation in Quaternion.h
* * add CommaInitializer::finished to allow the use of (Matrix3() << v0, v1, ↵Gravatar Gael Guennebaud2008-06-03
| | | | | | | | v2).finished() as an argument of a function. Other possibilities for the name could be "end" or "matrix" ?? * various update in Quaternion, in particular I added a lot of FIXME about the API options, these have to be discussed and fixed.
* improved Quaternion class:Gravatar Gael Guennebaud2008-06-03
| | | | | | | - Euler angles and angle axis conversions, - stable spherical interpolation - documentation - update the respective unit test
* add a geometry unit test and fix a couple of typo in Quaternion.hGravatar Gael Guennebaud2008-06-03