implementation of * operator for Affine3f and point3d, initial implementation of isNaN
This commit is contained in:
parent
c622ebf890
commit
c4fe98977a
@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <boost/concept_check.hpp>
|
||||||
#include <opencv2/core/cvdef.h>
|
#include <opencv2/core/cvdef.h>
|
||||||
#include <opencv2/core.hpp>
|
#include <opencv2/core.hpp>
|
||||||
#include <opencv2/core/affine.hpp>
|
#include <opencv2/core/affine.hpp>
|
||||||
@ -84,4 +85,19 @@ namespace temp_viz
|
|||||||
inline Vec3d vtkpoint(const Point3f& point) { return Vec3d(point.x, point.y, point.z); }
|
inline Vec3d vtkpoint(const Point3f& point) { return Vec3d(point.x, point.y, point.z); }
|
||||||
|
|
||||||
template<typename _Tp> inline _Tp normalized(const _Tp& v) { return v * 1/cv::norm(v); }
|
template<typename _Tp> inline _Tp normalized(const _Tp& v) { return v * 1/cv::norm(v); }
|
||||||
|
|
||||||
|
Point3d operator*(const Affine3f& affine, const Point3d& point);
|
||||||
|
|
||||||
|
inline bool isNaN( float x )
|
||||||
|
{
|
||||||
|
union { float f; unsigned int u; } v = { x };
|
||||||
|
return ((v.u & 0x7f800000) == 0x7f800000) && (v.u & 0x007fffff);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool isNaN( double x )
|
||||||
|
{
|
||||||
|
union { double d; unsigned int u[2]; } v = { x };
|
||||||
|
return (v.u[1] & 0x7ff00000) == 0x7ff00000 &&
|
||||||
|
(v.u[0] != 0 || (v.u[1] & 0x000fffff) != 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,3 +22,12 @@ temp_viz::Color temp_viz::Color::white() { return Color(255, 255, 255); }
|
|||||||
|
|
||||||
temp_viz::Color temp_viz::Color::gray() { return Color(128, 128, 128); }
|
temp_viz::Color temp_viz::Color::gray() { return Color(128, 128, 128); }
|
||||||
|
|
||||||
|
temp_viz::Point3d temp_viz::operator*(const temp_viz::Affine3f& affine, const temp_viz::Point3d& point)
|
||||||
|
{
|
||||||
|
const temp_viz::Matx44f& m = affine.matrix;
|
||||||
|
temp_viz::Point3d result;
|
||||||
|
result.x = m.val[0] * point.x + m.val[1] * point.y + m.val[ 2] * point.z + m.val[ 3];
|
||||||
|
result.y = m.val[4] * point.x + m.val[5] * point.y + m.val[ 6] * point.z + m.val[ 7];
|
||||||
|
result.z = m.val[8] * point.x + m.val[9] * point.y + m.val[10] * point.z + m.val[11];
|
||||||
|
return result;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user