ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
CoplanarPolygon.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2
//
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
5
#pragma once
6
7
#include <Eigen/Core>
8
#include <Eigen/Geometry>
9
10
#include <cstdint>
11
#include <utility>
12
#include <vector>
13
14
namespace
reusex::geometry
{
15
20
struct
CoplanarPolygon
{
21
std::vector<Eigen::Vector3d>
vertices
;
22
Eigen::Vector4d
plane
{0, 0, 0, 0};
23
25
double
area
()
const
;
26
28
Eigen::Vector3d
centroid
()
const
;
29
31
Eigen::Vector3d
normal
()
const
;
32
34
bool
is_valid
()
const
;
35
37
std::pair<Eigen::Vector3d, Eigen::Vector3d>
bounding_box
()
const
;
38
40
std::vector<uint8_t>
serialize_vertices
()
const
;
41
43
static
std::vector<Eigen::Vector3d>
deserialize_vertices
(
const
void
*data,
44
size_t
size);
45
};
46
47
}
// namespace reusex::geometry
reusex::geometry
Definition
processing_observer.hpp:19
reusex::geometry::CoplanarPolygon
A closed 3D polygon whose vertices are coplanar.
Definition
CoplanarPolygon.hpp:20
reusex::geometry::CoplanarPolygon::serialize_vertices
std::vector< uint8_t > serialize_vertices() const
Serialize vertices to compact binary (N * 3 * sizeof(double) bytes).
reusex::geometry::CoplanarPolygon::vertices
std::vector< Eigen::Vector3d > vertices
Definition
CoplanarPolygon.hpp:21
reusex::geometry::CoplanarPolygon::bounding_box
std::pair< Eigen::Vector3d, Eigen::Vector3d > bounding_box() const
Axis-aligned bounding box (min, max).
reusex::geometry::CoplanarPolygon::normal
Eigen::Vector3d normal() const
Unit normal extracted from plane coefficients.
reusex::geometry::CoplanarPolygon::is_valid
bool is_valid() const
True when >= 3 vertices and nonzero plane normal.
reusex::geometry::CoplanarPolygon::centroid
Eigen::Vector3d centroid() const
Centroid (arithmetic mean of vertices).
reusex::geometry::CoplanarPolygon::deserialize_vertices
static std::vector< Eigen::Vector3d > deserialize_vertices(const void *data, size_t size)
Deserialize vertices from compact binary.
reusex::geometry::CoplanarPolygon::area
double area() const
Signed area via Newell's method projected onto the plane normal.
reusex::geometry::CoplanarPolygon::plane
Eigen::Vector4d plane
Definition
CoplanarPolygon.hpp:22
libs
reusex
include
geometry
CoplanarPolygon.hpp
Generated by
1.17.0