solidcore

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 unitDeferred cases
curve.crv_on_surf partial24
curve.iso_curve green22
topology.face_p2 partial12
topology.edge partial11
intersect.curve_class_p4 claimed6
topology.vertex partial2

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 functionDefined atLinesRust (from the file header)
SmCurveInterval::SmCurveIntervalSmCurveClass.h:1668[CurveInterval]
SmCurveInterval::SmCurveIntervalSmCurveClass.h:1759[CurveInterval]
SmCurveInterval::ReSetSmCurveClass.h:1865[CurveInterval::reset]
SmCurveInterval::SetIntervalSmCurveClass.h:1922[CurveInterval::set_interval]
SmCurveInterval::operator=SmCurveClass.h:1979Clone / Copy (derived)
SmCurveInterval::SetIntervalMinSmCurveClass.h:2121[CurveInterval::set_interval_min], [CurveInterval::set_interval_max]
SmCurveInterval::SetIntervalMaxSmCurveClass.h:2131[CurveInterval::set_interval_min], [CurveInterval::set_interval_max]
SmCurveInterval::GetCurveClassificationSmCurveClass.h:2181
SmCurveInterval::GetIntervalSmCurveClass.h:2201[CurveInterval::interval], [CurveInterval::min], [CurveInterval::max]
SmCurveInterval::GetMinSmCurveClass.h:2211[CurveInterval::interval], [CurveInterval::min], [CurveInterval::max]
SmCurveInterval::GetMaxSmCurveClass.h:2221[CurveInterval::interval], [CurveInterval::min], [CurveInterval::max]
SmCurveClassification::GetSizeSmCurveClass.h:4631[CurveClassification::size]
SmCurveClassification::GetFaceSmCurveClass.h:4661[CurveClassification::face]
SmCurveClassification::GetSurface1SmCurveClass.h:4671[CurveClassification::surface1], [CurveClassification::surface2]
SmCurveClassification::GetSurface2SmCurveClass.h:4681[CurveClassification::surface1], [CurveClassification::surface2]
SmCurveClassification::GetCurveSmCurveClass.h:4691[CurveClassification::curve]
SmCurveClassification::GetIntervalSmCurveClass.h:4701[CurveInterval::interval], [CurveInterval::min], [CurveInterval::max]
SmCurveClassification::GetSubIntervalSmCurveClass.h:4713[CurveClassification::sub_interval]
SmCurveClassification::GetUVCurve1SmCurveClass.h:4741[CurveClassification::uv_curve1], [CurveClassification::uv_curve2]
SmCurveClassification::GetUVCurve2SmCurveClass.h:4751[CurveClassification::uv_curve1], [CurveClassification::uv_curve2]
SmCurveClassification::GetAnyUVCurve1SmCurveClass.h:4761[CurveClassification::any_uv_curve1], [CurveClassification::any_uv_curve2]
SmCurveClassification::GetAnyUVCurve2SmCurveClass.h:4771[CurveClassification::any_uv_curve1], [CurveClassification::any_uv_curve2]
SmCurveClassification::GetTopologyIntersectorSmCurveClass.h:4781[CurveClassification::topology_intersector]
SmCurveClassification::GetIsCurveCurrentSmCurveClass.h:4801[CurveClassification::is_curve_current]
SmCurveClassification::GetIgnoreTangencySmCurveClass.h:4811[CurveClassification::ignore_tangency]
SmCurveClassification::GetDoingCrossHatchSmCurveClass.h:4821[CurveClassification::doing_cross_hatch]
SmCurveClassification::GetDoingFilletsSmCurveClass.h:4831[CurveClassification::doing_fillets]
SmCurveClassification::GetOtherClassificationSmCurveClass.h:4841[CurveClassification::other_classification]
SmCurveClassification::GetOKToSetToleranceSmCurveClass.h:4851[CurveClassification::ok_to_set_tolerance]
SmCurveClassification::GetTgtLoopsOnlySmCurveClass.h:4881[CurveClassification::tgt_loops_only], [CurveClassification::set_tgt_loops_only]
SmCurveClassification::SetTgtLoopsOnlySmCurveClass.h:4891[CurveClassification::tgt_loops_only], [CurveClassification::set_tgt_loops_only]
SmCurveClassification::GetTgtLoopsSmCurveClass.h:4901[CurveClassification::tgt_loops], [CurveClassification::add_tgt_loop]
SmCurveClassification::AddTgtLoopSmCurveClass.h:4911[CurveClassification::tgt_loops], [CurveClassification::add_tgt_loop]
SmCurveClassification::GetSrcZoneTol3dSmCurveClass.h:4971[CurveClassification::src_zone_tol_3d]
SmCurveClassification::GetAtSmCurveClass.h:5061[CurveClassification::at], [CurveClassification::at_mut]
SmCurveClassification::operator[]SmCurveClass.h:5081[CurveClassification::at], [CurveClassification::at_mut]
SmCurveClassification::operator[]SmCurveClass.h:5091[CurveClassification::at], [CurveClassification::at_mut]
SmCurveClassification::SetSurface1SmCurveClass.h:5841[CurveClassification::set_surface1], [CurveClassification::set_surface2]
SmCurveClassification::SetSurface2SmCurveClass.h:5851[CurveClassification::set_surface1], [CurveClassification::set_surface2]
SmCurveClassification::SetFaceSmCurveClass.h:5921[CurveClassification::set_face]
SmCurveClassification::SetIgnoreTangencySmCurveClass.h:5941[CurveClassification::set_ignore_tangency]
SmCurveClassification::SetIsCurveOwnedSmCurveClass.h:5951[CurveClassification::set_is_curve_owned], [CurveClassification::is_curve_owned]
SmCurveClassification::SetOKToSetToleranceSmCurveClass.h:6021[CurveClassification::set_ok_to_set_tolerance]
SmCurveClassification::SetFilletDataSmCurveClass.h:6115[CurveClassification::set_fillet_data]
SmCurveClassification::GetTypeSmCurveClass.h:8791[CurveClassification::type_code], [CURVE_CLASSIFICATION_TYPE_STRING], [CurveClassification::is_kind_of]
SmCurveClassification::GetTypeStringSmCurveClass.h:8791[CurveClassification::type_code], [CURVE_CLASSIFICATION_TYPE_STRING], [CurveClassification::is_kind_of]
SmTouchData::GetConnectedTouchesSmCurveClass.cpp:15626[get_connected_touches]
SmTouchData::GetWindingCountSmCurveClass.cpp:20326[get_winding_count]
sm_SetXSectCurveThroughPointSmCurveClass.cpp:512187[set_xsect_curve_through_point], [XSectThroughPoint]
sm_SetXSectEdgeThroughPointSmCurveClass.cpp:726235[set_xsect_edge_through_point]
sm_GetCCISurfaceGapsSmCurveClass.cpp:968113[get_cci_surface_gaps], [CciSurfaceGaps]
sm_GetCCIGeometrySmCurveClass.cpp:1106130[get_cci_geometry], [CciGeometry]
sm_ApplyPointSolutionSmCurveClass.cpp:1247379[apply_point_solution], [ApplyPointSolutionInput], [ApplyPointSolution]
sm_MakeConsistentClassificationsSmCurveClass.cpp:3048228[make_consistent_classifications]
sm_GetCurveCurveAngleSmCurveClass.cpp:375255[get_curve_curve_angle]
sm_CullOrRefineCCIIn3dSmCurveClass.cpp:3821100[cull_or_refine_cci_in_3d]
sm_ComputeFacePointClassSmCurveClass.cpp:3937108[compute_face_point_class]
sm_GetXSectTol2dOr3d_ForClassifyPairSmCurveClass.cpp:407637[xsect_tol_2d_or_3d_for_classify_pair]
sm_ObjectDimensionSmCurveClass.cpp:48029[object_dimension]
SmCurveClassification::SmCurveClassificationSmCurveClass.cpp:482834[CurveClassification]
SmCurveClassification::~SmCurveClassificationSmCurveClass.cpp:508611Drop (implicit)
SmCurveClassification::GetClassifyCrvLocSmCurveClass.cpp:519124[CurveClassification::classify_crv_loc]
SmCurveClassification::SetCurveSmCurveClass.cpp:526716[CurveClassification::set_curve]
SmCurveClassification::SetIntersectDataSmCurveClass.cpp:528917[CurveClassification::set_intersect_data]
SmCurveClassification::SetIsCurveCurrentSmCurveClass.cpp:53129[CurveClassification::set_is_curve_current]
SmCurveClassification::RemoveAtSmCurveClass.cpp:537823[CurveClassification::remove_at]
SmCurveClassification::SetSizeSmCurveClass.cpp:5409111[CurveClassification::set_size], [MAX_INTERVALS]
SmCurveClassification::SetPointClassParametersSmCurveClass.cpp:570657[CurveClassification::set_point_class_parameters]
SmCurveClassification::FindBestSqueezeEndSmCurveClass.cpp:615544[CurveClassification::find_best_squeeze_end]
SmCurveClassification::IsReferencedSmCurveClass.cpp:704324[CurveClassification::is_referenced]
SmCurveClassification::IsKindOfSmCurveClass.cpp:199314[CurveClassification::type_code], [CURVE_CLASSIFICATION_TYPE_STRING], [CurveClassification::is_kind_of]
Module file-header table (68 rows)
RustUpstream
[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 CurveIntervalSmTol::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