fix: shell vertex ID→map lookup, fix SEGFAULT
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "vde/brep/modeling.h"
|
||||
#include <cmath>
|
||||
#include <map>
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
||||
@@ -746,14 +747,16 @@ BrepModel shell(const BrepModel& body, int open_face, double thickness) {
|
||||
BrepModel result;
|
||||
|
||||
// ── 1. Offset all vertices inward ──
|
||||
std::vector<int> outer_vid(body.num_vertices()); // map old id → new outer id
|
||||
std::vector<int> inner_vid(body.num_vertices()); // map old id → new inner id
|
||||
std::map<int, int> outer_vid; // vertex ID → new outer vertex ID
|
||||
std::map<int, int> inner_vid; // vertex ID → new inner vertex ID
|
||||
|
||||
for (size_t i = 0; i < body.num_vertices(); ++i) {
|
||||
Point3D p_outer = body.vertex(static_cast<int>(i)).point;
|
||||
const auto& v = body.vertex(static_cast<int>(i));
|
||||
int vid = v.id;
|
||||
Point3D p_outer = v.point;
|
||||
Point3D p_inner = offset_vertex(body, static_cast<int>(i), -thickness);
|
||||
outer_vid[i] = result.add_vertex(p_outer);
|
||||
inner_vid[i] = result.add_vertex(p_inner);
|
||||
outer_vid[vid] = result.add_vertex(p_outer);
|
||||
inner_vid[vid] = result.add_vertex(p_inner);
|
||||
}
|
||||
|
||||
std::vector<int> all_faces;
|
||||
|
||||
Reference in New Issue
Block a user