solidcore

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 functionDefined atLinesRust (from the file header)
SmIsoCurve::SmIsoCurveSmIsoCurve.h:611[IsoCurve]
SmIsoCurve::SetContextSmIsoCurve.h:812
SmIsoCurve::GetClassStringSmIsoCurve.h:1341[IsoCurve::TYPE], [IsoCurve::type_code], [IsoCurve::type_string], [IsoCurve::class_string]
SmIsoCurve::GetTypeSmIsoCurve.h:1341[IsoCurve::TYPE], [IsoCurve::type_code], [IsoCurve::type_string], [IsoCurve::class_string]
SmIsoCurve::GetTypeStringSmIsoCurve.h:1341[IsoCurve::TYPE], [IsoCurve::type_code], [IsoCurve::type_string], [IsoCurve::class_string]
SmIsoCurve::CreateUVIsoLineSmIsoCurve.cpp:2433[IsoCurve::create_uv_iso_line]
SmIsoCurve::CalculateContinuitiesSmIsoCurve.cpp:6417[IsoCurve::calculate_continuities]
SmIsoCurve::EvaluateSmIsoCurve.cpp:9069[IsoCurve::evaluate]
SmIsoCurve::SmIsoCurveSmIsoCurve.cpp:16644[IsoCurve]
SmIsoCurve::~SmIsoCurveSmIsoCurve.cpp:2165Drop (implicit)
SmIsoCurve::operator==SmIsoCurve.cpp:22829[IsoCurve::approx_eq]
SmIsoCurve::EvaluatePointSmIsoCurve.cpp:26618[IsoCurve::evaluate_point]
SmIsoCurve::GetNaturalIntervalSmIsoCurve.cpp:29110[IsoCurve::natural_interval]
SmIsoCurve::GetKnotsSmIsoCurve.cpp:31013[IsoCurve::knots]
SmIsoCurve::ReadFromDBSmIsoCurve.cpp:36962[IsoCurve::read_from_db]
SmIsoCurve::IsKindOfSmIsoCurve.cpp:4364[IsoCurve::is_kind_of]
Module file-header table (13 rows)
RustUpstream
[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