solidcore

Units / surface

surface.cone_p1 green

Layer
24
Upstream lines
1,835
Functions
50
Rust module
surface::cone::p1

Source: crates/solidcore/src/surface/cone/p1.rs

Upstream: source/SMLib/inc/SmCone.h, source/SMLib/inc/SmCylinder.h, source/SMLib/src/SmCone.cpp, source/SMLib/src/SmCylinder.cpp

Notes

GREEN: after surface.surf_of_revolution_p2 merged (PR #51): 20694 cases, 20694 pass bit-identical, 0 deferred (the AdjustSTEPUVDomain / STEPInversion back-edges into surface.surf_of_revolution_p2 are wired; Cone::rev_step_inversion calls SurfOfRevolution::step_inversion_with_outputs). Before: PARTIAL: after surface.surf_of_revolution_p3 merged (PR #29): 20694 cases, 20238 pass, 456 deferred (surface.surf_of_revolution_p2 456); Transform (now takes &Kernel) and ReadFromDB wired; Surface::read_from_db cannot hold a cone yet (DISPATCH GAP, no SurfaceKind variant). Before: PARTIAL: difftest 20694 cases (252 fixture: TestSmConeSTEPCrossDerivative, TestSmGeneral cylinder/cone, smFilletTest/smTopoTest cylinders incl. every swap/inside-out, my_test_analytic_surfaces cones and cylinder, edge cases; + 3167 review adversarial fixtures (review.json: cone/cylinder equality across classes, on-surface inversions with/without guesses or oob, iso curves with reversed and zero trim domains, derivative orders 0-8, identity and near-identity transforms, extra coincidence configurations); + 3875 second-review adversarial fixtures (review2.json: semi-angles -30/89/89.9/90/120 deg, bounded cones with a zero radius incl. inside-out and swap, make_nurb_gen generators, near-cylinders, negative and 1e-6 heights, far/tiny/rotated/skewed/non-unit placements, seam/apex/past-apex inversions, iso circles 1e-7 off the surface, derivative orders to 4, reversed/partial/ellipse coincidence pairs); + 4100 third-review adversarial fixtures (review3.json: every derivative order pair incl. out of range, NURB eval at knot boundaries with all side/upper/non-zero flags, to_nurbs at u=720/-725/1e6, iso with reversed/zero-size/over-range trims, inversion and iso_circle with tol 0..10*scale and seam guesses, adjust at radius-boundary heights, near-identity and negative-scale transforms, cross-mode equality, partial/reversed circle coincidence at 1e-5..1e5 radii, near-coincident lines; std/rotated/far placements with and without oob); + 7800 fourth-review adversarial fixtures (review4.json: tiny/negative semi-angles with every swap/inside-out, zero/over-long/negative sweeps, zero heights, apex-crossing cones, negative and SM_USE_DEFAULT coincidence tolerances, sub-domain and closed-vs-arc circle and line coincidences, iso circles on 5e-11 deg cones); + 1500 generated incl. degenerate placements/heights/semi-angles/sweeps, 1e-6..1e5 scales), 20173 pass bit-identical (max_rel_err 0), 0 failed, 521 deferred (surface.surf_of_revolution_p2 456: AdjustSTEPUVDomain within the apex; surface.surf_of_revolution_p3 65: non-identity Transform); perturbation 20173/20173 detected; 20k-seed run clean. SmSurfOfRevolution MakeNurb/RebuildPolarConverter take the virtual iso-curve hook (cone override). sm_TotalCoincidenceChecker compared through a verbatim shim copy. SmSurface::ReadFromDB now dispatches cone/cylinder to Cone::read_from_db (then defers on surface.surf_of_revolution_p3). State compares GetTypeString (SmCone_TYPE/SmCylinder_TYPE) and GetClassString (SmCone/SmCylinder). Upstream issues UB-88, UB-87, HANG-11, WR-63, WR-64. 50 fns; largest: SmCone::CreateIsoParametricCurve, SmCone::CreateIsoCircleFromPoint, sm_TotalCoincidenceChecker, SmCone::ConvertUVFromSTEPToNURBS; cycle back-edges (call into later units; stub or co-port): surface.surf_of_revolution_p2(4), surface.surf_of_revolution_p3(2); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit

Difftest

Cases
20,694
Passed
20,694
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.line green geom.axis2_placement green geom.extent1d green geom.extent2d green geom.object partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green nurbs.b_spline_surface_n_lib_p2 partial nurbs.b_spline_surface_p1 green nurbs.b_spline_surface_p2 partial surface.surf_of_revolution_p1 green surface.surface_p2 partial topology.database_io green

Soft dependencies: curve.curve_p6 green curve.ellipse_p1 green curve.ellipse_p2 green geom.geom_utility_p1 green nurbs.b_spline_curve_p2 green

Dependents: primitive.api_primitives claimed primitive.primitive_creation_p1 claimed surface.cone_p2 claimed surface.cone_p3 partial surface.sphere green surface.surf_of_extrusion_p2 partial

Soft dependents: blend.fillet_solver_p1 claimed surface.surface_p1 partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmCone::SmConeSmCone.h:1891[Cone]
SmCone::~SmConeSmCone.h:2181Drop (implicit)
SmCone::GetRadiusSmCone.h:3951[Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height]
SmCone::GetBotRadiusSmCone.h:3961[Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height]
SmCone::GetTopRadiusSmCone.h:3971[Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height]
SmCone::GetBotHeightSmCone.h:3991[Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height]
SmCone::GetTopHeightSmCone.h:4001[Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height]
SmCone::IsCylinderSmCone.h:5211[Cone::is_cylinder], [Cone::inside_out], [Cone::base_radius], [Cone::semi_angle_deg]
SmCone::GetClassStringSmCone.h:5941[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]
SmCone::GetTypeSmCone.h:5941[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]
SmCone::GetTypeStringSmCone.h:5941[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]
SmCylinder::SmCylinderSmCylinder.h:1081[Cone]
SmCylinder::~SmCylinderSmCylinder.h:1391Drop (implicit)
SmCylinder::IsCylinderSmCylinder.h:1711[Cone::is_cylinder], [Cone::inside_out], [Cone::base_radius], [Cone::semi_angle_deg]
SmCylinder::GetClassStringSmCylinder.h:2201[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]
SmCylinder::GetTypeSmCylinder.h:2201[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]
SmCylinder::GetTypeStringSmCylinder.h:2201[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]
SmCone::SmConeSmCone.cpp:6471[Cone]
SmCone::SmConeSmCone.cpp:14970[Cone]
SmCone::SmConeSmCone.cpp:2258[Cone]
SmCone::operator==SmCone.cpp:24025[Cone::approx_eq]
SmCone::CopySmCone.cpp:27131Clone
SmCone::CreateCanonicalSmCone.cpp:37562[Cone::create_canonical_with_semi_angle], [Cone::create_canonical]
SmCone::AdjustSTEPUVDomainSmCone.cpp:44318[Cone::adjust_step_uv_domain]
SmCone::GetApexSmCone.cpp:49924[Cone::apex], [Apex]
SmCone::CreateIsoParametricCurveSmCone.cpp:1229380[Cone::create_iso_parametric_curve]
SmCone::CreateIsoCircleFromPointSmCone.cpp:1620172[Cone::create_iso_circle_from_point]
SmCone::ConvertUVFromSTEPToNURBSSmCone.cpp:1799128[Cone::convert_uv_from_step_to_nurbs], [Cone::convert_uv_from_nurbs_to_step]
SmCone::ConvertUVFromNURBSToSTEPSmCone.cpp:193453[Cone::convert_uv_from_step_to_nurbs], [Cone::convert_uv_from_nurbs_to_step]
SmCone::EvaluateSmCone.cpp:199668[Cone::evaluate], [Cone::evaluate_point]
SmCone::EvaluatePointSmCone.cpp:207313[Cone::evaluate], [Cone::evaluate_point]
SmCone::EvaluateSTEPSmCone.cpp:2099121[Cone::evaluate_step], [Cone::evaluate_step_point]
SmCone::EvaluateSTEPPointSmCone.cpp:22359[Cone::evaluate_step], [Cone::evaluate_step_point]
SmCone::GetHeightSmCone.cpp:225122[Cone::height]
SmCone::GetSTEPLinearParamExtentSmCone.cpp:227910[Cone::step_linear_param_extent]
SmCone::GetMaxAnalyticDomainSmCone.cpp:229731[Cone::max_analytic_domain]
sm_TotalCoincidenceCheckerSmCone.cpp:2453132[total_coincidence_checker], [Coincidence]
SmCone::STEPInversionSmCone.cpp:500237[Cone::step_inversion], [ConeStepInversion]
SmCone::GetPositivePointSmCone.cpp:505335[Cone::positive_point], [PositivePoint]
SmCone::TransformSmCone.cpp:5115117[Cone::transform]
SmCone::ReadFromDBSmCone.cpp:600444[Cone::read_from_db]
SmCone::IsKindOfSmCone.cpp:60534[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]
SmCylinder::SmCylinderSmCylinder.cpp:7922[Cone]
SmCylinder::SmCylinderSmCylinder.cpp:1076[Cone]
SmCylinder::operator==SmCylinder.cpp:12014[Cone::approx_eq]
SmCylinder::CopySmCylinder.cpp:14011Clone
SmCylinder::CreateCanonicalSmCylinder.cpp:15731[Cone::create_canonical_cylinder]
SmCylinder::GetMaxAnalyticDomainSmCylinder.cpp:21312[Cone::max_analytic_domain]
SmCylinder::ReadFromDBSmCylinder.cpp:58033[Cone::read_from_db]
SmCylinder::IsKindOfSmCylinder.cpp:6184[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]
Module file-header table (30 rows)
RustUpstream
[Cone]SmCone, SmCylinder (with [Cone::is_cylinder_class])
[Cone::empty]SmCone(), SmCylinder()
[Cone::new_unbounded]SmCone(Origin, XAxis, YAxis, BotRadius, SemiAngleDeg, bSwapUV, bInsideOut)
[Cone::new_bounded]SmCone(Origin, XAxis, YAxis, BotRadius, TopRadius, StartAngle, EndAngle, Height, bSwapUV, bInsideOut, bMakeNurbGenCurve)
[Cone::new_cylinder_unbounded], [Cone::new_cylinder_bounded]the two SmCylinder constructors
Clonecopy constructors, Copy (both classes)
Drop (implicit)~SmCone, ~SmCylinder
[Cone::approx_eq]operator== (both classes)
[Cone::create_canonical_with_semi_angle], [Cone::create_canonical]CreateCanonical (both overloads)
[Cone::create_canonical_cylinder]SmCylinder::CreateCanonical
[Cone::make_nurb]SmSurfOfRevolution::MakeNurb (inherited; its polar converter rebuild calls the cone's iso curves)
[Cone::adjust_step_uv_domain]AdjustSTEPUVDomain
[Cone::apex], [Apex]GetApex
[Cone::canonical], [ConeCanonical]GetCanonical
[Cone::create_iso_parametric_curve]CreateIsoParametricCurve
[Cone::create_iso_circle_from_point]CreateIsoCircleFromPoint
[Cone::convert_uv_from_step_to_nurbs], [Cone::convert_uv_from_nurbs_to_step]ConvertUVFromSTEPToNURBS, ConvertUVFromNURBSToSTEP
[Cone::evaluate], [Cone::evaluate_point]Evaluate, EvaluatePoint
[Cone::evaluate_step], [Cone::evaluate_step_point]EvaluateSTEP, EvaluateSTEPPoint
[Cone::height]GetHeight
[Cone::step_linear_param_extent]GetSTEPLinearParamExtent
[Cone::max_analytic_domain]GetMaxAnalyticDomain (both classes)
[Cone::step_inversion], [ConeStepInversion]STEPInversion (with SmSurfOfRevolution::STEPInversion, co-ported)
[Cone::positive_point], [PositivePoint]GetPositivePoint
[Cone::transform]Transform
[Cone::read_from_db]ReadFromDB (both classes)
[Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string]IsKindOf, GetType, GetTypeString, GetClassString (SM_COMMON, both classes)
[Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height]GetRadius, GetBotRadius, GetTopRadius, GetBotHeight, GetTopHeight (inline)
[Cone::is_cylinder], [Cone::inside_out], [Cone::base_radius], [Cone::semi_angle_deg]IsCylinder (both classes), GetInsideOut (inline), the members
[total_coincidence_checker], [Coincidence]sm_TotalCoincidenceChecker (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