solidcore

Units / surface

surface.surf_of_revolution_p2 partial

Layer
25
Upstream lines
1,369
Functions
8
Rust module
surface::surf_of_revolution::p2

Source: crates/solidcore/src/surface/surf_of_revolution/p2.rs

Upstream: source/SMLib/src/SmSurfOfRevolution.cpp

Notes

PARTIAL: difftest 1167 cases (267 fixture + 900 generated), 1099 passed, 0 failed, 68 deferred: intersect.surface_intersector_p5 51 (GlobalSurfaceIntersect falling back to SmSurface::GlobalSurfaceIntersect, whose SmAdvSurfaceIntersector is built and then needs SmSurfaceIntersector::DoIntersection; base body in surface::surface::p2::base_global_surface_intersect; the plane cases reach it since surface.plane_p2 merged), surface.surface_p4 15 and surface.surface_p5 2 (SmSurface::GlobalPointSolve / LocalPointSolve of STEPInversion for a non-planar generator and of the conversions without exact polar conversion). Perturbation: 1099/1099 detected. Back-edges wired: SmSurfOfRevolution::STEPInversion/AdjustSTEPUVDomain/TrimWithDomain/GlobalSurfaceIntersect in surface::surface::p2 and in surface::cone::p1 (Cone::adjust_step_uv_domain takes a kernel; Cone::rev_step_inversion now calls SurfOfRevolution::step_inversion_with_outputs, replacing the CO-PORTED copy) (Surface::step_inversion, adjust_step_uv_domain, trim_with_domain and global_surface_intersect now take the kernel). Also fixed in nurbs.b_spline_surface_p2: BSplineSurface::create_surf_of_revolution now implements the given-sweep-circle branch (copy, scale, move the circle) that CreateOffsetSurface needs; it takes a kernel. Not covered by the difftest: IsNurbSurfaceSurfOfRevolution of a plane or sphere/cone (not ported), CreateOffsetSurface of a non-B-spline generator (unreachable). CO-PORTED in surface.surf_of_revolution_p1 (PR #15): SmSurfOfRevolution::CreateCanonical and ::MakeNurb live in surface::surf_of_revolution::p1 (SurfOfRevolution::create_canonical / make_nurb), covered by the p1 difftest runner. Do not re-port; move or extend them there. 8 fns; largest: SmSurfOfRevolution::CreateOffsetSurface, SmSurfOfRevolution::IsNurbSurfaceSurfOfRevolution, SmSurfOfRevolution::TrimWithDomain, SmSurfOfRevolution::STEPInversion; unit-SCC #22 (220 units); 317 upstream test entry points reach this unit intersect.surface_intersector_p5 wired (PR #82): base_global_surface_intersect runs DoIntersection, whose surface caches defer at SmSurface::CalculateContinuities (surface.surface_p6); now 1167 cases, 1099 pass, 68 deferred (surface.surface_p6 51, surface.surface_p4 15, surface.surface_p5 2). [surface.surface_p6 wired (PR #92): 1167 cases, 1110 pass, 57 deferred (surface.surface_cache_p1 30, surface.surface_p11 10, surface.surface_p4 15, surface.surface_p5 2)] surface.surface_p11 (PR #120, after merging main with surface.surface_p3): cases=1167 passed=1134 failed=0 deferred=33 (intersect.surface_intersector_p2 3, surface.surface_cache_p1 30); --perturb SENSITIVE.

Difftest

Cases
1,167
Passed
1,134
Deferred
33
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
surface.surface_cache_p1 green30
intersect.surface_intersector_p2 partial3

Report JSON (per-case results)

Dependencies

Depends on: geom.axis2_placement green geom.extent1d green geom.extent2d green geom.object partial geom.solution_array partial geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green nurbs.b_spline_curve_p2 green nurbs.b_spline_surface_n_lib_p1 green nurbs.b_spline_surface_p1 green nurbs.b_spline_surface_p2 partial surface.surf_of_revolution_p1 green surface.surf_of_revolution_p3 partial surface.surface_p2 partial

Soft dependencies: curve.composite_curve_p1 green curve.composite_curve_p2 green curve.curve_p2 green curve.curve_p4 partial curve.curve_p5 partial curve.curve_p6 green curve.curve_p8 green curve.line green geom.extent3d green geom.geom_utility_p1 green geom.tol green nurbs.b_spline_curve_n_lib green

Dependents: surface.sphere green

Soft dependents: blend.fillet_solver_p2 todo blend.fillet_solver_p5 claimed primitive.primitive_creation_p3 todo

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmSurfOfRevolution::AdjustSTEPUVDomainSmSurfOfRevolution.cpp:30079[SurfOfRevolution::adjust_step_uv_domain]
SmSurfOfRevolution::STEPInversionSmSurfOfRevolution.cpp:484144[SurfOfRevolution::step_inversion]
SmSurfOfRevolution::CreateCanonicalSmSurfOfRevolution.cpp:63977[SurfOfRevolution::create_canonical]
SmSurfOfRevolution::MakeNurbSmSurfOfRevolution.cpp:9406[SurfOfRevolution::make_nurb]
SmSurfOfRevolution::CreateOffsetSurfaceSmSurfOfRevolution.cpp:1244334[SurfOfRevolution::create_offset_surface]
SmSurfOfRevolution::GlobalSurfaceIntersectSmSurfOfRevolution.cpp:3020109[SurfOfRevolution::global_surface_intersect]
SmSurfOfRevolution::IsNurbSurfaceSurfOfRevolutionSmSurfOfRevolution.cpp:4594315[SurfOfRevolution::is_nurb_surface_surf_of_revolution]
SmSurfOfRevolution::TrimWithDomainSmSurfOfRevolution.cpp:5443305[SurfOfRevolution::trim_with_domain]
Module file-header table (8 rows)
RustUpstream
[SurfOfRevolution::adjust_step_uv_domain]AdjustSTEPUVDomain
[SurfOfRevolution::step_inversion]STEPInversion
[SurfOfRevolution::create_canonical]CreateCanonical (co-ported in p1)
[SurfOfRevolution::make_nurb]MakeNurb (co-ported in p1)
[SurfOfRevolution::create_offset_surface]CreateOffsetSurface
[SurfOfRevolution::global_surface_intersect]GlobalSurfaceIntersect
[SurfOfRevolution::is_nurb_surface_surf_of_revolution]IsNurbSurfaceSurfOfRevolution
[SurfOfRevolution::trim_with_domain]TrimWithDomain

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