Bullet Collision Detection & Physics Library
|
Go to the source code of this file.
Classes | |
class | btMatrix2x2 |
Bullet Continuous Collision Detection and Physics Library Copyright (c) 2019 Google Inc. More... | |
class | GivensRotation |
Class for givens rotation. More... | |
Functions | |
static btScalar | copySign (btScalar x, btScalar y) |
void | zeroChase (btMatrix3x3 &H, btMatrix3x3 &U, btMatrix3x3 &V) |
zero chasing the 3X3 matrix to bidiagonal form original form of H: x x 0 x x x 0 0 x after zero chase: x x 0 0 x x 0 0 x More... | |
void | makeUpperBidiag (btMatrix3x3 &H, btMatrix3x3 &U, btMatrix3x3 &V) |
make a 3X3 matrix to upper bidiagonal form original form of H: x x x x x x x x x after zero chase: x x 0 0 x x 0 0 x More... | |
void | makeLambdaShape (btMatrix3x3 &H, btMatrix3x3 &U, btMatrix3x3 &V) |
make a 3X3 matrix to lambda shape original form of H: x x x x x x x x x after : x 0 0 x x 0 x 0 x More... | |
void | polarDecomposition (const btMatrix2x2 &A, GivensRotation &R, const btMatrix2x2 &S_Sym) |
2x2 polar decomposition. More... | |
void | polarDecomposition (const btMatrix2x2 &A, const btMatrix2x2 &R, const btMatrix2x2 &S_Sym) |
void | singularValueDecomposition (const btMatrix2x2 &A, GivensRotation &U, const btMatrix2x2 &Sigma, GivensRotation &V, const btScalar tol=64 *std::numeric_limits< btScalar >::epsilon()) |
2x2 SVD (singular value decomposition) A=USV' More... | |
void | singularValueDecomposition (const btMatrix2x2 &A, const btMatrix2x2 &U, const btMatrix2x2 &Sigma, const btMatrix2x2 &V, const btScalar tol=64 *std::numeric_limits< btScalar >::epsilon()) |
2x2 SVD (singular value decomposition) A=USV' More... | |
btScalar | wilkinsonShift (const btScalar a1, const btScalar b1, const btScalar a2) |
compute wilkinsonShift of the block a1 b1 b1 a2 based on the wilkinsonShift formula mu = c + d - sign (d) \ sqrt (d*d + b*b), where d = (a-c)/2 More... | |
template<int t> | |
void | process (btMatrix3x3 &B, btMatrix3x3 &U, btVector3 &sigma, btMatrix3x3 &V) |
Helper function of 3X3 SVD for processing 2X2 SVD. More... | |
void | flipSign (int i, btMatrix3x3 &U, btVector3 &sigma) |
Helper function of 3X3 SVD for flipping signs due to flipping signs of sigma. More... | |
void | flipSign (int i, btMatrix3x3 &U) |
void | swapCol (btMatrix3x3 &A, int i, int j) |
void | sort (btMatrix3x3 &U, btVector3 &sigma, btMatrix3x3 &V, int t) |
Helper function of 3X3 SVD for sorting singular values. More... | |
int | singularValueDecomposition (const btMatrix3x3 &A, btMatrix3x3 &U, btVector3 &sigma, btMatrix3x3 &V, btScalar tol=128 *std::numeric_limits< btScalar >::epsilon()) |
3X3 SVD (singular value decomposition) A=USV' More... | |
Definition at line 90 of file btImplicitQRSVD.h.
|
inline |
Definition at line 653 of file btImplicitQRSVD.h.
|
inline |
Helper function of 3X3 SVD for flipping signs due to flipping signs of sigma.
Definition at line 645 of file btImplicitQRSVD.h.
|
inline |
make a 3X3 matrix to lambda shape original form of H: x x x x x x x x x after : x 0 0 x x 0 x 0 x
Reduce H to of form x x 0 x x x x x x
Reduce H to of form x x 0 x x 0 x x x
Reduce H to of form x x 0 x x 0 x 0 x
Reduce H to of form x 0 0 x x 0 x 0 x
Definition at line 372 of file btImplicitQRSVD.h.
|
inline |
make a 3X3 matrix to upper bidiagonal form original form of H: x x x x x x x x x after zero chase: x x 0 0 x x 0 0 x
Reduce H to of form x x x x x x 0 x x
Definition at line 342 of file btImplicitQRSVD.h.
|
inline |
Definition at line 453 of file btImplicitQRSVD.h.
|
inline |
2x2 polar decomposition.
[in] | A | matrix. |
[out] | R | Robustly a rotation matrix. |
[out] | S_Sym | Symmetric. Whole matrix is stored |
Polar guarantees negative sign is on the small magnitude singular value. S is guaranteed to be the closest one to identity. R is guaranteed to be the closest rotation to A.
Definition at line 431 of file btImplicitQRSVD.h.
|
inline |
Helper function of 3X3 SVD for processing 2X2 SVD.
Definition at line 592 of file btImplicitQRSVD.h.
|
inline |
2x2 SVD (singular value decomposition) A=USV'
[in] | A | Input matrix. |
[out] | U | Robustly a rotation matrix. |
[out] | Sigma | Vector of singular values sorted with decreasing magnitude. The second one can be negative. |
[out] | V | Robustly a rotation matrix. |
Definition at line 549 of file btImplicitQRSVD.h.
|
inline |
2x2 SVD (singular value decomposition) A=USV'
[in] | A | Input matrix. |
[out] | U | Robustly a rotation matrix in Givens form |
[out] | Sigma | matrix of singular values sorted with decreasing magnitude. The second one can be negative. |
[out] | V | Robustly a rotation matrix in Givens form |
Definition at line 469 of file btImplicitQRSVD.h.
|
inline |
3X3 SVD (singular value decomposition) A=USV'
[in] | A | Input matrix. |
[out] | U | is a rotation matrix. |
[out] | sigma | Diagonal matrix, sorted with decreasing magnitude. The third one can be negative. |
[out] | V | is a rotation matrix. |
Do implicit shift QR until A^T A is block diagonal
Handle the cases of one of the alphas and betas being 0 Sorted by ease of handling and then frequency of occurrence
If B is of form x x 0 0 x 0 0 0 x
If B is of form x 0 0 0 x x 0 0 x
If B is of form x x 0 0 0 x 0 0 x
Reduce B to x x 0 0 0 0 0 0 x
If B is of form x x 0 0 x x 0 0 0
Reduce B to x x + 0 x 0 0 0 0
Reduce B to x x 0
If B is of form 0 x 0 0 x x 0 0 x
Reduce B to 0 0 + 0 x x 0 0 x
Reduce B to 0 0 0 0 x x 0 + x
Definition at line 750 of file btImplicitQRSVD.h.
|
inline |
Helper function of 3X3 SVD for sorting singular values.
Definition at line 668 of file btImplicitQRSVD.h.
|
inline |
Definition at line 660 of file btImplicitQRSVD.h.
compute wilkinsonShift of the block a1 b1 b1 a2 based on the wilkinsonShift formula mu = c + d - sign (d) \ sqrt (d*d + b*b), where d = (a-c)/2
Definition at line 572 of file btImplicitQRSVD.h.
|
inline |
zero chasing the 3X3 matrix to bidiagonal form original form of H: x x 0 x x x 0 0 x after zero chase: x x 0 0 x x 0 0 x
Reduce H to of form x x + 0 x x 0 0 x
Reduce H to of form x x 0 0 x x 0 + x Can calculate r2 without multiplying by r1 since both entries are in first two rows thus no need to divide by sqrt(a^2+b^2)
Reduce H to of form x x 0 0 x x 0 0 x
Definition at line 286 of file btImplicitQRSVD.h.