15 friend class boost::serialization::access;
16 template <
typename Archive>
17 void serialize(Archive& ar,
const unsigned int version) {
18 boost::serialization::void_cast_register<Voxel, Primitive>();
19 ar & boost::serialization::base_object<Primitive>(*
this);
77 Voxel(glm::dvec3 center,
double voxelSize);
85 Voxel(
double x,
double y,
double z,
double halfVoxelSize);
103 std::swap(this->v, voxel.
v);
104 std::swap(this->numPoints, voxel.
numPoints);
105 std::swap(this->r, voxel.
r);
106 std::swap(this->g, voxel.
g);
107 std::swap(this->b, voxel.
b);
108 std::swap(this->bbox, voxel.
bbox);
109 std::swap(this->color, voxel.
color);
110 std::swap(this->halfSize, voxel.
halfSize);
150 const glm::dvec3& rayOrigin,
151 const glm::dvec3& rayDir,
152 const glm::dvec3& intersectionPoint
164 const glm::dvec3& rayOrigin,
165 const glm::dvec3& rayDir,
166 const glm::dvec3& intersectionPoint
172 const glm::dvec3& rayOrigin,
173 const glm::dvec3& rayDir
179 const glm::dvec3& rayOrigin,
180 const glm::dvec3& rayDir
228 void scale(
double const factor)
override{
Class representing an Axis Aligned Bounding Box (AABB)
Definition: AABB.h:10
Class representing a color with 4 float components: RGBA.
Definition: Color4f.h:10
Abstract class defining the common behavior for all primitives.
Definition: Primitive.h:24
virtual void translate(glm::dvec3 const &shift)
Translate primitive by given shift.
Definition: Primitive.cpp:59
virtual void rotate(Rotation &r)
Performs rotation over primitive.
Definition: Primitive.cpp:44
Definition: Rotation.h:80
Class representing a vertex.
Definition: Vertex.h:14
glm::dvec3 normal
Vertex normal vector.
Definition: Vertex.h:43
Class representing a voxel primitive.
Definition: Voxel.h:11
double getRayIntersectionDistance(const glm::dvec3 &rayOrigin, const glm::dvec3 &rayDir) override
Definition: Voxel.cpp:114
double getIncidenceAngleClosestFace_rad(const glm::dvec3 &rayOrigin, const glm::dvec3 &rayDir, const glm::dvec3 &intersectionPoint)
Obtain the incidence angle with respect to closest face for given intersection point.
Definition: Voxel.cpp:63
void _clone(Primitive *p) override
Definition: Voxel.cpp:22
Voxel()
Default voxel constructor.
Definition: Voxel.h:71
void update() override
Definition: Voxel.cpp:129
virtual size_t getNumVertices() override
Definition: Voxel.h:185
Primitive * clone() override
Definition: Voxel.cpp:17
AABB * getAABB() override
Definition: Voxel.cpp:37
Vertex * getFullVertices() override
Definition: Voxel.cpp:125
void rotate(Rotation &r) override
Voxel cannot be rotated
Definition: Voxel.h:221
glm::dvec3 getCentroid() override
Definition: Voxel.cpp:41
void scale(double const factor) override
Definition: Voxel.h:228
Vertex * getVertices() override
Definition: Voxel.cpp:121
Vertex v
Vertex representing the voxel center.
Definition: Voxel.h:34
double getIncidenceAngle_rad(const glm::dvec3 &rayOrigin, const glm::dvec3 &rayDir, const glm::dvec3 &intersectionPoint) override
Definition: Voxel.cpp:45
double halfSize
Half of the voxel sizxe.
Definition: Voxel.h:64
void translate(glm::dvec3 const &shift) override
Definition: Voxel.h:235
AABB * bbox
Axis aligned bounding box containing the voxel.
Definition: Voxel.h:55
double b
Aggregated blue component from points inside voxel.
Definition: Voxel.h:51
int numPoints
Number of points inside the voxel. Useful when the voxel has been built from a point cloud.
Definition: Voxel.h:39
double getGroundZOffset() override
Definition: Voxel.h:201
double g
Aggregated green component from points inside voxel.
Definition: Voxel.h:47
bool hasNormal() const
Check if voxel has a valid normal.
Definition: Voxel.h:209
double r
Aggregated red component from points inside voxel.
Definition: Voxel.h:43
virtual size_t getNumFullVertices() override
Definition: Voxel.h:193
std::vector< double > getRayIntersection(const glm::dvec3 &rayOrigin, const glm::dvec3 &rayDir) override
Definition: Voxel.cpp:108
void swap(Voxel &voxel)
Swap semantic implementation for voxel.
Definition: Voxel.h:102
Color4f color
Voxel color. This attribute is not used at the moment and might be removed in the future.
Definition: Voxel.h:60