From 484dc3700be50f947acb6e86fff31d425de8ddbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=82=E4=B9=8B=E9=92=B3?= Date: Thu, 23 Jul 2026 12:37:40 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20core/foundation=20=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=20=E2=80=94=20distance/polygon/IO=20?= =?UTF-8?q?=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/boolean/boolean_mesh.cpp | 1 - src/mesh/mesh_smooth.cpp | 14 ++++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/boolean/boolean_mesh.cpp b/src/boolean/boolean_mesh.cpp index 3252a38..6c298ac 100644 --- a/src/boolean/boolean_mesh.cpp +++ b/src/boolean/boolean_mesh.cpp @@ -193,7 +193,6 @@ HalfedgeMesh merge_meshes(const HalfedgeMesh& a, const HalfedgeMesh& b) { std::vector> tris; // Copy A - size_t offset_a = verts.size(); for (size_t i = 0; i < a.num_vertices(); ++i) verts.push_back(a.vertex(i)); for (size_t fi = 0; fi < a.num_faces(); ++fi) { diff --git a/src/mesh/mesh_smooth.cpp b/src/mesh/mesh_smooth.cpp index 7c3a601..a3dcb7b 100644 --- a/src/mesh/mesh_smooth.cpp +++ b/src/mesh/mesh_smooth.cpp @@ -187,13 +187,11 @@ HalfedgeMesh smooth_bilateral(const HalfedgeMesh& mesh, std::vector verts = extract_vertices(mesh); - // Compute per-vertex normals - mesh.update_normals(); - // We need a mutable copy to get normals (update_normals is called in mesh) - auto get_normals = [&]() { - std::vector norms(mesh.num_vertices()); - for (size_t i = 0; i < mesh.num_vertices(); ++i) - norms[i] = mesh.vertex_normal(static_cast(i)); + // Compute per-vertex normals for any mesh + auto get_normals = [](const HalfedgeMesh& m) { + std::vector norms(m.num_vertices()); + for (size_t i = 0; i < m.num_vertices(); ++i) + norms[i] = m.vertex_normal(static_cast(i)); return norms; }; @@ -219,7 +217,7 @@ HalfedgeMesh smooth_bilateral(const HalfedgeMesh& mesh, for (int iter = 0; iter < iters; ++iter) { // Recompute normals on current vertex positions HalfedgeMesh temp_mesh = apply_vertices(mesh, verts); - auto current_norms = get_normals(); + auto current_norms = get_normals(temp_mesh); std::vector new_verts = verts;