extract explicit mesh with topology information from implicit surfaces with boolean operations, and do surface/volume integrating on them.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.1 KiB

#include <iostream>
#include <mesh_algorithm.hpp>
int main()
{
// 8 vertices: unit cube
vector3d verts[8] = {
{0, 0, 0},
{1, 0, 0},
{1, 1, 0},
{0, 1, 0},
{0, 0, 1},
{1, 0, 1},
{1, 1, 1},
{0, 1, 1}
};
// 6 faces, each with 4 vertices (counter-clockwise order when viewed from outside)
uint32_t face_data[] = {
0, 1, 2, 3, // bottom face
7, 6, 5, 4, // top face (note CCW when seen from outside)
0, 4, 5, 1, // front face
1, 5, 6, 2, // right face
3, 2, 6, 7, // back face
0, 3, 7, 4 // left face
};
uint32_t vertex_counts[6] = {4, 4, 4, 4, 4, 4};
polymesh_t mesh;
mesh.vertices = verts;
mesh.faces = face_data;
mesh.vertex_counts = vertex_counts;
mesh.num_vertices = 8;
mesh.num_faces = 6;
double area = compute_surface_area(&mesh);
double volume = compute_volume(&mesh);
std::cout << "area: " << area << std::endl; // expected: 6
std::cout << "volume: " << volume << std::endl; // expected: 1
return 0;
}