solidcore

Units / curve

curve.curve_cache green

Layer
14
Upstream lines
1,474
Functions
24
Rust module
curve::curve_cache

Source: crates/solidcore/src/curve/curve_cache.rs

Upstream: source/SMLib/inc/SmCurveCache.h, source/SMLib/src/SmCurveCache.cpp

Notes

GREEN (promoted by curve.curve_p5: 638 cases, 0 deferred after its stubs were wired); PARTIAL: difftest 638 cases (38 fixture: lines, cubics, C0 quadratic, closed, degenerate, 2D, rational arc and Hermite curves through Tessellate with every option, sub/beyond/disjoint/reversed intervals, GetAnalyticCurve, type queries + 600 generated), 635 pass bit-identical (max_rel_err 0), 3 deferred (curve.curve_p5 2: SmCurve::IsArc, curve.line 1: SmLine in GetAnalyticCurve); co-ported SmFindCurveDistanceExtremaEFO::Evaluate (curve.curve_p4) and SmCurve::IsLine (curve.curve_p5, curve::curve::p5::is_line_base); wired curve_p2 span stubs, SmTree::GetOwnerObject and the IsLine stub of nurbs.b_spline_curve_p2; 24 fns; largest: SmCurveCache::Tessellate, sm_ComputeConstants, SmCurveCache::BuildTree, sm_ComputeParentData; cycle back-edges (call into later units; stub or co-port): curve.curve_p4(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit; after curve.line: 638 cases, 636 pass, 2 deferred (curve.curve_p5 2)

Difftest

Cases
638
Passed
638
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.extent3d green geom.object partial geom.tol green geom.vector3d green nlib.math green nurbs.b_spline_curve_p1 green nurbs.nurbs_crv green

Soft dependencies: geom.geom_utility_p1 green geom.local_solve1d green geom.pseudo_box green geom.tree partial nlib.knots green nurbs.b_spline_curve_p2 green

Dependents: curve.curve_p1 partial curve.curve_p5 partial curve.curve_p7 green curve.curve_p9 green intersect.surface_drop_lib_p3 claimed surface.surface_p11 partial surface.trim_srf_cache partial

Soft dependents: blend.fillet_executive_p1 todo curve.curve_p3 green curve.curve_p8 green intersect.curve_class_p9 partial intersect.surface_drop_curve partial intersect.surface_intersector_p4 partial intersect.surface_tracer partial surface.surface_p2 partial surface.surface_p7 partial surface.surface_p8 partial surface.surface_p9 partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmBezierAux1d::GetIntervalSmCurveCache.h:991[BezierAux1d::interval]
SmBezierSpan::GetPseudoBoxSmCurveCache.h:1461[BezierSpan], [BezierSpan::pseudo_box]
SmCurveCache::GetSpanCountSmCurveCache.h:2334[CurveCache::span_count]
SmCurveCache::GetAtSmCurveCache.h:2385[CurveCache::span]
SmCurveCache::GetParentAtSmCurveCache.h:2445[CurveCache::parent]
SmCurveCache::GetTreeSmCurveCache.h:2561[CurveCache::tree]
SmCurveCache::GetCurveSmCurveCache.h:2611[CurveCache::curve]
SmCurveCache::GetContinuitiesArraySmCurveCache.h:2661[CurveCache::continuities]
SmCurveCache::GetTypeSmCurveCache.h:2881[TYPE], [TYPE_STRING], [CurveCache::type_code], [CurveCache::type_string]
SmCurveCache::GetTypeStringSmCurveCache.h:2881[TYPE], [TYPE_STRING], [CurveCache::type_code], [CurveCache::type_string]
sm_GetBezierPolygonSmCurveCache.cpp:2833[bezier_polygon]
sm_ComputeParentDataSmCurveCache.cpp:73118compute_parent_data (private)
SmCurveCache::GetAnalyticCurveSmCurveCache.cpp:19820[CurveCache::analytic_curve]
SmCurveCache::BuildTreeSmCurveCache.cpp:358211[CurveCache::build_tree]
SmBezierAux1d::GetEndsSmCurveCache.cpp:60914[BezierAux1d::ends_on]
SmCurveCache::SmCurveCacheSmCurveCache.cpp:70563[CurveCache::new]
SmCurveCache::~SmCurveCacheSmCurveCache.cpp:77415Drop (implicit)
sm_ComputeConstantsSmCurveCache.cpp:858285[compute_constants], [SpanConstants]
sm_BuildBezierSpansSmCurveCache.cpp:115752[build_bezier_spans]
sm_CreateBezierSegmentBlockSmCurveCache.cpp:122480[create_bezier_segment_block]
sm_SplitSegmentSmCurveCache.cpp:1310103[split_segment]
SmCurveCache::TessellateSmCurveCache.cpp:1454414[CurveCache::tessellate]
SmCurveCache::OutputSegmentSmCurveCache.cpp:200841[CurveCache::output_segment]
SmCurveCache::IsKindOfSmCurveCache.cpp:20544[is_kind_of], [CurveCache::is_kind_of]
Module file-header table (26 rows)
RustUpstream
[BezierAux1d]SmBezierAux1d
[BezierAux1d::interval]SmBezierAux1d::GetInterval
[BezierAux1d::ends_on]SmBezierAux1d::GetEnds
[BezierSpan], [BezierSpan::pseudo_box]SmBezierSpan, SmBezierSpan::GetPseudoBox
[CurveCache], [CurveCacheOptions]SmCurveCache, its constructor arguments
[CurveCache::new]SmCurveCache::SmCurveCache
Drop (implicit)SmCurveCache::~SmCurveCache
[CurveCache::tessellate]SmCurveCache::Tessellate
[CurveCache::build_tree]SmCurveCache::BuildTree
[CurveCache::output_segment]SmCurveCache::OutputSegment
[CurveCache::analytic_curve]SmCurveCache::GetAnalyticCurve
[CurveCache::span_count]SmCurveCache::GetSpanCount
[CurveCache::span]SmCurveCache::GetAt
[CurveCache::parent]SmCurveCache::GetParentAt
[CurveCache::tree]SmCurveCache::GetTree
[CurveCache::curve]SmCurveCache::GetCurve
[CurveCache::continuities]SmCurveCache::GetContinuitiesArray
[TYPE], [TYPE_STRING], [CurveCache::type_code], [CurveCache::type_string]GetType, GetTypeString (SM_COMMON)
[is_kind_of], [CurveCache::is_kind_of]SmCurveCache::IsKindOf
[bezier_polygon]sm_GetBezierPolygon (static)
compute_parent_data (private)sm_ComputeParentData
[compute_constants], [SpanConstants]sm_ComputeConstants (static)
[build_bezier_spans]sm_BuildBezierSpans (static)
[create_bezier_segment_block]sm_CreateBezierSegmentBlock (static)
[split_segment]sm_SplitSegment (static)
impl EvalFunction for FindCurveDistanceExtremaSmFindCurveDistanceExtremaEFO::Evaluate (co-ported from unit curve.curve_p4)

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