OverviewFilesCommitsIssuesDocsReleasesPeers

dc-terrain / test / test_diag.cpp

35 lines · cpp ref:
#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;
}