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(__NetBSD__) || \
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 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 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 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
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Map
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.
ccl_device_inline float2 fabs(const float2 &a)
ccl_device_inline float3 ceil(const float3 &a)
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
static const pxr::TfToken b("b", pxr::TfToken::Immortal)