Skip to content

Commit

Permalink
EPS adjustment, which has proven to be somewhat more reliable.
Browse files Browse the repository at this point in the history
  • Loading branch information
QuimMoya committed Nov 8, 2024
1 parent 5c0b363 commit dbda140
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 25 deletions.
20 changes: 10 additions & 10 deletions src/cpp/geometry/IfcGeometryProcessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1697,7 +1697,7 @@ namespace webifc::geometry

for (auto &firstGeom : firstGeoms)
{
IfcGeometry result = firstGeom;
IfcGeometry firstOperator = firstGeom;
for (auto &secondGeom : secondGeoms)
{
bool doit = true;
Expand All @@ -1710,7 +1710,7 @@ namespace webifc::geometry
doit = false;
}

if (result.numFaces == 0 && op != "UNION")
if (firstOperator.numFaces == 0 && op != "UNION")
{
spdlog::error("[BoolProcess()] bool aborted due to empty source or target");

Expand Down Expand Up @@ -1740,9 +1740,9 @@ namespace webifc::geometry
double scaleY = 1;
double scaleZ = 1;

for (uint32_t i = 0; i < result.numPoints; i++)
for (uint32_t i = 0; i < firstOperator.numPoints; i++)
{
glm::dvec3 p = result.GetPoint(i);
glm::dvec3 p = firstOperator.GetPoint(i);
glm::dvec3 vec = (p - origin);
double dx = glm::dot(vec, x);
double dy = glm::dot(vec, y);
Expand All @@ -1761,27 +1761,27 @@ namespace webifc::geometry
#endif

#ifdef CSG_DEBUG_OUTPUT
io::DumpIfcGeometry(result, "first.obj");
io::DumpIfcGeometry(firstOperator, "first.obj");
#endif

result.buildPlanes();
firstOperator.buildPlanes();
secondOperator.buildPlanes();

if (op == "DIFFERENCE")
{
result = Subtract(result, secondOperator);
firstOperator = Subtract(firstOperator, secondOperator);
}
else if (op == "UNION")
{
result = Union(result, secondOperator);
firstOperator = Union(firstOperator, secondOperator);
}

#ifdef CSG_DEBUG_OUTPUT
io::DumpIfcGeometry(result, "result.obj");
io::DumpIfcGeometry(firstOperator, "result.obj");
#endif
}
}
finalResult.AddGeometry(result);
finalResult.AddGeometry(firstOperator);
}

return finalResult;
Expand Down
4 changes: 2 additions & 2 deletions src/cpp/geometry/operations/boolean-utils/eps.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ constexpr double toleranceIsInsideCenterExtents = 1.0E-10;
/*
Constants used in shared-position.h
*/
constexpr double toleranceVectorEquality = 1.0E-05;
constexpr double toleranceScalarEquality = 1.0E-05;
constexpr double toleranceVectorEquality = 1.0E-04;
constexpr double toleranceScalarEquality = 1.0E-04;
constexpr double toleranceCollinear = 1.0E-04;

