Units / curve
curve.iso_curve green
- Layer
- 14
- Upstream lines
- 310
- Functions
- 16
- Rust module
curve::iso_curve
Source: crates/solidcore/src/curve/iso_curve.rs
Upstream: source/SMLib/inc/SmIsoCurve.h, source/SMLib/src/SmIsoCurve.cpp
Notes
GREEN: difftest 2874 cases, 2874 pass bit-identical, 0 deferred (SmSurface::CalculateContinuities wired by surface.surface_p6, PR #92). Earlier: PARTIAL: difftest 2874 cases (874 fixture: Surface.sms / offset_nurb.sms / DropCurveSurface.sms iso curves at domain ends, interior knots, outside the domain with and without clamping, bilinear patch and NURB-less surface edge cases, all ten SmSurfParamType values, equality near SM_IS_ZERO, ReadFromDB streams + 2000 generated), 2589 pass bit-identical (max_rel_err 0), 285 deferred (SmBSplineSurface::Evaluate back-edge wired 2026-10-12 in style review batch #5: 355 formerly deferred now pass; surface.surface_p6 120: SmSurface::CalculateContinuities; surface.surface_p2 101: SmSurface::ReadFromDB; curve.line 64: SmLine ctor in CreateUVIsoLine); --perturb SENSITIVE; base surface held as BSplineSurface (the only ported SmSurface); EvaluatePoint wired to nurbs.b_spline_surface_n_lib_p1; wired SmCurve::ReadFromDB(SmIsoCurve_TYPE) in curve.curve_p2 (still deferred on SmSurface::ReadFromDB, no counts changed); CurveKind::Iso. 16 fns; largest: SmIsoCurve::Evaluate, SmIsoCurve::ReadFromDB, SmIsoCurve::SmIsoCurve, SmIsoCurve::CreateUVIsoLine; cycle back-edges (call into later units; stub or co-port): surface.surface_p2(8), curve.curve_p5(2), curve.line(1), surface.surface_p1(1), surface.surface_p6(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit; after curve.line wiring (SmLine in CreateUVIsoLine): 2874 cases, 2653 pass, 221 deferred (surface.surface_p2 101, surface.surface_p6 120) EXTENDED in surface.surface_point_solve_p3 (PR #106): IsoCurve::from_surface stores a concrete Surface, preserving plane/revolution/STEP virtual evaluation; read dispatch now retains all supported surface kinds. Equality is fallible, propagating surface comparison errors. PR #106: the general Surface constructor and database reader reject owned-geometry nesting beyond 64 levels before recursive dispatch; the B-spline constructor remains infallible.
Difftest
- Cases
- 2,874
- Passed
- 2,874
- 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 geom.extent1d green geom.extent2d green geom.object partial geom.vector3d green topology.database_io green
Soft dependencies: geom.tol green geom.vector2d green
Dependents: blend.fillet_solver_p1 claimed blend.fillet_solver_p3 todo surface.plane_p1 partial surface.surf_of_revolution_p3 partial surface.surface_p5 green surface.surface_p8 partial
Soft dependents: curve.curve_p5 partial surface.surface_cache_p2 partial surface.surface_p1 partial surface.surface_p10 partial surface.surface_p11 partial surface.surface_p6 green surface.surface_p9 partial surface.surface_point_solve_p3 green
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmIsoCurve::SmIsoCurve | SmIsoCurve.h:61 | 1 | [IsoCurve] |
SmIsoCurve::SetContext | SmIsoCurve.h:81 | 2 | |
SmIsoCurve::GetClassString | SmIsoCurve.h:134 | 1 | [IsoCurve::TYPE], [IsoCurve::type_code], [IsoCurve::type_string], [IsoCurve::class_string] |
SmIsoCurve::GetType | SmIsoCurve.h:134 | 1 | [IsoCurve::TYPE], [IsoCurve::type_code], [IsoCurve::type_string], [IsoCurve::class_string] |
SmIsoCurve::GetTypeString | SmIsoCurve.h:134 | 1 | [IsoCurve::TYPE], [IsoCurve::type_code], [IsoCurve::type_string], [IsoCurve::class_string] |
SmIsoCurve::CreateUVIsoLine | SmIsoCurve.cpp:24 | 33 | [IsoCurve::create_uv_iso_line] |
SmIsoCurve::CalculateContinuities | SmIsoCurve.cpp:64 | 17 | [IsoCurve::calculate_continuities] |
SmIsoCurve::Evaluate | SmIsoCurve.cpp:90 | 69 | [IsoCurve::evaluate] |
SmIsoCurve::SmIsoCurve | SmIsoCurve.cpp:166 | 44 | [IsoCurve] |
SmIsoCurve::~SmIsoCurve | SmIsoCurve.cpp:216 | 5 | Drop (implicit) |
SmIsoCurve::operator== | SmIsoCurve.cpp:228 | 29 | [IsoCurve::approx_eq] |
SmIsoCurve::EvaluatePoint | SmIsoCurve.cpp:266 | 18 | [IsoCurve::evaluate_point] |
SmIsoCurve::GetNaturalInterval | SmIsoCurve.cpp:291 | 10 | [IsoCurve::natural_interval] |
SmIsoCurve::GetKnots | SmIsoCurve.cpp:310 | 13 | [IsoCurve::knots] |
SmIsoCurve::ReadFromDB | SmIsoCurve.cpp:369 | 62 | [IsoCurve::read_from_db] |
SmIsoCurve::IsKindOf | SmIsoCurve.cpp:436 | 4 | [IsoCurve::is_kind_of] |
Module file-header table (13 rows)
| Rust | Upstream |
|---|---|
[IsoCurve] | SmIsoCurve |
[IsoCurve::new], [IsoCurve::from_surface] | SmIsoCurve(crSurface, eSurfParam, dIsoParameter, bFromLeft, bClampInput) |
Drop (implicit) | ~SmIsoCurve |
[IsoCurve::approx_eq] | SmIsoCurve::operator== |
[IsoCurve::create_uv_iso_line] | SmIsoCurve::CreateUVIsoLine |
[IsoCurve::calculate_continuities] | SmIsoCurve::CalculateContinuities |
[IsoCurve::natural_interval] | SmIsoCurve::GetNaturalInterval |
[IsoCurve::evaluate] | SmIsoCurve::Evaluate |
[IsoCurve::evaluate_point] | SmIsoCurve::EvaluatePoint |
[IsoCurve::knots] | SmIsoCurve::GetKnots |
[IsoCurve::read_from_db] | SmIsoCurve::ReadFromDB |
[IsoCurve::TYPE], [IsoCurve::type_code], [IsoCurve::type_string], [IsoCurve::class_string] | GetType, GetTypeString, GetClassString (SM_COMMON) |
[IsoCurve::is_kind_of] | SmIsoCurve::IsKindOf |
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