debug: is_valid() 添加诊断输出
This commit is contained in:
+13
-5
@@ -59,16 +59,24 @@ core::AABB3D BrepModel::bounds() const {
|
||||
}
|
||||
|
||||
bool BrepModel::is_valid() const {
|
||||
// Basic validity: all referenced IDs must exist
|
||||
for (const auto& e : edges_) {
|
||||
if (e.v_start >= static_cast<int>(vertices_.size()) ||
|
||||
e.v_end >= static_cast<int>(vertices_.size()))
|
||||
e.v_end >= static_cast<int>(vertices_.size())) {
|
||||
fprintf(stderr, "is_valid FAIL: edge v=%d/%d vs %zu verts\n", e.v_start, e.v_end, vertices_.size());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
for (const auto& f : faces_) {
|
||||
if (f.surface_id >= static_cast<int>(surfaces_.size())) return false;
|
||||
for (int li : f.loops)
|
||||
if (li >= static_cast<int>(loops_.size())) return false;
|
||||
if (f.surface_id >= static_cast<int>(surfaces_.size())) {
|
||||
fprintf(stderr, "is_valid FAIL: face.surface_id=%d vs %zu surfaces\n", f.surface_id, surfaces_.size());
|
||||
return false;
|
||||
}
|
||||
for (int li : f.loops) {
|
||||
if (li >= static_cast<int>(loops_.size())) {
|
||||
fprintf(stderr, "is_valid FAIL: loop=%d vs %zu loops\n", li, loops_.size());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user