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.

37 lines
1022 B

#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;
}