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