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 function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmCone::SmCone | SmCone.h:189 | 1 | [Cone] |
SmCone::~SmCone | SmCone.h:218 | 1 | Drop (implicit) |
SmCone::GetRadius | SmCone.h:395 | 1 | [Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height] |
SmCone::GetBotRadius | SmCone.h:396 | 1 | [Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height] |
SmCone::GetTopRadius | SmCone.h:397 | 1 | [Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height] |
SmCone::GetBotHeight | SmCone.h:399 | 1 | [Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height] |
SmCone::GetTopHeight | SmCone.h:400 | 1 | [Cone::radius], [Cone::bot_radius], [Cone::top_radius], [Cone::bot_height], [Cone::top_height] |
SmCone::IsCylinder | SmCone.h:521 | 1 | [Cone::is_cylinder], [Cone::inside_out], [Cone::base_radius], [Cone::semi_angle_deg] |
SmCone::GetClassString | SmCone.h:594 | 1 | [Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string] |
SmCone::GetType | SmCone.h:594 | 1 | [Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string] |
SmCone::GetTypeString | SmCone.h:594 | 1 | [Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string] |
SmCylinder::SmCylinder | SmCylinder.h:108 | 1 | [Cone] |
SmCylinder::~SmCylinder | SmCylinder.h:139 | 1 | Drop (implicit) |
SmCylinder::IsCylinder | SmCylinder.h:171 | 1 | [Cone::is_cylinder], [Cone::inside_out], [Cone::base_radius], [Cone::semi_angle_deg] |
SmCylinder::GetClassString | SmCylinder.h:220 | 1 | [Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string] |
SmCylinder::GetType | SmCylinder.h:220 | 1 | [Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string] |
SmCylinder::GetTypeString | SmCylinder.h:220 | 1 | [Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string] |
SmCone::SmCone | SmCone.cpp:64 | 71 | [Cone] |
SmCone::SmCone | SmCone.cpp:149 | 70 | [Cone] |
SmCone::SmCone | SmCone.cpp:225 | 8 | [Cone] |
SmCone::operator== | SmCone.cpp:240 | 25 | [Cone::approx_eq] |
SmCone::Copy | SmCone.cpp:271 | 31 | Clone |
SmCone::CreateCanonical | SmCone.cpp:375 | 62 | [Cone::create_canonical_with_semi_angle], [Cone::create_canonical] |
SmCone::AdjustSTEPUVDomain | SmCone.cpp:443 | 18 | [Cone::adjust_step_uv_domain] |
SmCone::GetApex | SmCone.cpp:499 | 24 | [Cone::apex], [Apex] |
SmCone::CreateIsoParametricCurve | SmCone.cpp:1229 | 380 | [Cone::create_iso_parametric_curve] |
SmCone::CreateIsoCircleFromPoint | SmCone.cpp:1620 | 172 | [Cone::create_iso_circle_from_point] |
SmCone::ConvertUVFromSTEPToNURBS | SmCone.cpp:1799 | 128 | [Cone::convert_uv_from_step_to_nurbs], [Cone::convert_uv_from_nurbs_to_step] |
SmCone::ConvertUVFromNURBSToSTEP | SmCone.cpp:1934 | 53 | [Cone::convert_uv_from_step_to_nurbs], [Cone::convert_uv_from_nurbs_to_step] |
SmCone::Evaluate | SmCone.cpp:1996 | 68 | [Cone::evaluate], [Cone::evaluate_point] |
SmCone::EvaluatePoint | SmCone.cpp:2073 | 13 | [Cone::evaluate], [Cone::evaluate_point] |
SmCone::EvaluateSTEP | SmCone.cpp:2099 | 121 | [Cone::evaluate_step], [Cone::evaluate_step_point] |
SmCone::EvaluateSTEPPoint | SmCone.cpp:2235 | 9 | [Cone::evaluate_step], [Cone::evaluate_step_point] |
SmCone::GetHeight | SmCone.cpp:2251 | 22 | [Cone::height] |
SmCone::GetSTEPLinearParamExtent | SmCone.cpp:2279 | 10 | [Cone::step_linear_param_extent] |
SmCone::GetMaxAnalyticDomain | SmCone.cpp:2297 | 31 | [Cone::max_analytic_domain] |
sm_TotalCoincidenceChecker | SmCone.cpp:2453 | 132 | [total_coincidence_checker], [Coincidence] |
SmCone::STEPInversion | SmCone.cpp:5002 | 37 | [Cone::step_inversion], [ConeStepInversion] |
SmCone::GetPositivePoint | SmCone.cpp:5053 | 35 | [Cone::positive_point], [PositivePoint] |
SmCone::Transform | SmCone.cpp:5115 | 117 | [Cone::transform] |
SmCone::ReadFromDB | SmCone.cpp:6004 | 44 | [Cone::read_from_db] |
SmCone::IsKindOf | SmCone.cpp:6053 | 4 | [Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string] |
SmCylinder::SmCylinder | SmCylinder.cpp:79 | 22 | [Cone] |
SmCylinder::SmCylinder | SmCylinder.cpp:107 | 6 | [Cone] |
SmCylinder::operator== | SmCylinder.cpp:120 | 14 | [Cone::approx_eq] |
SmCylinder::Copy | SmCylinder.cpp:140 | 11 | Clone |
SmCylinder::CreateCanonical | SmCylinder.cpp:157 | 31 | [Cone::create_canonical_cylinder] |
SmCylinder::GetMaxAnalyticDomain | SmCylinder.cpp:213 | 12 | [Cone::max_analytic_domain] |
SmCylinder::ReadFromDB | SmCylinder.cpp:580 | 33 | [Cone::read_from_db] |
SmCylinder::IsKindOf | SmCylinder.cpp:618 | 4 | [Cone::is_kind_of], [Cone::type_code], [Cone::type_string], [Cone::class_string] |
Module file-header table (30 rows)
| Rust | Upstream |
|---|---|
[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 |
Clone | copy 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