#include "dc_octree.h"
#include "dc_contour.h"
#include "dc_density.h"
#include <cstdio>
static float density_cb(float x, float y, float z, void* ud) {
return static_cast<DCDensity*>(ud)->evaluate(x, y, z);
}
int main() {
DensityConfig cfg;
DCDensity density;
density.configure(cfg);
int size = 64; // 1 << 6
float voxel_size = 1.0f;
float half = size * voxel_size * 0.5f;
float origin[3] = {-half, -half, -half};
int grid_min[3] = {0, 0, 0};
printf("Grid: %d^3, origin=(%.1f,%.1f,%.1f)\n", size, origin[0], origin[1], origin[2]);
OctreeNode* root = construct_octree(grid_min, size, voxel_size, origin, density_cb, &density);
if (!root) { printf("No octree (uniform)\n"); return 1; }
int leaves = count_leaves(root);
printf("Leaves: %d\n", leaves);
DCMeshData mesh;
dc_generate_mesh(root, voxel_size, origin, density_cb, &density, mesh);
destroy_octree(root);
return 0;
}