Units / intersect
intersect.topology_solver_p1 partial
- Layer
- 32
- Upstream lines
- 1,838
- Functions
- 55
- Rust module
intersect::topology_solver::p1
Source: crates/solidcore/src/intersect/topology_solver/p1.rs
Upstream: source/SMLib/inc/SmTopologySolver.h, source/SMLib/src/SmTopologySolver.cpp
Notes
UPDATE after curve.curve_p9 (PR #13): the GlobalCurveSolve back-edge is wired (curve_global_curve_solve); difftest 3532 cases, 3389 pass bit-identical, 0 failed, 143 deferred (topology.brep_p1 48, topology.edge 95; the 151 curve.curve_p9 deferrals are gone), --perturb SENSITIVE 3389/3389. Counts below are from before. PARTIAL: difftest 3532 cases (532 fixture: SM_API_test TestSmCreateRectangle / TestSmCreateRegularPolygon edges, my_test_drop_point, my_test_reversed_line_join lines, every operation on degenerate boxes / coincident and unit-distance vertices, tiny and huge circles, ray and at-distance tolerance limits, sub-domain edges, review adversarial cases (ray behind start, signed directed, at-distance 1e7, projected/directed MayContainAnswer, curve and edge solves), zero and tiny option vectors; 3000 generated), 3161 pass bit-identical, 0 failed, 371 deferred (curve.curve_p9 151: GlobalCurveSolve of non-intersecting curve/edge solves; intersect.topology_solver_p2 87: SmTopologySolver::LocalSolve reached from SolveTrees; topology.edge 85: edge parameter intervals in solution comparisons; topology.brep_p1 48: object zone tolerances of ray-fire solutions and ellipse solves); --perturb SENSITIVE. Solvers read vertices, edges, faces and shape membership through the TopologyObjects trait (the difftest backs it with free-standing SmVertex/SmEdge objects); a B-rep implementation belongs with the BrepCache trees (intersect.topology_solver_p2, topology.vertex, topology.edge, topology.face_p2). SmTLSPointFace and sm_GetFaceSilhouettes remain partial; p2 fixtures exercise face exclusion and explicit surface/query deferrals, and the cache factory is wired. Upstream issues UB-85, UB-86, WR-62 (WR-62 unconfirmed: single-call fixtures defer at SmTol::GetZoneTol3d). The curve_global_curve_solve stub gets both intervals, operation, tolerance, best answer, option vectors and SM_SR_ALL as upstream passes them; face_silhouettes calls surface_cache (surface.surface_p2) through TopologyObjects::surface; face_point_classify must return the class even when PointClassify fails (callers ignore its status). FFI refuses short option vectors only for the MayContainAnswer ray and the curve solvers (findings.md). 55 fns; largest: SmTopologySolver::MayContainAnswer, SmTLSPointFace::SolveIt, SmTLSPointVertex::SolveIt, SmTLSCurveCurve::SolveIt; cycle back-edges (call into later units; stub or co-port): topology.face_p2(6), topology.edge(5), topology.vertex(4), query.face_p1(1), query.face_p2(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit; CO-PORTED in intersect.topology_solver_p2 (PR #60): TopologyObjects::brep_trees / shape_member_object / shape_geometry_object -> borrowed tree and topology-to-geometry adapters; LocalSolver::new supplies the shared SmTLSVertexEdge / SmTLSEdgeEdge constructors; LocalSolve and six local class stubs are wired to p2; current validation: 3532 cases, 3248 bit-identical, 0 failed, 284 deferred (curve.curve_p9 151, topology.brep_p1 48, topology.edge 85); max_rel_err=0; no absolute floors
Difftest
- Cases
- 3,532
- Passed
- 3,389
- Deferred
- 143
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
topology.edge partial | 95 |
topology.brep_p1 claimed | 48 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.extent3d green geom.global_solver partial geom.object partial geom.solution_array partial geom.tol green geom.tree partial geom.vector3d green surface.surface_p2 partial
Soft dependencies: curve.curve_p1 partial curve.curve_p8 green curve.curve_p9 green geom.extent1d green geom.geom_utility_p1 green geom.vector2d green intersect.point_class partial surface.surface_cache_p1 green surface.surface_cache_p2 partial surface.surface_p1 partial surface.surface_p4 green surface.surface_p8 partial
Dependents: intersect.topology_solver_p2 partial
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmTopoLocalSolver::SmTopoLocalSolver | SmTopologySolver.h:52 | 7 | [LocalSolverKind] |
SmTopoLocalSolver::~SmTopoLocalSolver | SmTopologySolver.h:60 | 1 | |
SmTopoLocalSolver::SolveIt | SmTopologySolver.h:65 | 4 | [LocalSolver::solve_it] |
SmTLSPoint::SmTLSPoint | SmTopologySolver.h:85 | 9 | |
SmTLSPoint::~SmTLSPoint | SmTopologySolver.h:95 | 1 | |
SmTLSPoint::SetPoint | SmTopologySolver.h:97 | 4 | [LocalSolver::set_point] |
SmTLSPoint::SolveIt | SmTopologySolver.h:107 | 4 | [LocalSolver::solve_it] |
SmTLSPointVertex::SmTLSPointVertex | SmTopologySolver.h:124 | 8 | |
SmTLSPointVertex::~SmTLSPointVertex | SmTopologySolver.h:133 | 1 | |
SmTLSVertexVertex::SmTLSVertexVertex | SmTopologySolver.h:148 | 8 | |
SmTLSVertexVertex::~SmTLSVertexVertex | SmTopologySolver.h:157 | 1 | |
SmTLSPointCurve::SmTLSPointCurve | SmTopologySolver.h:179 | 10 | |
SmTLSPointCurve::~SmTLSPointCurve | SmTopologySolver.h:190 | 5 | |
SmTLSPointEdge::SmTLSPointEdge | SmTopologySolver.h:209 | 8 | |
SmTLSPointEdge::~SmTLSPointEdge | SmTopologySolver.h:218 | 1 | |
SmTLSVertexEdge::~SmTLSVertexEdge | SmTopologySolver.h:242 | 1 | |
SmTLSPointFace::SmTLSPointFace | SmTopologySolver.h:257 | 8 | |
SmTLSPointFace::~SmTLSPointFace | SmTopologySolver.h:266 | 1 | |
SmTLSVertexFace::SmTLSVertexFace | SmTopologySolver.h:281 | 8 | |
SmTLSVertexFace::~SmTLSVertexFace | SmTopologySolver.h:290 | 1 | |
SmTLSCurve::SmTLSCurve | SmTopologySolver.h:313 | 12 | |
SmTLSCurve::~SmTLSCurve | SmTopologySolver.h:326 | 7 | |
SmTLSCurve::SetCurve | SmTopologySolver.h:335 | 5 | [LocalSolver::set_curve] |
SmTLSCurve::SolveIt | SmTopologySolver.h:346 | 4 | [LocalSolver::solve_it] |
SmTLSCurveVertex::SmTLSCurveVertex | SmTopologySolver.h:362 | 8 | |
SmTLSCurveVertex::~SmTLSCurveVertex | SmTopologySolver.h:371 | 1 | |
SmTLSEdgeVertex::~SmTLSEdgeVertex | SmTopologySolver.h:396 | 1 | |
SmTLSCurveCurve::SmTLSCurveCurve | SmTopologySolver.h:420 | 12 | |
SmTLSCurveCurve::~SmTLSCurveCurve | SmTopologySolver.h:433 | 7 | |
SmTLSCurveEdge::SmTLSCurveEdge | SmTopologySolver.h:454 | 8 | |
SmTLSCurveEdge::~SmTLSCurveEdge | SmTopologySolver.h:463 | 1 | |
SmTLSEdgeEdge::~SmTLSEdgeEdge | SmTopologySolver.h:487 | 1 | |
SmTLSCurveFace::SmTLSCurveFace | SmTopologySolver.h:503 | 8 | |
SmTLSCurveFace::~SmTLSCurveFace | SmTopologySolver.h:512 | 1 | |
SmTLSEdgeFace::SmTLSEdgeFace | SmTopologySolver.h:527 | 8 | |
SmTLSEdgeFace::~SmTLSEdgeFace | SmTopologySolver.h:536 | 1 | |
SmTLSFaceFace::SmTLSFaceFace | SmTopologySolver.h:551 | 8 | |
SmTLSFaceFace::~SmTLSFaceFace | SmTopologySolver.h:560 | 1 | |
SmTopologySolver::~SmTopologySolver | SmTopologySolver.h:601 | 1 | Drop (implicit) |
SmTopologySolver::AreReadyForLocalSolve | SmTopologySolver.h:716 | 4 | GlobalSolve::are_ready_for_local_solve for [TopologySolver] |
sm_GetFaceSilhouettes | SmTopologySolver.cpp:33 | 76 | face_silhouettes (private) |
SmTLSPointVertex::SolveIt | SmTopologySolver.cpp:116 | 242 | [LocalSolver::solve_it] |
SmTLSVertexVertex::SolveIt | SmTopologySolver.cpp:365 | 18 | [LocalSolver::solve_it] |
SmTLSPointCurve::SolveIt | SmTopologySolver.cpp:389 | 128 | [LocalSolver::solve_it] |
SmTLSPointEdge::SolveIt | SmTopologySolver.cpp:523 | 95 | [LocalSolver::solve_it] |
SmTLSVertexEdge::SolveIt | SmTopologySolver.cpp:625 | 24 | [LocalSolver::solve_it] |
SmTLSPointFace::SolveIt | SmTopologySolver.cpp:661 | 276 | [LocalSolver::solve_it] |
SmTLSCurveEdge::SolveIt | SmTopologySolver.cpp:1066 | 47 | [LocalSolver::solve_it] |
SmTLSCurveCurve::SolveIt | SmTopologySolver.cpp:1119 | 213 | [LocalSolver::solve_it] |
SmTLSEdgeEdge::SolveIt | SmTopologySolver.cpp:1339 | 50 | [LocalSolver::solve_it] |
SmTopologySolver::SmTopologySolver | SmTopologySolver.cpp:2637 | 72 | [TopologySolver], [TopologySolver::new] |
SmTopologySolver::MayContainAnswer | SmTopologySolver.cpp:2716 | 297 | [TopologySolver::may_contain_answer] |
SmTopologySolver::SolveTrees | SmTopologySolver.cpp:3104 | 46 | [TopologySolver::solve_trees] |
SmTopologySolver::SolveTwoTrees | SmTopologySolver.cpp:3156 | 33 | [TopologySolver::solve_two_trees] |
SmTopologySolver::GetBestAnswerSoFar | SmTopologySolver.cpp:3406 | 31 | [TopologySolver::best_answer_so_far], [best_answer_so_far] |
Module file-header table (18 rows)
| Rust | Upstream |
|---|---|
[TopologyObjects] | the SmObject* casts and the SmVertex, SmEdge, SmFace, SmSurface, SmCurve::GetEdge, SmShape::IsInShape accessors the solvers call |
[CurveRef] | an SmCurve* member (m_pCurve, m_pCurve2) |
[LocalSolverKind] | the SmTopoLocalSolver class hierarchy |
[LocalSolver], [LocalSolver::new] | SmTopoLocalSolver and every derived class, their constructors |
Drop (implicit) | the local solver destructors |
[LocalSolver::set_point] | SmTLSPoint::SetPoint |
[LocalSolver::set_point_vertex] | SmTLSPoint::SetPointVertex |
[LocalSolver::set_curve] | SmTLSCurve::SetCurve |
[LocalSolver::set_curve_edge] | SmTLSCurve::SetCurveEdge |
[LocalSolver::solve_it] | the virtual SolveIt of every local solver: SmTopoLocalSolver::SolveIt, SmTLSPoint::SolveIt, SmTLSCurve::SolveIt (SM_ERR), SmTLSPointVertex::SolveIt, SmTLSVertexVertex::SolveIt, SmTLSPointCurve::SolveIt, SmTLSPointEdge::SolveIt, SmTLSVertexEdge::SolveIt, SmTLSPointFace::SolveIt, SmTLSCurveEdge::SolveIt, SmTLSCurveCurve::SolveIt, SmTLSEdgeEdge::SolveIt |
face_silhouettes (private) | sm_GetFaceSilhouettes |
[TopologySolver], [TopologySolver::new] | SmTopologySolver, SmTopologySolver::SmTopologySolver |
Drop (implicit) | ~SmTopologySolver |
[TopologySolver::may_contain_answer] | SmTopologySolver::MayContainAnswer |
[TopologySolver::solve_trees] | SmTopologySolver::SolveTrees |
[TopologySolver::solve_two_trees] | SmTopologySolver::SolveTwoTrees |
[TopologySolver::best_answer_so_far], [best_answer_so_far] | SmTopologySolver::GetBestAnswerSoFar |
GlobalSolve::are_ready_for_local_solve for [TopologySolver] | SmTopologySolver::AreReadyForLocalSolve |
Upstream tests reaching this unit
prog_test:my_test_surface_closest_point, prog_test:my_test_drop_point, prog_test:my_test_matrix, prog_test:my_test_reversed_line_join, SM_API_test:TestSmCreateRectangle, SM_API_test:TestSmCreateRegularPolygon