Units / intersect
intersect.curve_class_p5 partial
- Layer
- 36
- Upstream lines
- 2,017
- Functions
- 7
- Rust module
intersect::curve_class::p5
Source: crates/solidcore/src/intersect/curve_class/p5.rs
Upstream: source/SMLib/src/SmCurveClass.cpp
Notes
PARTIAL (PR #150), validated on source 9e495b12: 1081 cases (281 fixed + 800 generated), 275 bit-identical comparisons, 0 failed, 806 deferred (intersect.curve_class_p2 493, intersect.curve_class_p7 312, curve.crv_on_surf 1); perturbation detects 275/275. Nine affected native runners, plain/native Clippy, 1215 kernel tests, WASM and focused FFI regression pass. All eight other reports regenerate unchanged. No absolute floors. Part 6 landed independently through PR #138 and its Homogenize/FixEndPointClass/InsertCurveInterval/MergeInterval are wired; p2/p7 remain independent. Edge-target insertion remains unported (p2/p7); the entire SSS block remains unported before mutation and names its real boolean.topology_intersector_p1 mate dependency, with preceding mutable ownership wiring still needed. Nonempty large-gap projection remains uncertified. All 24 zero_tangent cases defer to p2. Missing vertex/gap callback data returns InvalidInput. No-face large-gap cutoff retains the native default (twice system zone), tested independently of the solver; Rust continues on an ownerless surface (UB-126). The generic-Surface CrvOnSurf type-dispatch gap is documented in its partial owner's notes. Small shared interfaces are CO-PORTED in point_class, curve_class_p1 and query.face_p2 notes. Proto-topology p3 extraction is wired; classification_vertex_point avoids the ProtoBrep collision. Deviations: object_index > 1 rejected; unresolved p5_closed curve errors instead of FALSE; runner face zone tolerance zero is not compared. UB-134 is assigned to this PR by the maintainer. 7 owned functions; largest: sm_InsertSolutions, SmCurveClassification::IntersectVertices, SmCurveClassification::MergeClassifications, SmCurveClassification::ExtractGeometry; cycle back-edges (call into later units; stub or co-port): topology.edge(6), topology.vertex(5), boolean.topology_intersector_p1(2), heal.gap(1), topology.edgeuse_p1(1), topology.vertexuse(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit; full CI evidence is tracked in the PR description. Merge of PR #65: GetPointClassByIndex wired to p7; difftest now 1081 cases, 416 passed, 0 failed, 665 deferred. Rust adapter extended in heal.heal_data_p3 (PR #164): merge_intervals_with_partial retains completed intervals' output on failure for native ignored-status callers; unit accumulator regression covers failure in both passes. Public merge_intervals result contract is unchanged. SELF-DEFERRAL (noted by PR #146): the GWC:CHANGED_SSS block of SmCurveClassification::IntersectVertices (SmCurveClass.cpp:14826-15095) is UNPORTED(intersect.curve_class_p5) in p5.rs; porting it needs mutable curve/B-rep access in IntersectVertices plus a mate-lookup closure (boolean.topology_intersector_p1's other_mate / brep_mate).
Difftest
- Cases
- 1,081
- Passed
- 416
- Deferred
- 665
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
intersect.curve_class_p2 claimed | 664 |
curve.crv_on_surf partial | 1 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.extent1d green geom.object partial geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green intersect.curve_class_p1 partial intersect.curve_class_p2 claimed intersect.curve_class_p3 partial intersect.curve_class_p6 partial intersect.curve_class_p7 partial intersect.point_class partial surface.surface_p2 partial
Soft dependencies: curve.crv_on_surf partial curve.curve_p1 partial curve.curve_p4 partial nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p1 green nurbs.b_spline_surface_p1 green surface.surface_p4 green surface.surface_p5 green
Dependents: intersect.curve_class_p8 partial intersect.curve_class_p9 partial
Soft dependents: boolean.topology_intersector_p1 partial boolean.topology_intersector_p3 claimed heal.heal_data_p3 partial query.face_p2 partial topology.brep_p2 claimed topology.brep_p7 claimed topology.face_p1 partial topology.face_p3 claimed topology.proto_topology_p3 partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
sm_InsertSolutions | SmCurveClass.cpp:4158 | 634 | [insert_solutions] |
SmCurveClassification::ExtractGeometry | SmCurveClass.cpp:13465 | 167 | [CurveClassification::extract_geometry] |
SmCurveClassification::FixupClassification | SmCurveClass.cpp:14096 | 97 | [CurveClassification::fixup_classification] |
SmCurveClassification::InsertTopologyIntersections | SmCurveClass.cpp:14473 | 129 | [CurveClassification::insert_topology_intersections] |
SmCurveClassification::IntersectVertices | SmCurveClass.cpp:14643 | 607 | [CurveClassification::intersect_vertices] |
SmCurveClassification::MergeClassifications | SmCurveClass.cpp:16530 | 261 | [CurveClassification::merge_classifications] |
SmCurveClassification::MergeIntervals | SmCurveClass.cpp:18578 | 122 | [CurveClassification::merge_intervals] |
Module file-header table (7 rows)
| Rust | Upstream |
|---|---|
[insert_solutions] | sm_InsertSolutions (static) |
[CurveClassification::extract_geometry] | SmCurveClassification::ExtractGeometry |
[CurveClassification::fixup_classification] | SmCurveClassification::FixupClassification |
[CurveClassification::insert_topology_intersections] | SmCurveClassification::InsertTopologyIntersections |
[CurveClassification::intersect_vertices] | SmCurveClassification::IntersectVertices |
[CurveClassification::merge_classifications] | SmCurveClassification::MergeClassifications |
[CurveClassification::merge_intervals] | SmCurveClassification::MergeIntervals |
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