solidcore

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 functionDefined atLinesRust (from the file header)
SmSurfOfRevolution::SmSurfOfRevolutionSmSurfOfRevolution.h:1091[SurfOfRevolution], [SurfOfRevolution::new]
SmSurfOfRevolution::GetSwapUVSmSurfOfRevolution.h:2231[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::GetSTEPUVDomainSmSurfOfRevolution.h:2241[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::GetStartAngleDegSmSurfOfRevolution.h:2251[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::GetEndAngleDegSmSurfOfRevolution.h:2261[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::GetGenCurveSmSurfOfRevolution.h:2311[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::GetPositionSmSurfOfRevolution.h:2351[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::HavePolarConversionSmSurfOfRevolution.h:2411[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::SetContextSmSurfOfRevolution.h:4283[SurfOfRevolution::set_context], [SurfOfRevolution::toggle_swap_uv_bit], [SurfOfRevolution::set_out_of_bounds_enabled]
SmSurfOfRevolution::ToggleSwapUVBitSmSurfOfRevolution.h:4391[SurfOfRevolution::set_context], [SurfOfRevolution::toggle_swap_uv_bit], [SurfOfRevolution::set_out_of_bounds_enabled]
SmSurfOfRevolution::GetClassStringSmSurfOfRevolution.h:5241[SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string]
SmSurfOfRevolution::GetTypeSmSurfOfRevolution.h:5241[SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string]
SmSurfOfRevolution::GetTypeStringSmSurfOfRevolution.h:5241[SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string]
SmSurfOfRevolution::~SmSurfOfRevolutionSmSurfOfRevolution.cpp:425Drop (implicit)
SmSurfOfRevolution::operator==SmSurfOfRevolution.cpp:5431[SurfOfRevolution::approx_eq]
SmSurfOfRevolution::SmSurfOfRevolutionSmSurfOfRevolution.cpp:9464[SurfOfRevolution], [SurfOfRevolution::new]
SmSurfOfRevolution::SmSurfOfRevolutionSmSurfOfRevolution.cpp:16429[SurfOfRevolution], [SurfOfRevolution::new]
SmSurfOfRevolution::RebuildPolarConverterSmSurfOfRevolution.cpp:20292rebuild_polar_converter (crate)
SmSurfOfRevolution::GetMaxAnalyticDomainSmSurfOfRevolution.cpp:75011[SurfOfRevolution::max_analytic_domain]
SmSurfOfRevolution::GetGenDirParamExtentSmSurfOfRevolution.cpp:79922[SurfOfRevolution::gen_dir_param_extent]
SmSurfOfRevolution::CreateIsoParametricCurveSmSurfOfRevolution.cpp:1653157[SurfOfRevolution::create_iso_parametric_curve], [RevolutionIsoCurve]
SmSurfOfRevolution::CreateDirectrixAtGeneratorParamSmSurfOfRevolution.cpp:182196[SurfOfRevolution::create_directrix_at_generator_param], [DirectrixAtGeneratorParam]
SmSurfOfRevolution::CreateGeneratorFromAngleSmSurfOfRevolution.cpp:202950[SurfOfRevolution::create_generator_from_angle]
SmSurfOfRevolution::ConvertUVFromNURBSToSTEPSmSurfOfRevolution.cpp:226078[SurfOfRevolution::convert_uv_from_nurbs_to_step]
SmSurfOfRevolution::EvaluateSTEPSmSurfOfRevolution.cpp:2767157[SurfOfRevolution::evaluate_step], [SurfOfRevolution::evaluate_step_point]
SmSurfOfRevolution::EvaluateSTEPPointSmSurfOfRevolution.cpp:294667[SurfOfRevolution::evaluate_step], [SurfOfRevolution::evaluate_step_point]
SmSurfOfRevolution::IntersectWithPlaneSmSurfOfRevolution.cpp:3135364[SurfOfRevolution::intersect_with_plane]
SmSurfOfRevolution::IsBoundedSmSurfOfRevolution.cpp:45727[SurfOfRevolution::is_bounded]
SmSurfOfRevolution::TransformPointToStartPlaneSmSurfOfRevolution.cpp:526563[SurfOfRevolution::transform_point_to_start_plane]
sm_TestForIsoCirclesSmSurfOfRevolution.cpp:5867210[test_for_iso_circles], [IsoCircles]
SmSurfOfRevolution::IsKindOfSmSurfOfRevolution.cpp:66324[SurfOfRevolution::is_kind_of], [SurfOfRevolution::TYPE], [SurfOfRevolution::type_code], [SurfOfRevolution::type_string], [SurfOfRevolution::class_string]
Module file-header table (22 rows)
RustUpstream
[SurfOfRevolution], [SurfOfRevolution::new]SmSurfOfRevolution, SmSurfOfRevolution(pGenCurve, crOrigin, crXAxis, crYAxis, crAnalUVDomain, bSwapUV)
[SurfOfRevolution::empty]SmSurfOfRevolution()
CloneSmSurfOfRevolution(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