Units / surface
surface.surf_of_revolution_p1 green
- Layer
- 23
- Upstream lines
- 1,522
- Functions
- 31
- Rust module
surface::surf_of_revolution::p1
Source: crates/solidcore/src/surface/surf_of_revolution/p1.rs
Upstream: source/SMLib/inc/SmSurfOfRevolution.h, source/SMLib/src/SmSurfOfRevolution.cpp
Notes
GREEN (promoted by surface.plane_p2, which ported the IntersectWithPlane body below the plane box; a bare plane's zone tolerance is SM_ZONE_TOL_3D): difftest 858 cases (258 fixture, incl. 51 IntersectWithPlane adversarial cases from the surface.plane_p2 review: small domains, a domain corner, tiny domain, partial sweep, swap/oob surfaces, flat generator, torus top tangent, SM_USE_DEFAULT and negative tolerances + 600 generated), 858 bit-identical (max_rel_err 0), 0 deferred; 20k-seed run clean; perturbation 858/858 detected. The plane tolerance goes through approx_tol3d as the shim's SmApproxTol3d does, and the FFI accepts any finite value. Co-ports CreateCanonical/MakeNurb (_p2) and MakeNurbWithSweepParams (_p3). The 4 UNPORTED(surface.surf_of_revolution_p1) stubs in line/ellipse/hyperbola/parabola MakeNurb stay: an owner ObjectRef cannot reach the surface (see findings.md). 31 fns; largest: SmSurfOfRevolution::IntersectWithPlane, sm_TestForIsoCircles, SmSurfOfRevolution::CreateIsoParametricCurve, SmSurfOfRevolution::EvaluateSTEP; cycle back-edges (call into later units; stub or co-port): surface.cone_p1(6), surface.sphere(3), surface.torus(3), surface.surface_p1(2), surface.plane_p1(1), surface.plane_p2(1), surface.surface_p5(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit PR #106: EvaluateSTEP accepts unequal derivative orders as release C++ does; sweep-only boundary iso evaluation is covered by p3's STEP/revolution regressions (the equal-order assertion mismatch is DOC-4). Review PR #106 recertification: 858 cases, 858 pass, 0 deferred, 0 failed, max_rel_err=0.0; deferred: none.
Difftest
- Cases
- 858
- Passed
- 858
- Deferred
- 0
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
Nothing: no deferred cases.
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green curve.ellipse_p1 green curve.ellipse_p2 green geom.axis2_placement green geom.extent1d green geom.extent2d green geom.geom_utility_p1 green geom.object partial geom.pseudo_box green geom.solution_array partial geom.tol green 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.surface_p2 partial
Soft dependencies: curve.curve_p4 partial curve.curve_p5 partial curve.curve_p6 green curve.curve_p7 green geom.geom_utility_p2 green nurbs.b_spline_curve_p3 partial
Dependents: blend.fillet_solver_p2 todo surface.cone_p1 green surface.cone_p2 claimed surface.cone_p3 partial surface.sphere green surface.surf_of_revolution_p2 partial surface.surf_of_revolution_p3 partial surface.torus green
Soft dependents: blend.fillet_geom_p4 todo blend.fillet_solver_p5 claimed surface.plane_p2 partial surface.surf_of_extrusion_p2 partial surface.surface_p1 partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmSurfOfRevolution::SmSurfOfRevolution | SmSurfOfRevolution.h:109 | 1 | [SurfOfRevolution], [SurfOfRevolution::new] |
SmSurfOfRevolution::GetSwapUV | SmSurfOfRevolution.h:223 | 1 | [SurfOfRevolution::swap_uv], [SurfOfRevolution::step_uv_domain], [SurfOfRevolution::start_angle_deg], [SurfOfRevolution::end_angle_deg], [SurfOfRevolution::gen_curve], [SurfOfRevolution::position], [SurfOfRevolution::have_polar_conversion] |
SmSurfOfRevolution::GetSTEPUVDomain | SmSurfOfRevolution.h:224 | 1 | [SurfOfRevolution::swap_uv], [SurfOfRevolution::step_uv_domain], [SurfOfRevolution::start_angle_deg], [SurfOfRevolution::end_angle_deg], [SurfOfRevolution::gen_curve], [SurfOfRevolution::position], [SurfOfRevolution::have_polar_conversion] |
SmSurfOfRevolution::GetStartAngleDeg | SmSurfOfRevolution.h:225 | 1 | [SurfOfRevolution::swap_uv], [SurfOfRevolution::step_uv_domain], [SurfOfRevolution::start_angle_deg], [SurfOfRevolution::end_angle_deg], [SurfOfRevolution::gen_curve], [SurfOfRevolution::position], [SurfOfRevolution::have_polar_conversion] |
SmSurfOfRevolution::GetEndAngleDeg | SmSurfOfRevolution.h:226 | 1 | [SurfOfRevolution::swap_uv], [SurfOfRevolution::step_uv_domain], [SurfOfRevolution::start_angle_deg], [SurfOfRevolution::end_angle_deg], [SurfOfRevolution::gen_curve], [SurfOfRevolution::position], [SurfOfRevolution::have_polar_conversion] |
SmSurfOfRevolution::GetGenCurve | SmSurfOfRevolution.h:231 | 1 | [SurfOfRevolution::swap_uv], [SurfOfRevolution::step_uv_domain], [SurfOfRevolution::start_angle_deg], [SurfOfRevolution::end_angle_deg], [SurfOfRevolution::gen_curve], [SurfOfRevolution::position], [SurfOfRevolution::have_polar_conversion] |
SmSurfOfRevolution::GetPosition | SmSurfOfRevolution.h:235 | 1 | [SurfOfRevolution::swap_uv], [SurfOfRevolution::step_uv_domain], [SurfOfRevolution::start_angle_deg], [SurfOfRevolution::end_angle_deg], [SurfOfRevolution::gen_curve], [SurfOfRevolution::position], [SurfOfRevolution::have_polar_conversion] |
SmSurfOfRevolution::HavePolarConversion | SmSurfOfRevolution.h:241 | 1 | [SurfOfRevolution::swap_uv], [SurfOfRevolution::step_uv_domain], [SurfOfRevolution::start_angle_deg], [SurfOfRevolution::end_angle_deg], [SurfOfRevolution::gen_curve], [SurfOfRevolution::position], [SurfOfRevolution::have_polar_conversion] |
SmSurfOfRevolution::SetContext | SmSurfOfRevolution.h:428 | 3 | [SurfOfRevolution::set_context], [SurfOfRevolution::toggle_swap_uv_bit], [SurfOfRevolution::set_out_of_bounds_enabled] |
SmSurfOfRevolution::ToggleSwapUVBit | SmSurfOfRevolution.h:439 | 1 | [SurfOfRevolution::set_context], [SurfOfRevolution::toggle_swap_uv_bit], [SurfOfRevolution::set_out_of_bounds_enabled] |
SmSurfOfRevolution::GetClassString | SmSurfOfRevolution.h:524 | 1 | [SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string] |
SmSurfOfRevolution::GetType | SmSurfOfRevolution.h:524 | 1 | [SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string] |
SmSurfOfRevolution::GetTypeString | SmSurfOfRevolution.h:524 | 1 | [SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string] |
SmSurfOfRevolution::~SmSurfOfRevolution | SmSurfOfRevolution.cpp:42 | 5 | Drop (implicit) |
SmSurfOfRevolution::operator== | SmSurfOfRevolution.cpp:54 | 31 | [SurfOfRevolution::approx_eq] |
SmSurfOfRevolution::SmSurfOfRevolution | SmSurfOfRevolution.cpp:94 | 64 | [SurfOfRevolution], [SurfOfRevolution::new] |
SmSurfOfRevolution::SmSurfOfRevolution | SmSurfOfRevolution.cpp:164 | 29 | [SurfOfRevolution], [SurfOfRevolution::new] |
SmSurfOfRevolution::RebuildPolarConverter | SmSurfOfRevolution.cpp:202 | 92 | rebuild_polar_converter (crate) |
SmSurfOfRevolution::GetMaxAnalyticDomain | SmSurfOfRevolution.cpp:750 | 11 | [SurfOfRevolution::max_analytic_domain] |
SmSurfOfRevolution::GetGenDirParamExtent | SmSurfOfRevolution.cpp:799 | 22 | [SurfOfRevolution::gen_dir_param_extent] |
SmSurfOfRevolution::CreateIsoParametricCurve | SmSurfOfRevolution.cpp:1653 | 157 | [SurfOfRevolution::create_iso_parametric_curve], [RevolutionIsoCurve] |
SmSurfOfRevolution::CreateDirectrixAtGeneratorParam | SmSurfOfRevolution.cpp:1821 | 96 | [SurfOfRevolution::create_directrix_at_generator_param], [DirectrixAtGeneratorParam] |
SmSurfOfRevolution::CreateGeneratorFromAngle | SmSurfOfRevolution.cpp:2029 | 50 | [SurfOfRevolution::create_generator_from_angle] |
SmSurfOfRevolution::ConvertUVFromNURBSToSTEP | SmSurfOfRevolution.cpp:2260 | 78 | [SurfOfRevolution::convert_uv_from_nurbs_to_step] |
SmSurfOfRevolution::EvaluateSTEP | SmSurfOfRevolution.cpp:2767 | 157 | [SurfOfRevolution::evaluate_step], [SurfOfRevolution::evaluate_step_point] |
SmSurfOfRevolution::EvaluateSTEPPoint | SmSurfOfRevolution.cpp:2946 | 67 | [SurfOfRevolution::evaluate_step], [SurfOfRevolution::evaluate_step_point] |
SmSurfOfRevolution::IntersectWithPlane | SmSurfOfRevolution.cpp:3135 | 364 | [SurfOfRevolution::intersect_with_plane] |
SmSurfOfRevolution::IsBounded | SmSurfOfRevolution.cpp:4572 | 7 | [SurfOfRevolution::is_bounded] |
SmSurfOfRevolution::TransformPointToStartPlane | SmSurfOfRevolution.cpp:5265 | 63 | [SurfOfRevolution::transform_point_to_start_plane] |
sm_TestForIsoCircles | SmSurfOfRevolution.cpp:5867 | 210 | [test_for_iso_circles], [IsoCircles] |
SmSurfOfRevolution::IsKindOf | SmSurfOfRevolution.cpp:6632 | 4 | [SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string] |
Module file-header table (22 rows)
| Rust | Upstream |
|---|---|
[SurfOfRevolution], [SurfOfRevolution::new] | SmSurfOfRevolution, SmSurfOfRevolution(pGenCurve, crOrigin, crXAxis, crYAxis, crAnalUVDomain, bSwapUV) |
[SurfOfRevolution::empty] | SmSurfOfRevolution() |
Clone | SmSurfOfRevolution(const SmSurfOfRevolution&) |
Drop (implicit) | ~SmSurfOfRevolution |
[SurfOfRevolution::approx_eq] | operator== |
[SurfOfRevolution::create_canonical] | CreateCanonical (co-ported from surface.surf_of_revolution_p2) |
[SurfOfRevolution::make_nurb], [SurfOfRevolution::make_nurb_with_sweep_params] | MakeNurb, MakeNurbWithSweepParams (co-ported from _p2, _p3) |
rebuild_polar_converter (crate) | RebuildPolarConverter |
[SurfOfRevolution::max_analytic_domain] | GetMaxAnalyticDomain |
[SurfOfRevolution::gen_dir_param_extent] | GetGenDirParamExtent |
[SurfOfRevolution::create_iso_parametric_curve], [RevolutionIsoCurve] | CreateIsoParametricCurve |
[SurfOfRevolution::create_directrix_at_generator_param], [DirectrixAtGeneratorParam] | CreateDirectrixAtGeneratorParam |
[SurfOfRevolution::create_generator_from_angle] | CreateGeneratorFromAngle |
[SurfOfRevolution::convert_uv_from_nurbs_to_step] | ConvertUVFromNURBSToSTEP |
[SurfOfRevolution::evaluate_step], [SurfOfRevolution::evaluate_step_point] | EvaluateSTEP, EvaluateSTEPPoint |
[SurfOfRevolution::intersect_with_plane] | IntersectWithPlane |
[SurfOfRevolution::is_bounded] | IsBounded |
[SurfOfRevolution::transform_point_to_start_plane] | TransformPointToStartPlane |
[SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string] | IsKindOf, GetType, GetTypeString, GetClassString (SM_COMMON) |
[SurfOfRevolution::swap_uv], [SurfOfRevolution::step_uv_domain], [SurfOfRevolution::start_angle_deg], [SurfOfRevolution::end_angle_deg], [SurfOfRevolution::gen_curve], [SurfOfRevolution::position], [SurfOfRevolution::have_polar_conversion] | GetSwapUV, GetSTEPUVDomain, GetStartAngleDeg, GetEndAngleDeg, GetGenCurve, GetPosition, HavePolarConversion (inline) |
[SurfOfRevolution::set_context], [SurfOfRevolution::toggle_swap_uv_bit], [SurfOfRevolution::set_out_of_bounds_enabled] | SetContext, ToggleSwapUVBit, SetOutOfBoundsEnabled (inline) |
[test_for_iso_circles], [IsoCircles] | sm_TestForIsoCircles |
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