Units / intersect
intersect.surface_drop_lib_p1 partial
- Layer
- 31
- Upstream lines
- 1,478
- Functions
- 15
- Rust module
intersect::surface_drop_lib::p1
Source: crates/solidcore/src/intersect/surface_drop_lib/p1.rs
Upstream: source/SMLib/src/SmSurfaceDropLib.cpp
Notes
15 fns; largest: SmSurface::DropIsoCurve, SmDropPt::TestSpanAccuracy, SmDropPt::CheckSeamJump, SmDropPt::IsMovingAlongBoundary; unit-SCC #22 (220 units); 317 upstream test entry points reach this unit; PARTIAL: smsurf_IsPointOnNormal wired to surface.surface_p3 (PR #52): 1862 cases, 1847 pass bit-identical, 0 failed, 15 deferred (intersect.surface_drop_curve 15), perturb 1847/1847 detected; earlier PARTIAL (PR #98): difftest 1862 cases (34 fixture cases on the shapes of TestSmCreateRectangle, my_test_coaxial_merge_orientation and my_test_reversed_line_join, 328 review fixtures on poles (cone apex, spheres r=1 and r=1e3, both swaps) and a B-spline with a collapsed u=0 edge: moving, span, seam, iso, fix_curves, dups, 1500 generated: SmDropPt ctor/operator=/SetUninitialized/IsGoodTangentDrop, IsMovingAlongBoundary on planes, B-spline (height field, bilinear, closed rational cylinder) and SmSurfOfRevolution boundaries and seams, TestSpanAccuracy, CheckSeamJump snaps and SM_ERR_OUTSIDE_OF_DOMAIN, FixBoundaryTangents, the span stack, sm_FixBoundaryCurves, sm_RemoveDuplicateDropPointSolutions, DropIsoCurve on SmLine/SmCircle/SmBSplineCurve, DropAndTrimCurve; scales 1e-3..1e3), 1683 pass bit-identical (max_rel_err 0), 179 deferred (surface.surface_p3 164: smsurf_IsPointOnNormal in TestSpanAccuracy, co-ported in open PR #49/#52; intersect.surface_drop_curve 15: SmSurfaceDropCurve::DoTrace in DropAndTrimCurve); --perturb SENSITIVE 1683/1683. UNPORTED stubs: smsurf_IsPointOnNormal (surface.surface_p3), SmSurfaceDropCurve::SetCurveIsOnSurface/DoTrace (intersect.surface_drop_curve). Wired: SmSurface::DropAndTrimCurve in intersect.surface_intersector_p3. Rejected by the shim and errors in Rust: a failed evaluation whose status IsMovingAlongBoundary / the TestSpanAccuracy domain clamp ignore (upstream goes on with SM_UNDEF_DOUBLE defaults or partial writes; that path is not ported, and no generated or review case reaches it) and sm_FixBoundaryCurves on 3k points (reads past the array, undefined). DropIsoCurve with more than 100 knots (dKnots[100] growth) is not difftested: the FFI caps ncp at 64.
Difftest
- Cases
- 1,862
- Passed
- 1,847
- Deferred
- 15
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
intersect.surface_drop_curve partial | 15 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.extent1d green geom.extent2d green geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green surface.surface_p1 partial surface.surface_p2 partial surface.surface_p3 green surface.surface_p7 partial
Soft dependencies: curve.hermite_curve green geom.geom_utility_p1 green
Dependents: intersect.surface_drop_lib_p2 green intersect.surface_drop_lib_p3 claimed
Soft dependents: boolean.topology_intersector_p3 claimed intersect.surface_drop_curve partial intersect.surface_intersector_p3 partial offset.offset_geometry_creation claimed topology.brep_p9 claimed topology.edgeuse_p3 claimed
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmDropPt::SmDropPt | SmSurfaceDropLib.cpp:113 | 5 | [DropPt::new] |
SmDropPt::operator= | SmSurfaceDropLib.cpp:134 | 28 | Clone / [DropPt::assign] |
SmDropPt::SetUninitialized | SmSurfaceDropLib.cpp:163 | 25 | [DropPt::set_uninitialized] |
SmDropPt::IsGoodTangentDrop | SmSurfaceDropLib.cpp:192 | 10 | [DropPt::is_good_tangent_drop] |
SmDropPt::IsMovingAlongBoundary | SmSurfaceDropLib.cpp:551 | 192 | [DropPt::is_moving_along_boundary] |
SmDropPt::TestSpanAccuracy | SmSurfaceDropLib.cpp:758 | 232 | [DropPt::test_span_accuracy], [SpanAccuracy] |
SmDropPt::CheckSeamJump | SmSurfaceDropLib.cpp:1953 | 197 | [DropPt::check_seam_jump] |
SmDropPt::FixBoundaryTangents | SmSurfaceDropLib.cpp:2171 | 86 | [DropPt::fix_boundary_tangents] |
sm_PushPoint | SmSurfaceDropLib.cpp:2961 | 16 | [push_point] |
sm_PopStack | SmSurfaceDropLib.cpp:2990 | 24 | [pop_stack] |
sm_StackLook | SmSurfaceDropLib.cpp:3026 | 21 | [stack_look] |
sm_FixBoundaryCurves | SmSurfaceDropLib.cpp:3079 | 182 | [fix_boundary_curves] |
sm_RemoveDuplicateDropPointSolutions | SmSurfaceDropLib.cpp:3269 | 40 | [remove_duplicate_drop_point_solutions] |
SmSurface::DropAndTrimCurve | SmSurfaceDropLib.cpp:6284 | 133 | [Surface::drop_and_trim_curve], [DropAndTrim], [DropFailRecord] |
SmSurface::DropIsoCurve | SmSurfaceDropLib.cpp:6435 | 287 | [Surface::drop_iso_curve], [IsoDrop] |
Module file-header table (16 rows)
| Rust | Upstream |
|---|---|
[DropPt] | SmDropPt (file-local class) |
[DropPt::new] | SmDropPt::SmDropPt(dT, bDegenCurve) |
Clone / [DropPt::assign] | SmDropPt::operator= |
[DropPt::set_uninitialized] | SmDropPt::SetUninitialized |
[DropPt::is_good_tangent_drop] | SmDropPt::IsGoodTangentDrop |
[DropPt::is_moving_along_boundary] | SmDropPt::IsMovingAlongBoundary |
[DropPt::test_span_accuracy], [SpanAccuracy] | SmDropPt::TestSpanAccuracy |
[DropPt::check_seam_jump] | SmDropPt::CheckSeamJump |
[DropPt::fix_boundary_tangents] | SmDropPt::FixBoundaryTangents |
[push_point] | sm_PushPoint (static) |
[pop_stack] | sm_PopStack (static) |
[stack_look] | sm_StackLook (static) |
[fix_boundary_curves] | sm_FixBoundaryCurves (static) |
[remove_duplicate_drop_point_solutions] | sm_RemoveDuplicateDropPointSolutions (static) |
[Surface::drop_and_trim_curve], [DropAndTrim], [DropFailRecord] | SmSurface::DropAndTrimCurve |
[Surface::drop_iso_curve], [IsoDrop] | SmSurface::DropIsoCurve |
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