25 #ifndef LIBMV_NUMERIC_NUMERIC_H
26 #define LIBMV_NUMERIC_NUMERIC_H
28 #include <Eigen/Cholesky>
30 #include <Eigen/Eigenvalues>
31 #include <Eigen/Geometry>
36 #if !defined(__MINGW64__)
37 # if defined(_WIN32) || defined(__APPLE__) || defined(__FreeBSD__) || \
38 defined(__NetBSD__) || defined(__HAIKU__)
39 inline void sincos(
double x,
double* sinx,
double* cosx) {
46 #if (defined(WIN32) || defined(WIN64)) && !defined(__MINGW32__)
47 inline long lround(
double d) {
48 return (
long)(d > 0 ? d + 0.5 :
ceil(d - 0.5));
51 inline int round(
double d) {
52 return (d > 0) ? int(d + 0.5) : int(d - 0.5);
55 typedef unsigned int uint;
60 typedef Eigen::MatrixXd
Mat;
61 typedef Eigen::VectorXd
Vec;
63 typedef Eigen::MatrixXf
Matf;
64 typedef Eigen::VectorXf
Vecf;
66 typedef Eigen::Matrix<unsigned int, Eigen::Dynamic, Eigen::Dynamic>
Matu;
67 typedef Eigen::Matrix<unsigned int, Eigen::Dynamic, 1>
Vecu;
68 typedef Eigen::Matrix<unsigned int, 2, 1>
Vec2u;
70 typedef Eigen::Matrix<double, 2, 2>
Mat2;
71 typedef Eigen::Matrix<double, 2, 3>
Mat23;
72 typedef Eigen::Matrix<double, 3, 3>
Mat3;
73 typedef Eigen::Matrix<double, 3, 4>
Mat34;
74 typedef Eigen::Matrix<double, 3, 5>
Mat35;
75 typedef Eigen::Matrix<double, 4, 1>
Mat41;
76 typedef Eigen::Matrix<double, 4, 3>
Mat43;
77 typedef Eigen::Matrix<double, 4, 4>
Mat4;
78 typedef Eigen::Matrix<double, 4, 6>
Mat46;
79 typedef Eigen::Matrix<float, 2, 2>
Mat2f;
80 typedef Eigen::Matrix<float, 2, 3>
Mat23f;
81 typedef Eigen::Matrix<float, 3, 3>
Mat3f;
82 typedef Eigen::Matrix<float, 3, 4>
Mat34f;
83 typedef Eigen::Matrix<float, 3, 5>
Mat35f;
84 typedef Eigen::Matrix<float, 4, 3>
Mat43f;
85 typedef Eigen::Matrix<float, 4, 4>
Mat4f;
86 typedef Eigen::Matrix<float, 4, 6>
Mat46f;
88 typedef Eigen::Matrix<double, 3, 3, Eigen::RowMajor>
RMat3;
89 typedef Eigen::Matrix<double, 4, 4, Eigen::RowMajor>
RMat4;
91 typedef Eigen::Matrix<double, 2, Eigen::Dynamic>
Mat2X;
92 typedef Eigen::Matrix<double, 3, Eigen::Dynamic>
Mat3X;
93 typedef Eigen::Matrix<double, 4, Eigen::Dynamic>
Mat4X;
94 typedef Eigen::Matrix<double, Eigen::Dynamic, 2>
MatX2;
95 typedef Eigen::Matrix<double, Eigen::Dynamic, 3>
MatX3;
96 typedef Eigen::Matrix<double, Eigen::Dynamic, 4>
MatX4;
97 typedef Eigen::Matrix<double, Eigen::Dynamic, 5>
MatX5;
98 typedef Eigen::Matrix<double, Eigen::Dynamic, 6>
MatX6;
99 typedef Eigen::Matrix<double, Eigen::Dynamic, 7>
MatX7;
100 typedef Eigen::Matrix<double, Eigen::Dynamic, 8>
MatX8;
101 typedef Eigen::Matrix<double, Eigen::Dynamic, 9>
MatX9;
102 typedef Eigen::Matrix<double, Eigen::Dynamic, 15>
MatX15;
103 typedef Eigen::Matrix<double, Eigen::Dynamic, 16>
MatX16;
108 typedef Eigen::Matrix<double, 5, 1>
Vec5;
109 typedef Eigen::Matrix<double, 6, 1>
Vec6;
110 typedef Eigen::Matrix<double, 7, 1>
Vec7;
111 typedef Eigen::Matrix<double, 8, 1>
Vec8;
112 typedef Eigen::Matrix<double, 9, 1>
Vec9;
113 typedef Eigen::Matrix<double, 10, 1>
Vec10;
114 typedef Eigen::Matrix<double, 11, 1>
Vec11;
115 typedef Eigen::Matrix<double, 12, 1>
Vec12;
116 typedef Eigen::Matrix<double, 13, 1>
Vec13;
117 typedef Eigen::Matrix<double, 14, 1>
Vec14;
118 typedef Eigen::Matrix<double, 15, 1>
Vec15;
119 typedef Eigen::Matrix<double, 16, 1>
Vec16;
120 typedef Eigen::Matrix<double, 17, 1>
Vec17;
121 typedef Eigen::Matrix<double, 18, 1>
Vec18;
122 typedef Eigen::Matrix<double, 19, 1>
Vec19;
123 typedef Eigen::Matrix<double, 20, 1>
Vec20;
135 typedef Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
140 using Eigen::Dynamic;
148 template <
typename TMat,
typename TVec>
157 template <
typename TMat,
typename TVec>
159 Eigen::JacobiSVD<TMat> svd(*
A, Eigen::ComputeFullV);
160 (*nullspace) = svd.matrixV().col(
A->cols() - 1);
161 if (
A->rows() >=
A->cols())
162 return svd.singularValues()(
A->cols() - 1);
172 template <
typename TMat,
typename TVec1,
typename TVec2>
174 Eigen::JacobiSVD<TMat> svd(*
A, Eigen::ComputeFullV);
175 *x1 = svd.matrixV().col(
A->cols() - 1);
176 *
x2 = svd.matrixV().col(
A->cols() - 2);
177 if (
A->rows() >=
A->cols())
178 return svd.singularValues()(
A->cols() - 1);
186 *
A =
A->transpose().eval();
189 template <
typename TVec>
191 return x.array().abs().sum();
194 template <
typename TVec>
199 template <
typename TVec>
201 return x.array().abs().maxCoeff();
204 template <
typename TVec>
206 return (
x -
y).array().abs().sum();
209 template <
typename TVec>
211 return (
x -
y).norm();
213 template <
typename TVec>
215 return (
x -
y).array().abs().maxCoeff();
220 template <
typename TVec>
229 template <
typename TVec>
238 template <
typename TVec>
246 template <
typename T>
265 template <
typename TVec>
267 return x.asDiagonal();
270 template <
typename TMat>
272 return sqrt(
A.array().abs2().sum());
275 template <
typename TMat>
288 Vec* variance_pointer);
294 # define SUM_OR_DYNAMIC(x, y) \
295 (x == Eigen::Dynamic || y == Eigen::Dynamic) ? Eigen::Dynamic : (x + y)
297 template <
typename Derived1,
typename Derived2>
298 struct hstack_return {
301 RowsAtCompileTime = Derived1::RowsAtCompileTime,
302 ColsAtCompileTime = SUM_OR_DYNAMIC(Derived1::ColsAtCompileTime,
303 Derived2::ColsAtCompileTime),
304 Options = Derived1::Flags & Eigen::RowMajorBit ? Eigen::RowMajor : 0,
305 MaxRowsAtCompileTime = Derived1::MaxRowsAtCompileTime,
306 MaxColsAtCompileTime = SUM_OR_DYNAMIC(Derived1::MaxColsAtCompileTime,
307 Derived2::MaxColsAtCompileTime)
309 typedef Eigen::Matrix<
Scalar,
313 MaxRowsAtCompileTime,
314 MaxColsAtCompileTime>
318 template <
typename Derived1,
typename Derived2>
320 const Eigen::MatrixBase<Derived1>& lhs,
321 const Eigen::MatrixBase<Derived2>& rhs) {
323 res.resize(lhs.rows(), lhs.cols() + rhs.cols());
328 template <
typename Derived1,
typename Derived2>
329 struct vstack_return {
332 RowsAtCompileTime = SUM_OR_DYNAMIC(Derived1::RowsAtCompileTime,
333 Derived2::RowsAtCompileTime),
334 ColsAtCompileTime = Derived1::ColsAtCompileTime,
335 Options = Derived1::Flags & Eigen::RowMajorBit ? Eigen::RowMajor : 0,
336 MaxRowsAtCompileTime = SUM_OR_DYNAMIC(Derived1::MaxRowsAtCompileTime,
337 Derived2::MaxRowsAtCompileTime),
338 MaxColsAtCompileTime = Derived1::MaxColsAtCompileTime
340 typedef Eigen::Matrix<
Scalar,
344 MaxRowsAtCompileTime,
345 MaxColsAtCompileTime>
349 template <
typename Derived1,
typename Derived2>
351 const Eigen::MatrixBase<Derived1>& lhs,
352 const Eigen::MatrixBase<Derived2>& rhs) {
354 res.resize(lhs.rows() + rhs.rows(), lhs.cols());
364 ((ColsLeft == Eigen::Dynamic || ColsRight == Eigen::Dynamic) \
366 : (ColsLeft + ColsRight))
370 ((RowsLeft == Eigen::Dynamic && RowsRight == Eigen::Dynamic) \
372 : ((RowsLeft == Eigen::Dynamic) ? RowsRight : RowsLeft))
375 template <
typename T,
int RowsLeft,
int RowsRight,
int ColsLeft,
int ColsRight>
377 const Eigen::Matrix<T, RowsLeft, ColsLeft>&
left,
378 const Eigen::Matrix<T, RowsRight, ColsRight>&
right) {
381 int m1 =
left.cols();
382 int m2 =
right.cols();
384 Eigen::Matrix<T, ROWS, COLS> stacked(n, m1 + m2);
385 stacked.block(0, 0, n, m1) =
left;
386 stacked.block(0, m1, n, m2) =
right;
395 template <
typename T,
int RowsLeft,
int RowsRight,
int ColsLeft,
int ColsRight>
397 const Eigen::Matrix<T, ColsLeft, RowsLeft>&
top,
398 const Eigen::Matrix<T, ColsRight, RowsRight>&
bottom) {
404 Eigen::Matrix<T, COLS, ROWS> stacked(n1 + n2, m);
405 stacked.block(0, 0, n1, m) =
top;
406 stacked.block(n1, 0, n2, m) =
bottom;
415 template <
typename TTop,
typename TBot,
typename TStacked>
422 stacked->resize(n1 + n2, m);
423 stacked->block(0, 0, n1, m) =
top;
424 stacked->block(n1, 0, n2, m) =
bottom;
431 template <
typename TMat,
typename TCols>
433 TMat compressed(
A.rows(), columns.size());
434 for (
int i = 0; i < columns.size(); ++i) {
435 compressed.col(i) =
A.col(columns[i]);
440 template <
typename TMat,
typename TDest>
441 void reshape(
const TMat&
a,
int rows,
int cols, TDest* b) {
442 assert(
a.rows() *
a.cols() == rows * cols);
443 b->resize(rows, cols);
444 for (
int i = 0; i < rows; i++) {
445 for (
int j = 0; j < cols; j++) {
446 (*b)(i, j) =
a[cols * i + j];
453 return _isnan(i) > 0;
461 template <
typename FloatType>
462 FloatType
ceil0(
const FloatType& value) {
470 skew << 0, -
x(2),
x(1),
x(2), 0, -
x(0), -
x(1),
x(0), 0;
477 skew << 0, -1,
x(1), 1, 0, -
x(0);
483 double theta = euler_vector.norm();
485 return Mat3::Identity();
487 Vec3 w = euler_vector / theta;
489 return Mat3::Identity() + w_hat *
sin(theta) +
490 w_hat * w_hat * (1 -
cos(theta));
NSNotificationCenter * center
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble x2
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble right
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble top
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble bottom
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
SIMD_FORCE_INLINE btScalar norm() const
Return the norm (length) of the vector.
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
INLINE Rall1d< T, V, S > cos(const Rall1d< T, V, S > &arg)
INLINE Rall1d< T, V, S > sin(const Rall1d< T, V, S > &arg)
double DistanceLInfinity(const TVec &x, const TVec &y)
Eigen::Matrix< double, 19, 1 > Vec19
Eigen::Matrix< float, 3, 5 > Mat35f
Eigen::Matrix< double, 11, 1 > Vec11
double Nullspace(TMat *A, TVec *nullspace)
Eigen::Matrix< double, 6, 1 > Vec6
double NormL2(const TVec &x)
Eigen::Matrix< double, 3, 3, Eigen::RowMajor > RMat3
Eigen::Matrix< double, 13, 1 > Vec13
Mat3 CrossProductMatrix(const Vec3 &x)
double DistanceL1(const TVec &x, const TVec &y)
Eigen::Matrix< double, 10, 1 > Vec10
Mat3 RotationFromEulerVector(Vec3 euler_vector)
Returns the rotaiton matrix built from given vector of euler angles.
void TransposeInPlace(TA *A)
Eigen::Matrix< double, Eigen::Dynamic, 2 > MatX2
Eigen::Matrix< double, 4, 4 > Mat4
void VerticalStack(const TTop &top, const TBot &bottom, TStacked *stacked)
Eigen::Matrix< double, 4, 1 > Mat41
Eigen::Matrix< double, Eigen::Dynamic, 3 > MatX3
Eigen::Matrix< double, Eigen::Dynamic, 15 > MatX15
double DistanceL2(const TVec &x, const TVec &y)
Eigen::Matrix< double, 3, 3 > Mat3
void SVD(TMat *, Vec *, Mat *, Mat *)
Eigen::Matrix< double, Eigen::Dynamic, 4 > MatX4
Eigen::Matrix< double, Eigen::Dynamic, 5 > MatX5
double NormalizeL1(TVec *x)
Mat3 RotationAroundX(double angle)
Eigen::Matrix< T, ROWS, COLS > HStack(const Eigen::Matrix< T, RowsLeft, ColsLeft > &left, const Eigen::Matrix< T, RowsRight, ColsRight > &right)
Eigen::Matrix< float, 2, 2 > Mat2f
double NormLInfinity(const TVec &x)
Eigen::Matrix< float, 4, 3 > Mat43f
double FrobeniusDistance(const TMat &A, const TMat &B)
Eigen::Matrix< double, 4, 4, Eigen::RowMajor > RMat4
Eigen::Matrix< double, 14, 1 > Vec14
Eigen::Matrix< double, 4, 6 > Mat46
void MatrixColumn(const Mat &A, int i, Vec2 *v)
void MeanAndVarianceAlongRows(const Mat &A, Vec *mean_pointer, Vec *variance_pointer)
Mat23 SkewMatMinimal(const Vec2 &x)
Eigen::Matrix< double, 7, 1 > Vec7
Eigen::Matrix< float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > RMatf
Eigen::Matrix< double, Eigen::Dynamic, 9 > MatX9
double NormalizeLInfinity(TVec *x)
Eigen::Matrix< double, Eigen::Dynamic, 8 > MatX8
Eigen::NumTraits< double > EigenDouble
Eigen::Matrix< float, 3, 3 > Mat3f
Mat3 RotationRodrigues(const Vec3 &axis)
Eigen::Matrix< double, 2, 3 > Mat23
Eigen::Matrix< double, 3, 4 > Mat34
Eigen::Matrix< double, Eigen::Dynamic, 7 > MatX7
Eigen::Matrix< double, 8, 1 > Vec8
Eigen::Matrix< unsigned int, Eigen::Dynamic, 1 > Vecu
Mat3 SkewMat(const Vec3 &x)
Returns the skew anti-symmetric matrix of a vector.
Eigen::Matrix< double, 18, 1 > Vec18
Eigen::Matrix< double, Eigen::Dynamic, 16 > MatX16
Eigen::Matrix< double, 5, 1 > Vec5
Eigen::Matrix< double, 15, 1 > Vec15
FloatType ceil0(const FloatType &value)
Eigen::Matrix< double, 4, Eigen::Dynamic > Mat4X
Eigen::Matrix< double, 3, Eigen::Dynamic > Mat3X
Eigen::Matrix< float, 2, 3 > Mat23f
Eigen::Matrix< float, 3, 4 > Mat34f
Eigen::Matrix< double, 3, 5 > Mat35
Eigen::Matrix< unsigned int, Eigen::Dynamic, Eigen::Dynamic > Matu
double FrobeniusNorm(const TMat &A)
Eigen::Matrix< double, 12, 1 > Vec12
Eigen::Matrix< double, 16, 1 > Vec16
Eigen::Matrix< double, 20, 1 > Vec20
Eigen::Matrix< T, COLS, ROWS > VStack(const Eigen::Matrix< T, ColsLeft, RowsLeft > &top, const Eigen::Matrix< T, ColsRight, RowsRight > &bottom)
void HorizontalStack(const Mat &left, const Mat &right, Mat *stacked)
Mat3 RotationAroundZ(double angle)
void reshape(const TMat &a, int rows, int cols, TDest *b)
Eigen::Matrix< double, 9, 1 > Vec9
Eigen::Matrix< double, 2, Eigen::Dynamic > Mat2X
Mat3 RotationAroundY(double angle)
Eigen::Matrix< float, 4, 6 > Mat46f
double NormalizeL2(TVec *x)
double Nullspace2(TMat *A, TVec1 *x1, TVec2 *x2)
Eigen::Matrix< double, 17, 1 > Vec17
Eigen::Matrix< double, 2, 2 > Mat2
TMat ExtractColumns(const TMat &A, const TCols &columns)
Eigen::Matrix< float, 4, 4 > Mat4f
Eigen::Matrix< unsigned int, 2, 1 > Vec2u
Vec3 CrossProduct(const Vec3 &x, const Vec3 &y)
double NormL1(const TVec &x)
Eigen::Matrix< double, Eigen::Dynamic, 6 > MatX6
Eigen::Matrix< double, 4, 3 > Mat43
ccl_device_inline float2 fabs(const float2 &a)
ccl_device_inline float3 ceil(const float3 &a)