5 #include <Eigen/Geometry>
7 #include <phys/units/quantity.hpp>
28 using Size2 = Eigen::Matrix<std::size_t, 2, 1>;
29 using Size3 = Eigen::Matrix<std::size_t, 3, 1>;
34 template <
class T>
struct Range {
36 constexpr
auto length() const noexcept {
return max - min; }
43 inline auto Black() noexcept {
return Color::Zero(); }
44 inline auto White() noexcept {
return Color::Ones(); }
45 inline auto Red() noexcept {
return Color::UnitX(); }
46 inline auto Green() noexcept {
return Color::UnitY(); }
47 inline auto Blue() noexcept {
return Color::UnitZ(); }
57 float near{1.f},
far{-1.f};
64 using Length = phys::units::quantity<phys::units::length_d>;
68 using phys::units::meter;
69 using phys::units::rad;
70 using phys::units::degree_angle;
72 using phys::units::centi;
73 using phys::units::milli;
74 using phys::units::micro;
75 using phys::units::nano;
77 using phys::units::abs;
79 namespace literals = phys::units::literals;
93 class = std::enable_if_t<
97 decltype(std::declval<Container>().
data())>
::value>>
104 class = std::enable_if_t<
108 decltype(std::declval<Container>().
data())>
::value>>
109 inline constexpr
auto as_span(Container
const &
c) {
116 #if __cplusplus < 201703L
121 constexpr
const T&
clamp(
const T&
v,
const T& lo,
const T& hi ) {
122 return clamp( v, lo, hi, std::less<>() );
125 template<
class T,
class Compare>
126 constexpr
const T&
clamp(
const T& v,
const T& lo,
const T& hi, Compare comp ) {
127 return assert( !comp(hi, lo) ),
128 comp(v, lo) ? lo : comp(hi, v) ? hi :
v;
135 #endif // VolViz_Types_h
Eigen::Matrix< Length, 3, 1 > PhysicalPosition
Definition: Types.h:66
GLboolean * data
Definition: glad.h:2184
Eigen::Quaternionf Orientation
6-DOF orientation, represented as a quaternion
Definition: Types.h:54
const GLdouble * v
Definition: glad.h:2583
GLsizei const GLfloat * value
Definition: glad.h:2544
Eigen::Matrix3f Matrix3
Definition: Types.h:17
constexpr auto as_span(T *ptr, typename span< T >::index_type size) noexcept
Conveniance wrapper for span<>
Definition: Types.h:86
auto White() noexcept
Definition: Types.h:44
auto Black() noexcept
Definition: Types.h:43
T min
Definition: Types.h:35
Eigen::Vector3f Position
Position in 3D euclidean space.
Definition: Types.h:21
Eigen::Vector3f Size3f
Definition: Types.h:31
An 1D range.
Definition: Types.h:34
const GLubyte * c
Definition: glad.h:14924
auto Red() noexcept
Definition: Types.h:45
double Angle
Definition: Types.h:65
Eigen::Vector3f Color
Normalized RGB color.
Definition: Types.h:40
GLenum clamp
Definition: glad.h:2753
float Scale
Definition: Types.h:62
auto Cyan() noexcept
Definition: Types.h:50
auto Magenta() noexcept
Definition: Types.h:49
Eigen::Matrix< std::size_t, 2, 1 > Size2
Definition: Types.h:28
Eigen::Matrix4f Matrix4
Definition: Types.h:18
auto Green() noexcept
Definition: Types.h:46
auto Blue() noexcept
Definition: Types.h:47
auto Yellow() noexcept
Definition: Types.h:48
std::array< Length, 3 > VoxelSize
Definition: Types.h:81
GLsizeiptr size
Definition: glad.h:2387
constexpr auto length() const noexcept
Definition: Types.h:36
phys::units::quantity< phys::units::length_d > Length
Definition: Types.h:64
Eigen::Vector3f Vector3f
Definition: Types.h:15
Eigen::Vector2f Position2
Position in 2D space.
Definition: Types.h:26
Eigen::Matrix< std::size_t, 3, 1 > Size3
Definition: Types.h:29
Axis
Definition: Types.h:60
GLenum void ** pointer
Definition: glad.h:2502
GLenum GLenum GLsizei void GLsizei void void * span
Definition: glad.h:4220
Eigen::Vector4f PositionH
Position in homogenous coordinates.
Definition: Types.h:23
GLdouble far
Definition: glad.h:2220