/*
Expand Down
24 changes: 12 additions & 12 deletions src/cpp/geometry/operations/boolean-utils/shared-position.h
Original file line number Diff line number Diff line change
Expand Up @@ -1754,13 +1754,13 @@ namespace fuzzybools
Plane &p = sp.planes[planeId];

#ifdef CSG_DEBUG_OUTPUT
auto basis = p.MakeBasis();
// auto basis = p.MakeBasis();

for (auto& segment : contours)
{
edges.push_back({ basis.project(sp.points[segment.first].location3D), basis.project(sp.points[segment.second].location3D) });
}
DumpSVGLines(edges, L"contour_A.html");
// for (auto& segment : contours)
// {
// edges.push_back({ basis.project(sp.points[segment.first].location3D), basis.project(sp.points[segment.second].location3D) });
// }
// DumpSVGLines(edges, L"contour_A.html");
#endif

for (auto &segment : contours)
Expand All @@ -1778,13 +1778,13 @@ namespace fuzzybools
Plane &p = sp.planes[planeId];

#ifdef CSG_DEBUG_OUTPUT
auto basis = p.MakeBasis();
// auto basis = p.MakeBasis();

for (auto& segment : contours)
{
edges.push_back({ basis.project(sp.points[segment.first].location3D), basis.project(sp.points[segment.second].location3D) });
}
DumpSVGLines(edges, L"contour_B.html");
// for (auto& segment : contours)
// {
// edges.push_back({ basis.project(sp.points[segment.first].location3D), basis.project(sp.points[segment.second].location3D) });
// }
// DumpSVGLines(edges, L"contour_B.html");
#endif

for (auto &segment : contours)
Expand Down
2 changes: 1 addition & 1 deletion tests/regression/results.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"tests/ifcfiles/public/AC20-FZK-Haus.ifc":"e2c0d14a0785f1608122dc625653f9f5490db6032b8450db8447c585bb9b738b","tests/ifcfiles/public/advanced_model.ifc":"f8c2df2d78b7d1cce10dc7579fc47c2b04bf594c410b13374a09627eb0ccf2c6","tests/ifcfiles/public/C20-Institute-Var-2.ifc":"89c0695b718956e0bea15f19e0f244146822fa47afe8d19acfdef3375c98e3c1","tests/ifcfiles/public/dental_clinic.ifc":"bae370336a9d12a2b28ceb9ae38d77f973b1c8ccce73a07d38ed761819b8a058","tests/ifcfiles/public/duplex.ifc":"8b1b771f91446403d57e88b0fb5aa86f0abf3e4e94aad5eb33bfa2535ed79704","tests/ifcfiles/public/example.ifc":"c28cc76e3bbd56935dcf4d81f3dd96fee2b38bf50213a8dde4a7b832fca9c56e","tests/ifcfiles/public/FM_ARC_DigitalHub.ifc":"240f477855e5f171a785fb4e1da488a7c097c26649ced6b7083fdae086bb07d5","tests/ifcfiles/public/ifcbridge-model01.ifc":"543d297cd72d2a4208f7c9dda2b24c170e8300d891a75c5f7ec72d549147278c","tests/ifcfiles/public/IfcOpenHouse_IFC4.ifc":"34e3ae8f33af9433740e7c33b1b2931dd6823d82ca2749dafe986dfb9ccaaf97","tests/ifcfiles/public/ISSUE_005_haus.ifc":"e2c0d14a0785f1608122dc625653f9f5490db6032b8450db8447c585bb9b738b","tests/ifcfiles/public/ISSUE_021_Mini Project.ifc":"b2f3dc146e1f785e1076f78ace8a7af045f364321648ff9db6bd13426bb486df","tests/ifcfiles/public/ISSUE_034_HouseZ.ifc":"f2a96e440979fb9d136f72b3c5d58ef915ceb7b1c52dae29def1170f780b0c77","tests/ifcfiles/public/ISSUE_044_test_IFCCOMPOSITEPROFILEDEF.ifc":"95c6615f17d6ae3d5b3324f1922698caee18aff6af68cd4a4a1fbb03c9bd669a","tests/ifcfiles/public/ISSUE_053_20181220Holter_Tower_10.ifczip":"540b452da83c01ca2412dca51c615de58c12a12c4e7a5a63d5e14f256931b248","tests/ifcfiles/public/ISSUE_068_ARK_NUS_skolebygg.ifc":"3af64f665945b72fc4a3dadda04ae2a224f9c87cabdee0d066925d7888abd9de","tests/ifcfiles/public/ISSUE_102_M3D-CON-CD.ifc":"76fb00e21a4039fd58c28ba0b10047df54c766d118afe0e4ad5ccf811dbd0373","tests/ifcfiles/public/ISSUE_102_M3D-CON.ifc":"869ad5162a7ecb9bc09b76ff8afd45cac27b7e173cad514100d8e3c9a0349681","tests/ifcfiles/public/ISSUE_126_model.ifc":"ffc49f329f3b3aaac4d584922e61b50197c3a9c90f755dab834cd50fef89fbe5","tests/ifcfiles/public/ISSUE_129_N1540_17_EXE_MOD_448200_02_09_11SMC_IGC_V17.ifc":"f3c117f5640510f6951c9f9e1100186e4d300c7cdd190bf63da9f84cb3703bdf","tests/ifcfiles/public/ISSUE_159_kleine_Wohnung_R22.ifc":"bb1daf59d15d85b8dba8206d3ac81d4a1662b3254e0529dba6fa6e0874f6deea","tests/ifcfiles/public/ISSUE_171_IfcSurfaceCurveSweptAreaSolid.ifc":"42962f263d3b70f030b8d0e06070585ef6793a97890bc0acecf39ccd6f59a5ac","tests/ifcfiles/public/KIT-Simple-Road-Test-Web-IFC4x3_RC2.ifc":"3b6d517cbf36f043e4d850d0b92a90635965f7cca350242ac2b2b7a8ae9bfb37","tests/ifcfiles/public/Office_A_20110811.ifc":"de455720a58fbb9ca7a603b6824aea7d174fccc1993d8f4c2bb6ebe570cec34a","tests/ifcfiles/public/Sample_entities.ifc":"5259f4678634094aec9c568fe06871894bfb0c6e6957a77a6834e4c52f481ded","tests/ifcfiles/public/schependomlaan.ifc":"27d503752fa9972d29e14dc5d576815b5a9891bdf1f31156ddd3687f09585189","tests/ifcfiles/public/S_Office_Integrated Design Archi.ifc":"c8b06ccfbc880464b65ecc149e17770341a591979b2ec785a37a7b71e5425b9e","tests/ifcfiles/public/tested_sample_project.ifc":"e952f224200e370ce1dac6cd7d038dc09c2f8ce27c00d48c92241c1f0d9b3a83"}
{"tests/ifcfiles/public/AC20-FZK-Haus.ifc":"e2c0d14a0785f1608122dc625653f9f5490db6032b8450db8447c585bb9b738b","tests/ifcfiles/public/advanced_model.ifc":"f8c2df2d78b7d1cce10dc7579fc47c2b04bf594c410b13374a09627eb0ccf2c6","tests/ifcfiles/public/C20-Institute-Var-2.ifc":"89c0695b718956e0bea15f19e0f244146822fa47afe8d19acfdef3375c98e3c1","tests/ifcfiles/public/dental_clinic.ifc":"bae370336a9d12a2b28ceb9ae38d77f973b1c8ccce73a07d38ed761819b8a058","tests/ifcfiles/public/duplex.ifc":"8b1b771f91446403d57e88b0fb5aa86f0abf3e4e94aad5eb33bfa2535ed79704","tests/ifcfiles/public/example.ifc":"c28cc76e3bbd56935dcf4d81f3dd96fee2b38bf50213a8dde4a7b832fca9c56e","tests/ifcfiles/public/FM_ARC_DigitalHub.ifc":"240f477855e5f171a785fb4e1da488a7c097c26649ced6b7083fdae086bb07d5","tests/ifcfiles/public/ifcbridge-model01.ifc":"543d297cd72d2a4208f7c9dda2b24c170e8300d891a75c5f7ec72d549147278c","tests/ifcfiles/public/IfcOpenHouse_IFC4.ifc":"34e3ae8f33af9433740e7c33b1b2931dd6823d82ca2749dafe986dfb9ccaaf97","tests/ifcfiles/public/ISSUE_005_haus.ifc":"e2c0d14a0785f1608122dc625653f9f5490db6032b8450db8447c585bb9b738b","tests/ifcfiles/public/ISSUE_021_Mini Project.ifc":"a247618af01ad1b0ca7707a77fe11363e95b444db75e5fee8c9b5fbbb7d98155","tests/ifcfiles/public/ISSUE_034_HouseZ.ifc":"f2a96e440979fb9d136f72b3c5d58ef915ceb7b1c52dae29def1170f780b0c77","tests/ifcfiles/public/ISSUE_044_test_IFCCOMPOSITEPROFILEDEF.ifc":"95c6615f17d6ae3d5b3324f1922698caee18aff6af68cd4a4a1fbb03c9bd669a","tests/ifcfiles/public/ISSUE_053_20181220Holter_Tower_10.ifczip":"0d216c035cdc3c2f11a7f63067fd4b462db19aec90396ea61ced6a2b62291b26","tests/ifcfiles/public/ISSUE_068_ARK_NUS_skolebygg.ifc":"3af64f665945b72fc4a3dadda04ae2a224f9c87cabdee0d066925d7888abd9de","tests/ifcfiles/public/ISSUE_102_M3D-CON-CD.ifc":"76fb00e21a4039fd58c28ba0b10047df54c766d118afe0e4ad5ccf811dbd0373","tests/ifcfiles/public/ISSUE_102_M3D-CON.ifc":"869ad5162a7ecb9bc09b76ff8afd45cac27b7e173cad514100d8e3c9a0349681","tests/ifcfiles/public/ISSUE_126_model.ifc":"ffc49f329f3b3aaac4d584922e61b50197c3a9c90f755dab834cd50fef89fbe5","tests/ifcfiles/public/ISSUE_129_N1540_17_EXE_MOD_448200_02_09_11SMC_IGC_V17.ifc":"1737547a445236c077596794d484285f7adbacbbf1bdee80c0a1b5eceb7b4e2e","tests/ifcfiles/public/ISSUE_159_kleine_Wohnung_R22.ifc":"bb1daf59d15d85b8dba8206d3ac81d4a1662b3254e0529dba6fa6e0874f6deea","tests/ifcfiles/public/ISSUE_171_IfcSurfaceCurveSweptAreaSolid.ifc":"42962f263d3b70f030b8d0e06070585ef6793a97890bc0acecf39ccd6f59a5ac","tests/ifcfiles/public/KIT-Simple-Road-Test-Web-IFC4x3_RC2.ifc":"3b6d517cbf36f043e4d850d0b92a90635965f7cca350242ac2b2b7a8ae9bfb37","tests/ifcfiles/public/Office_A_20110811.ifc":"de455720a58fbb9ca7a603b6824aea7d174fccc1993d8f4c2bb6ebe570cec34a","tests/ifcfiles/public/Sample_entities.ifc":"5259f4678634094aec9c568fe06871894bfb0c6e6957a77a6834e4c52f481ded","tests/ifcfiles/public/schependomlaan.ifc":"8a9e832fafc43e8e008f6dd800b0b76e8d49d8606c1632b03857105ee5518752","tests/ifcfiles/public/S_Office_Integrated Design Archi.ifc":"f2feb24c9622d40a02a894eafcbb5f46b2eef9cd90149617a199e9a3ae8388ef","tests/ifcfiles/public/tested_sample_project.ifc":"e952f224200e370ce1dac6cd7d038dc09c2f8ce27c00d48c92241c1f0d9b3a83"}

0 comments on commit dbda140

Please sign in to comment.