fix: boolean benchmark 传入 to_mesh(deflection=0.5) 避免 OOM + 重新启用
This commit is contained in:
@@ -71,6 +71,6 @@ add_custom_target(vde_benchmarks
|
||||
enable_testing()
|
||||
add_test(NAME bench_bvh COMMAND vde_bench_bvh --benchmark_min_time=0.01s)
|
||||
add_test(NAME bench_delaunay COMMAND vde_bench_delaunay --benchmark_min_time=0.01s)
|
||||
# add_test(NAME bench_boolean COMMAND vde_bench_boolean --benchmark_min_time=0.01s)
|
||||
add_test(NAME bench_boolean COMMAND vde_bench_boolean --benchmark_min_time=0.01s)
|
||||
add_test(NAME bench_curves COMMAND vde_bench_curves --benchmark_min_time=0.01s)
|
||||
add_test(NAME bench_spatial COMMAND vde_bench_spatial --benchmark_min_time=0.01s)
|
||||
|
||||
@@ -28,12 +28,14 @@ struct SpherePair {
|
||||
/// sphere_a at origin, sphere_b translated by +1.0 along X (overlap ~0.5)
|
||||
SpherePair make_sphere_pair(int face_count) {
|
||||
// make_sphere produces ~ 2 * seg_u * seg_v faces → solve for seg
|
||||
int seg = std::max(static_cast<int>(std::ceil(std::sqrt(face_count / 2.0))), 4);
|
||||
int seg_u = seg;
|
||||
int seg_v = seg;
|
||||
int seg = std::max(static_cast<int>(std::ceil(std::sqrt(face_count / 2.0))), 3);
|
||||
// Use deflection to control tessellation density per face
|
||||
// Each NURBS face tessellates res×res quads where res = max(4, 1/deflection)
|
||||
// For benchmark we want coarse tessellation: deflection = 0.5 → res=4
|
||||
double deflection = 0.5;
|
||||
|
||||
auto sphere_a = brep::make_sphere(1.0, seg_u, seg_v).to_mesh();
|
||||
auto sphere_b = brep::make_sphere(1.0, seg_u, seg_v).to_mesh();
|
||||
auto sphere_a = brep::make_sphere(1.0, seg, seg).to_mesh(deflection);
|
||||
auto sphere_b = brep::make_sphere(1.0, seg, seg).to_mesh(deflection);
|
||||
|
||||
// Translate sphere_b by +1.0 along X so they overlap by ~0.5
|
||||
// Rebuild from triangles with translated vertices
|
||||
|
||||
Reference in New Issue
Block a user