Units / intersect
intersect.curve_class_p1 partial
- Layer
- 31
- Upstream lines
- 2,087
- Functions
- 71
- Rust module
intersect::curve_class::p1
Source: crates/solidcore/src/intersect/curve_class/p1.rs
Upstream: source/SMLib/inc/SmCurveClass.h, source/SMLib/src/SmCurveClass.cpp
Notes
partial (PR #47): difftest 2125 cases (2013 generated/usage + 75 adversarial review fixtures + 37 review_tol_pair fixtures), 1946 pass, 0 fail, 179 deferred (surface.surface_p4 54, surface.surface_p6 54, curve.crv_on_surf 24, surface.surface_p5 20, topology.face_p2 10, topology.edge 9, intersect.curve_class_p4 6, topology.vertex 2; SmTol::GetZoneTol3d(SmSurface), smsurf_GetSurfaceCache, SmSurface::ApproximateSize and the UV-curve branch of SmTol::MapTo2d(.., SmCurve, SmSurface) (via surface.surface_p1 map_to_2d_dir) are wired; the curve.crv_on_surf deferrals are the DISPATCH GAP of an SmCrvOnSurf over a plane in sm_CullOrRefineCCIIn3d, see plan/findings.md), max_rel_err 0; --perturb 1946/1946 detected; 71 fns; largest: sm_ApplyPointSolution, sm_SetXSectEdgeThroughPoint, sm_MakeConsistentClassifications, sm_SetXSectCurveThroughPoint; cycle back-edges (call into later units; stub or co-port): topology.edge(14), topology.face_p2(4), topology.edgeuse_p1(3), boolean.topology_intersector_p1(2), topology.vertex(2), query.face_p2(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit [surface.surface_p6 wired (PR #92): 2125 cases, 1946 pass, 179 deferred (curve.crv_on_surf 24, curve.iso_curve 22, intersect.curve_class_p4 6, surface.surface_p4 86, surface.surface_p5 20, topology.edge 9, topology.face_p2 10, topology.vertex 2)]. Review PR #106 recertification: 2125 cases, 2048 pass, 77 deferred, 0 failed, max_rel_err=0.0; deferred: curve.crv_on_surf 24, curve.iso_curve 22, intersect.curve_class_p4 6, topology.edge 11, topology.face_p2 12, topology.vertex 2. Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 2125 cases, 2048 pass, 77 deferred (curve.crv_on_surf 24, curve.iso_curve 22, intersect.curve_class_p4 6, topology.edge 11, topology.face_p2 12, topology.vertex 2), 0 failed, max_rel_err 0. CO-PORTED in intersect.curve_class_p5 (PR #150): inline SmCurveClassification::SetInterval -> CurveClassification::set_interval; curve_geometry visibility is pub(super) for sibling p5 access. Existing fields remain private.
Difftest
- Cases
- 2,125
- Passed
- 2,048
- Deferred
- 77
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
curve.crv_on_surf partial | 24 |
curve.iso_curve green | 22 |
topology.face_p2 partial | 12 |
topology.edge partial | 11 |
intersect.curve_class_p4 claimed | 6 |
topology.vertex partial | 2 |
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.point_class partial surface.surface_p2 partial
Soft dependencies: curve.crv_on_surf partial curve.curve_p3 green curve.curve_p6 green geom.a_object partial nurbs.b_spline_curve_n_lib green nurbs.b_spline_surface_p1 green surface.surface_p1 partial surface.surface_p4 green surface.surface_p5 green
Dependents: blend.fillet_solver_p3 todo blend.fillet_solver_p5 claimed blend.hcr claimed boolean.topology_intersector_p1 partial boolean.topology_intersector_p2 claimed boolean.topology_intersector_p3 claimed heal.face_props partial intersect.curve_class_p2 claimed intersect.curve_class_p3 partial intersect.curve_class_p4 claimed intersect.curve_class_p5 partial intersect.curve_class_p6 partial intersect.curve_class_p7 partial intersect.curve_class_p8 partial intersect.curve_class_p9 partial intersect.topology_solver_p2 partial query.face_p2 partial query.face_p4 claimed topology.brep_p2 claimed topology.brep_p7 claimed topology.face_p1 partial topology.face_p2 partial topology.face_p4 claimed topology.proto_topology_p1 partial topology.proto_topology_p2 partial topology.proto_topology_p3 partial
Soft dependents: blend.fillet_geom_p1 claimed blend.fillet_geom_p6 todo blend.fillet_solver_p1 claimed blend.fillet_solver_p2 todo primitive.primitive_creation_p3 todo query.face_p3 claimed topology.face_p3 claimed topology.trimming_tools partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmCurveInterval::SmCurveInterval | SmCurveClass.h:166 | 8 | [CurveInterval] |
SmCurveInterval::SmCurveInterval | SmCurveClass.h:175 | 9 | [CurveInterval] |
SmCurveInterval::ReSet | SmCurveClass.h:186 | 5 | [CurveInterval::reset] |
SmCurveInterval::SetInterval | SmCurveClass.h:192 | 2 | [CurveInterval::set_interval] |
SmCurveInterval::operator= | SmCurveClass.h:197 | 9 | Clone / Copy (derived) |
SmCurveInterval::SetIntervalMin | SmCurveClass.h:212 | 1 | [CurveInterval::set_interval_min], [CurveInterval::set_interval_max] |
SmCurveInterval::SetIntervalMax | SmCurveClass.h:213 | 1 | [CurveInterval::set_interval_min], [CurveInterval::set_interval_max] |
SmCurveInterval::GetCurveClassification | SmCurveClass.h:218 | 1 | |
SmCurveInterval::GetInterval | SmCurveClass.h:220 | 1 | [CurveInterval::interval], [CurveInterval::min], [CurveInterval::max] |
SmCurveInterval::GetMin | SmCurveClass.h:221 | 1 | [CurveInterval::interval], [CurveInterval::min], [CurveInterval::max] |
SmCurveInterval::GetMax | SmCurveClass.h:222 | 1 | [CurveInterval::interval], [CurveInterval::min], [CurveInterval::max] |
SmCurveClassification::GetSize | SmCurveClass.h:463 | 1 | [CurveClassification::size] |
SmCurveClassification::GetFace | SmCurveClass.h:466 | 1 | [CurveClassification::face] |
SmCurveClassification::GetSurface1 | SmCurveClass.h:467 | 1 | [CurveClassification::surface1], [CurveClassification::surface2] |
SmCurveClassification::GetSurface2 | SmCurveClass.h:468 | 1 | [CurveClassification::surface1], [CurveClassification::surface2] |
SmCurveClassification::GetCurve | SmCurveClass.h:469 | 1 | [CurveClassification::curve] |
SmCurveClassification::GetInterval | SmCurveClass.h:470 | 1 | [CurveInterval::interval], [CurveInterval::min], [CurveInterval::max] |
SmCurveClassification::GetSubInterval | SmCurveClass.h:471 | 3 | [CurveClassification::sub_interval] |
SmCurveClassification::GetUVCurve1 | SmCurveClass.h:474 | 1 | [CurveClassification::uv_curve1], [CurveClassification::uv_curve2] |
SmCurveClassification::GetUVCurve2 | SmCurveClass.h:475 | 1 | [CurveClassification::uv_curve1], [CurveClassification::uv_curve2] |
SmCurveClassification::GetAnyUVCurve1 | SmCurveClass.h:476 | 1 | [CurveClassification::any_uv_curve1], [CurveClassification::any_uv_curve2] |
SmCurveClassification::GetAnyUVCurve2 | SmCurveClass.h:477 | 1 | [CurveClassification::any_uv_curve1], [CurveClassification::any_uv_curve2] |
SmCurveClassification::GetTopologyIntersector | SmCurveClass.h:478 | 1 | [CurveClassification::topology_intersector] |
SmCurveClassification::GetIsCurveCurrent | SmCurveClass.h:480 | 1 | [CurveClassification::is_curve_current] |
SmCurveClassification::GetIgnoreTangency | SmCurveClass.h:481 | 1 | [CurveClassification::ignore_tangency] |
SmCurveClassification::GetDoingCrossHatch | SmCurveClass.h:482 | 1 | [CurveClassification::doing_cross_hatch] |
SmCurveClassification::GetDoingFillets | SmCurveClass.h:483 | 1 | [CurveClassification::doing_fillets] |
SmCurveClassification::GetOtherClassification | SmCurveClass.h:484 | 1 | [CurveClassification::other_classification] |
SmCurveClassification::GetOKToSetTolerance | SmCurveClass.h:485 | 1 | [CurveClassification::ok_to_set_tolerance] |
SmCurveClassification::GetTgtLoopsOnly | SmCurveClass.h:488 | 1 | [CurveClassification::tgt_loops_only], [CurveClassification::set_tgt_loops_only] |
SmCurveClassification::SetTgtLoopsOnly | SmCurveClass.h:489 | 1 | [CurveClassification::tgt_loops_only], [CurveClassification::set_tgt_loops_only] |
SmCurveClassification::GetTgtLoops | SmCurveClass.h:490 | 1 | [CurveClassification::tgt_loops], [CurveClassification::add_tgt_loop] |
SmCurveClassification::AddTgtLoop | SmCurveClass.h:491 | 1 | [CurveClassification::tgt_loops], [CurveClassification::add_tgt_loop] |
SmCurveClassification::GetSrcZoneTol3d | SmCurveClass.h:497 | 1 | [CurveClassification::src_zone_tol_3d] |
SmCurveClassification::GetAt | SmCurveClass.h:506 | 1 | [CurveClassification::at], [CurveClassification::at_mut] |
SmCurveClassification::operator[] | SmCurveClass.h:508 | 1 | [CurveClassification::at], [CurveClassification::at_mut] |
SmCurveClassification::operator[] | SmCurveClass.h:509 | 1 | [CurveClassification::at], [CurveClassification::at_mut] |
SmCurveClassification::SetSurface1 | SmCurveClass.h:584 | 1 | [CurveClassification::set_surface1], [CurveClassification::set_surface2] |
SmCurveClassification::SetSurface2 | SmCurveClass.h:585 | 1 | [CurveClassification::set_surface1], [CurveClassification::set_surface2] |
SmCurveClassification::SetFace | SmCurveClass.h:592 | 1 | [CurveClassification::set_face] |
SmCurveClassification::SetIgnoreTangency | SmCurveClass.h:594 | 1 | [CurveClassification::set_ignore_tangency] |
SmCurveClassification::SetIsCurveOwned | SmCurveClass.h:595 | 1 | [CurveClassification::set_is_curve_owned], [CurveClassification::is_curve_owned] |
SmCurveClassification::SetOKToSetTolerance | SmCurveClass.h:602 | 1 | [CurveClassification::set_ok_to_set_tolerance] |
SmCurveClassification::SetFilletData | SmCurveClass.h:611 | 5 | [CurveClassification::set_fillet_data] |
SmCurveClassification::GetType | SmCurveClass.h:879 | 1 | [CurveClassification::type_code], [CURVE_CLASSIFICATION_TYPE_STRING], [CurveClassification::is_kind_of] |
SmCurveClassification::GetTypeString | SmCurveClass.h:879 | 1 | [CurveClassification::type_code], [CURVE_CLASSIFICATION_TYPE_STRING], [CurveClassification::is_kind_of] |
SmTouchData::GetConnectedTouches | SmCurveClass.cpp:156 | 26 | [get_connected_touches] |
SmTouchData::GetWindingCount | SmCurveClass.cpp:203 | 26 | [get_winding_count] |
sm_SetXSectCurveThroughPoint | SmCurveClass.cpp:512 | 187 | [set_xsect_curve_through_point], [XSectThroughPoint] |
sm_SetXSectEdgeThroughPoint | SmCurveClass.cpp:726 | 235 | [set_xsect_edge_through_point] |
sm_GetCCISurfaceGaps | SmCurveClass.cpp:968 | 113 | [get_cci_surface_gaps], [CciSurfaceGaps] |
sm_GetCCIGeometry | SmCurveClass.cpp:1106 | 130 | [get_cci_geometry], [CciGeometry] |
sm_ApplyPointSolution | SmCurveClass.cpp:1247 | 379 | [apply_point_solution], [ApplyPointSolutionInput], [ApplyPointSolution] |
sm_MakeConsistentClassifications | SmCurveClass.cpp:3048 | 228 | [make_consistent_classifications] |
sm_GetCurveCurveAngle | SmCurveClass.cpp:3752 | 55 | [get_curve_curve_angle] |
sm_CullOrRefineCCIIn3d | SmCurveClass.cpp:3821 | 100 | [cull_or_refine_cci_in_3d] |
sm_ComputeFacePointClass | SmCurveClass.cpp:3937 | 108 | [compute_face_point_class] |
sm_GetXSectTol2dOr3d_ForClassifyPair | SmCurveClass.cpp:4076 | 37 | [xsect_tol_2d_or_3d_for_classify_pair] |
sm_ObjectDimension | SmCurveClass.cpp:4802 | 9 | [object_dimension] |
SmCurveClassification::SmCurveClassification | SmCurveClass.cpp:4828 | 34 | [CurveClassification] |
SmCurveClassification::~SmCurveClassification | SmCurveClass.cpp:5086 | 11 | Drop (implicit) |
SmCurveClassification::GetClassifyCrvLoc | SmCurveClass.cpp:5191 | 24 | [CurveClassification::classify_crv_loc] |
SmCurveClassification::SetCurve | SmCurveClass.cpp:5267 | 16 | [CurveClassification::set_curve] |
SmCurveClassification::SetIntersectData | SmCurveClass.cpp:5289 | 17 | [CurveClassification::set_intersect_data] |
SmCurveClassification::SetIsCurveCurrent | SmCurveClass.cpp:5312 | 9 | [CurveClassification::set_is_curve_current] |
SmCurveClassification::RemoveAt | SmCurveClass.cpp:5378 | 23 | [CurveClassification::remove_at] |
SmCurveClassification::SetSize | SmCurveClass.cpp:5409 | 111 | [CurveClassification::set_size], [MAX_INTERVALS] |
SmCurveClassification::SetPointClassParameters | SmCurveClass.cpp:5706 | 57 | [CurveClassification::set_point_class_parameters] |
SmCurveClassification::FindBestSqueezeEnd | SmCurveClass.cpp:6155 | 44 | [CurveClassification::find_best_squeeze_end] |
SmCurveClassification::IsReferenced | SmCurveClass.cpp:7043 | 24 | [CurveClassification::is_referenced] |
SmCurveClassification::IsKindOf | SmCurveClass.cpp:19931 | 4 | [CurveClassification::type_code], [CURVE_CLASSIFICATION_TYPE_STRING], [CurveClassification::is_kind_of] |
Module file-header table (68 rows)
| Rust | Upstream |
|---|---|
[IntervalPosition] | SmIntervalPositionType |
[CrvDirOnFaceType] | SmCrvDirOnFaceType |
[TouchData] | SmTouchData |
[get_connected_touches] | SmTouchData::GetConnectedTouches |
[get_winding_count] | SmTouchData::GetWindingCount |
[CurveInterval] | SmCurveInterval |
[CurveInterval::new], [CurveInterval::with_interval] | SmCurveInterval(ctx, owner), SmCurveInterval(ivl, ctx, owner) |
[CurveInterval::reset] | SmCurveInterval::ReSet |
[CurveInterval::set_interval] | SmCurveInterval::SetInterval |
Clone / Copy (derived) | SmCurveInterval::operator= |
[CurveInterval::set_interval_min], [CurveInterval::set_interval_max] | SetIntervalMin, SetIntervalMax (private) |
[CurveInterval::interval], [CurveInterval::min], [CurveInterval::max] | GetInterval, GetMin, GetMax |
[CurveClassification] | SmCurveClassification |
[CurveClassification::new] | SmCurveClassification() |
Drop (implicit) | ~SmCurveClassification |
[CurveClassification::size] | GetSize |
[CurveClassification::face] | GetFace |
[CurveClassification::surface1], [CurveClassification::surface2] | GetSurface1, GetSurface2 |
[CurveClassification::curve] | GetCurve |
[CurveClassification::set_interval] | SetInterval (inline) |
[CurveClassification::interval] | GetInterval |
[CurveClassification::sub_interval] | GetSubInterval |
[CurveClassification::uv_curve1], [CurveClassification::uv_curve2] | GetUVCurve1, GetUVCurve2 |
[CurveClassification::any_uv_curve1], [CurveClassification::any_uv_curve2] | GetAnyUVCurve1, GetAnyUVCurve2 |
[CurveClassification::topology_intersector] | GetTopologyIntersector |
[CurveClassification::is_curve_current] | GetIsCurveCurrent |
[CurveClassification::ignore_tangency] | GetIgnoreTangency |
[CurveClassification::set_doing_cross_hatch] | SetDoingCrossHatch |
[CurveClassification::doing_cross_hatch] | GetDoingCrossHatch |
[CurveClassification::doing_fillets] | GetDoingFillets |
[CurveClassification::other_classification] | GetOtherClassification |
[CurveClassification::ok_to_set_tolerance] | GetOKToSetTolerance |
[CurveClassification::tgt_loops_only], [CurveClassification::set_tgt_loops_only] | GetTgtLoopsOnly, SetTgtLoopsOnly |
[CurveClassification::tgt_loops], [CurveClassification::add_tgt_loop] | GetTgtLoops, AddTgtLoop |
[CurveClassification::src_zone_tol_3d] | GetSrcZoneTol3d (private) |
[CurveClassification::set_src_zone_tol_3d] | SetSrcZoneTol3d (private; through SmTol::SetZoneTol3d) |
[CurveClassification::at], [CurveClassification::at_mut] | GetAt, operator[] |
[CurveClassification::set_surface1], [CurveClassification::set_surface2] | SetSurface1, SetSurface2 |
[CurveClassification::set_face] | SetFace |
[CurveClassification::set_ignore_tangency] | SetIgnoreTangency |
[CurveClassification::set_is_curve_owned], [CurveClassification::is_curve_owned] | SetIsCurveOwned, m_bIsCurveOwned |
[CurveClassification::set_ok_to_set_tolerance] | SetOKToSetTolerance |
[CurveClassification::set_fillet_data] | SetFilletData |
[CurveClassification::set_uv_curve1], [CurveClassification::set_uv_curve2] | SetUVCurve1, SetUVCurve2 (no plan unit: unreachable from the entry points) |
[CurveClassification::type_code], [CURVE_CLASSIFICATION_TYPE_STRING], [CurveClassification::is_kind_of] | GetType, GetTypeString, IsKindOf |
[CurveClassification::classify_crv_loc] | GetClassifyCrvLoc(const SmPointClassification*, double) |
[CurveClassification::set_curve] | SetCurve |
[CurveClassification::set_intersect_data] | SetIntersectData |
[CurveClassification::set_is_curve_current] | SetIsCurveCurrent |
[CurveClassification::remove_at] | RemoveAt |
[CurveClassification::set_size], [MAX_INTERVALS] | SetSize |
[CurveClassification::set_point_class_parameters] | SetPointClassParameters |
[CurveClassification::find_best_squeeze_end] | FindBestSqueezeEnd |
[CurveClassification::is_referenced] | IsReferenced |
[src_zone_tol_3d_of] | SmTol::GetSrcZoneTol3d(const SmCurveClassification*), SmTol::GetSrcZoneTol3d(const SmCurveInterval*) |
[interval_obj_zone_tol_3d] | SmTol::GetObjZoneTol3d(const SmCurveInterval*) |
ScaledZero for CurveInterval | SmTol::GetScaledZero(const SmCurveInterval&) |
[set_xsect_curve_through_point], [XSectThroughPoint] | sm_SetXSectCurveThroughPoint (static) |
[set_xsect_edge_through_point] | sm_SetXSectEdgeThroughPoint (static) |
[get_cci_surface_gaps], [CciSurfaceGaps] | sm_GetCCISurfaceGaps (static) |
[get_cci_geometry], [CciGeometry] | sm_GetCCIGeometry (static) |
[apply_point_solution], [ApplyPointSolutionInput], [ApplyPointSolution] | sm_ApplyPointSolution (static) |
[make_consistent_classifications] | sm_MakeConsistentClassifications (static) |
[get_curve_curve_angle] | sm_GetCurveCurveAngle (static) |
[cull_or_refine_cci_in_3d] | sm_CullOrRefineCCIIn3d (static) |
[compute_face_point_class] | sm_ComputeFacePointClass (static) |
[xsect_tol_2d_or_3d_for_classify_pair] | sm_GetXSectTol2dOr3d_ForClassifyPair |
[object_dimension] | sm_ObjectDimension (static) |
Upstream tests reaching this unit
prog_test:my_test_extent3d, prog_test:my_test_vector2d, 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