VolViz
A volume visualization tool
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
GeometryDescriptor.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Types.h"
4 
5 #pragma clang diagnostic ignored "-Wpadded"
6 
7 namespace VolViz {
8 
9 enum MoveMask : uint8_t {
10  None = 0x00,
11  X = 0x01,
12  Y = 0x02,
13  Z = 0x04,
14  All = 0x07
15 };
16 
18  Vector3f v = Vector3f::Zero();
19  auto maskRep = static_cast<uint8_t>(mask);
20 
21  Expects(maskRep <= 0x07);
22 
23  int idx{0};
24  while (maskRep != 0) {
25  if (maskRep & 0x01) v(idx) = 1.f;
26  maskRep >>= 1;
27  ++idx;
28  }
29 
30  return v;
31 }
32 
34 public:
35  bool movable{true};
37 
38 protected:
39  GeometryDescriptor() = default;
40  virtual ~GeometryDescriptor();
41 
42  GeometryDescriptor(GeometryDescriptor const &) = default;
44 
47 };
48 
51 public:
52  Length intercept{0 * meter};
54 
55  AxisAlignedPlaneDescriptor() = default;
58 
60 
62  operator=(AxisAlignedPlaneDescriptor const &) = default;
65 };
66 
69 public:
70  virtual ~MeshDescriptor();
71 
72  MeshDescriptor() = default;
73  MeshDescriptor(MeshDescriptor const &) = default;
74  MeshDescriptor(MeshDescriptor &&) = default;
75 
76  MeshDescriptor &operator=(MeshDescriptor const &) = default;
78 
79  Eigen::Matrix<float, Eigen::Dynamic, 3> vertices;
80  Eigen::Matrix<std::uint32_t, Eigen::Dynamic, 3> indices;
81  Length scale{1 * milli * meter};
82 };
83 
86 public:
87  virtual ~CubeDescriptor();
88 
89  CubeDescriptor() = default;
90  CubeDescriptor(CubeDescriptor const &) = default;
91  CubeDescriptor(CubeDescriptor &&) = default;
92 
93  CubeDescriptor &operator=(CubeDescriptor const &) = default;
95 
96  Position position{Position::Zero()};
97  Length scale{1 * milli * meter};
98 
99  Scale radius = 0.5f;
100 };
101 
102 } // namespace VolViz
GLenum GLenum GLenum GLenum GLenum scale
Definition: glad.h:13107
Definition: GeometryDescriptor.h:12
A geomentry descriptor describing an axis aligned cube.
Definition: GeometryDescriptor.h:85
const GLdouble * v
Definition: glad.h:2583
auto White() noexcept
Definition: Types.h:44
Definition: GeometryDescriptor.h:10
Eigen::Vector3f Position
Position in 3D euclidean space.
Definition: Types.h:21
Scale radius
Definition: GeometryDescriptor.h:99
Definition: GeometryDescriptor.h:14
Eigen::Vector3f Color
Normalized RGB color.
Definition: Types.h:40
Length intercept
Definition: GeometryDescriptor.h:52
Definition: GeometryDescriptor.h:33
A geometry descriptor describing a axis aligned plane.
Definition: GeometryDescriptor.h:50
float Scale
Definition: Types.h:62
Axis axis
Definition: GeometryDescriptor.h:53
Vector3f maskToUnitVector(MoveMask mask) noexcept
Definition: GeometryDescriptor.h:17
AxisAlignedPlaneDescriptor & operator=(AxisAlignedPlaneDescriptor const &)=default
GLuint color
Definition: glad.h:2834
GLint GLuint mask
Definition: glad.h:2163
MeshDescriptor & operator=(MeshDescriptor const &)=default
Position position
Definition: GeometryDescriptor.h:96
GeometryDescriptor & operator=(GeometryDescriptor const &)=default
phys::units::quantity< phys::units::length_d > Length
Definition: Types.h:64
Eigen::Vector3f Vector3f
Definition: Types.h:15
MoveMask
Definition: GeometryDescriptor.h:9
Definition: GeometryDescriptor.h:13
Eigen::Matrix< std::uint32_t, Eigen::Dynamic, 3 > indices
Definition: GeometryDescriptor.h:80
Definition: GeometryDescriptor.h:11
Axis
Definition: Types.h:60
A geometry descriptor describing an arbitrary triangle mesh.
Definition: GeometryDescriptor.h:68
bool movable
Definition: GeometryDescriptor.h:35
CubeDescriptor & operator=(CubeDescriptor const &)=default
Eigen::Matrix< float, Eigen::Dynamic, 3 > vertices
Definition: GeometryDescriptor.h:79