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);
54 glm::dvec3
normal = glm::dvec3(0, 0, 0);
80 Voxel(glm::dvec3 center,
double voxelSize);
88 Voxel(
double x,
double y,
double z,
double halfVoxelSize);
89 ~
Voxel()
override{
if(bbox!=
nullptr)
delete bbox;}
106 std::swap(this->v, voxel.
v);
107 std::swap(this->numPoints, voxel.
numPoints);
108 std::swap(this->r, voxel.
r);
109 std::swap(this->g, voxel.
g);
110 std::swap(this->b, voxel.
b);
111 std::swap(this->bbox, voxel.
bbox);
112 std::swap(this->color, voxel.
color);
113 std::swap(this->halfSize, voxel.
halfSize);
153 const glm::dvec3& rayOrigin,
154 const glm::dvec3& rayDir,
155 const glm::dvec3& intersectionPoint
167 const glm::dvec3& rayOrigin,
168 const glm::dvec3& rayDir,
169 const glm::dvec3& intersectionPoint
175 const glm::dvec3& rayOrigin,
176 const glm::dvec3& rayDir
182 const glm::dvec3& rayOrigin,
183 const glm::dvec3& rayDir
213 {
return normal[0]!=0.0 || normal[1]!=0.0 || normal[2]!=0.0;}
231 void scale(
double const factor)
override{
glm::dvec3 normal
Voxel normal vecctor.
Definition: Voxel.h:54
void _clone(Primitive *p) override
Definition: Voxel.cpp:22
glm::dvec3 getCentroid() override
Definition: Voxel.cpp:41
Voxel()=default
Default voxel constructor.
AABB * bbox
Axis aligned bounding box containing the voxel.
Definition: Voxel.h:58
Vertex * getVertices() override
Definition: Voxel.cpp:120
Definition: Rotation.h:80
Vertex v
Vertex representing the voxel center.
Definition: Voxel.h:33
Primitive * clone() override
Definition: Voxel.cpp:17
double getRayIntersectionDistance(const glm::dvec3 &rayOrigin, const glm::dvec3 &rayDir) override
Definition: Voxel.cpp:113
virtual size_t getNumVertices() override
Definition: Voxel.h:188
void translate(glm::dvec3 const &shift) override
Definition: Voxel.h:238
void update() override
Definition: Voxel.cpp:128
Class representing a color with 4 float components: RGBA.
Definition: Color4f.h:6
double b
Aggregated blue component from points inside voxel.
Definition: Voxel.h:50
double getGroundZOffset() override
Definition: Voxel.h:204
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 rotate(Rotation &r) override
Voxel cannot be rotated
Definition: Voxel.h:224
Color4f color
Voxel color. This attribute is not used at the moment and might be removed in the future...
Definition: Voxel.h:63
virtual void translate(glm::dvec3 const &shift)
Translate primitive by given shift.
Definition: Primitive.cpp:59
AABB * getAABB() override
Definition: Voxel.cpp:37
double getIncidenceAngle_rad(const glm::dvec3 &rayOrigin, const glm::dvec3 &rayDir, const glm::dvec3 &intersectionPoint) override
Definition: Voxel.cpp:45
Class representing an Axis Aligned Bounding Box (AABB)
Definition: AABB.h:10
Class representing a voxel primitive.
Definition: Voxel.h:11
void scale(double const factor) override
Definition: Voxel.h:231
std::vector< double > getRayIntersection(const glm::dvec3 &rayOrigin, const glm::dvec3 &rayDir) override
Definition: Voxel.cpp:107
double halfSize
Half of the voxel sizxe.
Definition: Voxel.h:67
void swap(Voxel &voxel)
Swap semantic implementation for voxel.
Definition: Voxel.h:105
double r
Aggregated red component from points inside voxel.
Definition: Voxel.h:42
virtual void rotate(Rotation &r)
Performs rotation over primitive.
Definition: Primitive.cpp:44
Abstract class defining the common behavior for all primitives.
Definition: Primitive.h:20
double g
Aggregated green component from points inside voxel.
Definition: Voxel.h:46
virtual size_t getNumFullVertices() override
Definition: Voxel.h:196
bool hasNormal()
Check if voxel has a valid normal.
Definition: Voxel.h:212
Vertex * getFullVertices() override
Definition: Voxel.cpp:124
int numPoints
Number of points inside the voxel. Useful when the voxel has been built from a point cloud...
Definition: Voxel.h:38
Class representing a vertex.
Definition: Vertex.h:14