solidcore

Units / curve

curve.crv_on_surf partial

Layer
19
Upstream lines
1,728
Functions
38
Rust module
curve::crv_on_surf

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

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

Notes

PARTIAL: difftest 2094 cases (94 fixture: smTopoTest my_check_loop_uv_gap SmBSplineCurve::CreateLineSegment UV edges on the bulge patch with owner 1 (eval, approx, cached breaks, drops, copies, edits, self gap), smMergeTest plane SM_SP_UMAX boundary via the UV-line constructor for owner flags 0-3, smTopoTest face trim curves on Surface.sms / DropCurveSurface.sms + 2000 generated op programs incl. ReadFromDB records from upstream WriteToDB), 1602 pass bit-identical (max_rel_err 0), 492 deferred (intersect.curve_class_p4 294: SmCurveClassification of uncached breaks; surface.surface_p7 148: SmSurface::EvaluateNormal; surface.surface_p1 50: Evaluate2ndDerivatives); --perturb SENSITIVE; CurveKind::CrvOnSurf (UV curve + BSplineSurface by value); ApproximateCurve / DropPoint / CalculateBoundingBox dispatch to the override (Curve::approximate_curve_base, drop_point_base); smsurf_LiftSecond/ThirdDerivative co-ported (surface.surface_p2); wired SmCurve::ReadFromDB(SmCrvOnSurf_TYPE) (curve.curve_p2) and SmTangentField base read (curve.tangent_field 266 -> 264 deferred); 3 UNPORTED(curve.crv_on_surf) stubs stay (global_solver node owner, SmTangentField::ApproximateCurve, tangent field as curve kind: see findings); DeformToEndPointTargets branch retagged surface.surface_p5. 38 fns; largest: SmCrvOnSurf::SurfaceCurveMaxDistanceBetween, SmCrvOnSurf::Evaluate, SmCrvOnSurf::GetKnots, SmCrvOnSurf::SetAll; cycle back-edges (call into later units; stub or co-port): surface.surface_p2(14), surface.surface_p1(4), curve.curve_p5(3), intersect.curve_class_p1(2), surface.surface_p7(2), curve.curve_p1(1), intersect.curve_class_p4(1), intersect.curve_class_p8(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit; PR #150 integration handoff: generic-Surface SmCrvOnSurf construction remains unported; CurveKind::CrvOnSurf stores only BSplineSurface. The p5 generic-surface deferral names this missing type/dispatch extension, not an unported existing method. This partial unit status does not certify that extension.

Difftest

Cases
2,094
Passed
1,787
Deferred
307
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
intersect.curve_class_p4 claimed307

Report JSON (per-case results)

Dependencies

Depends on: curve.curve_p2 green curve.curve_p3 green curve.curve_p6 green geom.extent1d green geom.extent2d green geom.object partial geom.solution_array partial geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green topology.database_io green

Soft dependencies: curve.line green curve.tangent_field green geom.axis2_placement green geom.context green geom.tol green nurbs.b_spline_curve_p2 green

Dependents: blend.fillet_intersector claimed intersect.curve_class_p8 partial intersect.curve_class_p9 partial query.face_p3 claimed surface.surface_p11 partial topology.edgeuse_p3 claimed topology.face_p2 partial topology.face_p4 claimed

Soft dependents: curve.curve_p5 partial intersect.curve_class_p1 partial intersect.curve_class_p2 claimed intersect.curve_class_p5 partial intersect.curve_class_p6 partial intersect.curve_class_p7 partial intersect.surface_drop_curve partial intersect.surface_drop_lib_p3 claimed offset.offset_geometry_creation claimed query.face_p1 claimed surface.surface_p4 green surface.surface_p9 partial topology.brep_p1 claimed topology.brep_p3 claimed topology.brep_p7 claimed topology.edgeuse_p2 partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmCrvOnSurf::SmCrvOnSurfSmCrvOnSurf.h:5011[CrvOnSurf]
SmCrvOnSurf::SmCrvOnSurfSmCrvOnSurf.h:748[CrvOnSurf]
SmCrvOnSurf::GetNaturalIntervalSmCrvOnSurf.h:1861[CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d]
SmCrvOnSurf::GetUVCurveSmCrvOnSurf.h:2611[CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d]
SmCrvOnSurf::GetBaseSurfaceSmCrvOnSurf.h:2621[CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d]
SmCrvOnSurf::GetBSApproxMaxGap3dSmCrvOnSurf.h:2641[CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d]
SmCrvOnSurf::SetContextSmCrvOnSurf.h:2744SetContext (dropped)
SmCrvOnSurf::IsAnalyticSmCrvOnSurf.h:2921[CrvOnSurf::is_analytic], [CrvOnSurf::is_bounded]
SmCrvOnSurf::IsBoundedSmCrvOnSurf.h:2931[CrvOnSurf::is_analytic], [CrvOnSurf::is_bounded]
SmCrvOnSurf::GetClassStringSmCrvOnSurf.h:3671[CrvOnSurf::TYPE], [CrvOnSurf::type_code], [CrvOnSurf::type_string], [CrvOnSurf::class_string]
SmCrvOnSurf::GetTypeSmCrvOnSurf.h:3671[CrvOnSurf::TYPE], [CrvOnSurf::type_code], [CrvOnSurf::type_string], [CrvOnSurf::class_string]
SmCrvOnSurf::GetTypeStringSmCrvOnSurf.h:3671[CrvOnSurf::TYPE], [CrvOnSurf::type_code], [CrvOnSurf::type_string], [CrvOnSurf::class_string]
SmCrvOnSurf::SetAllSmCrvOnSurf.cpp:18111[CrvOnSurf::new]
SmCrvOnSurf::SmCrvOnSurfSmCrvOnSurf.cpp:18659[CrvOnSurf]
SmCrvOnSurf::operator==SmCrvOnSurf.cpp:25233[CrvOnSurf::approx_eq]
SmCrvOnSurf::CopySmCrvOnSurf.cpp:29110[CrvOnSurf::copy], Clone
SmCrvOnSurf::~SmCrvOnSurfSmCrvOnSurf.cpp:30813Drop (implicit)
SmCrvOnSurf::ApproximateCurveSmCrvOnSurf.cpp:34841[CrvOnSurf::approximate_curve]
SmCrvOnSurf::EditParameterizationSmCrvOnSurf.cpp:39545[CrvOnSurf::edit_parameterization]
SmCrvOnSurf::EvaluateSmCrvOnSurf.cpp:449149[CrvOnSurf::evaluate]
SmCrvOnSurf::EvaluatePointSmCrvOnSurf.cpp:60718[CrvOnSurf::evaluate_point]
SmCrvOnSurf::EvaluateUVPointSmCrvOnSurf.cpp:63318[CrvOnSurf::evaluate_uv_point]
SmCrvOnSurf::EvaluateSurfaceNormalSmCrvOnSurf.cpp:74756[CrvOnSurf::evaluate_surface_normal]
SmCrvOnSurf::EvaluateSurface1stDerivDerivsSmCrvOnSurf.cpp:81142[CrvOnSurf::evaluate_surface_1st_deriv_derivs]
SmCrvOnSurf::CalculateBoundingBoxSmCrvOnSurf.cpp:86227[CrvOnSurf::calculate_bounding_box]
SmCrvOnSurf::CalculateContinuitiesSmCrvOnSurf.cpp:90956[CrvOnSurf::calculate_continuities]
SmCrvOnSurf::DropPointSmCrvOnSurf.cpp:104985[CrvOnSurf::drop_point]
SmCrvOnSurf::GetKnotsSmCrvOnSurf.cpp:1145126[CrvOnSurf::knots]
SmCrvOnSurf::GetNumberNaturalKnotsSmCrvOnSurf.cpp:127923[CrvOnSurf::number_natural_knots]
SmCrvOnSurf::GetOrCreateBSApproxPointerSmCrvOnSurf.cpp:130969[CrvOnSurf::get_or_create_bs_approx]
SmCrvOnSurf::SetUVCurveSmCrvOnSurf.cpp:140013[CrvOnSurf::set_uv_curve]
SmCrvOnSurf::ReverseParameterizationSmCrvOnSurf.cpp:141918[CrvOnSurf::reverse_parameterization]
SmCrvOnSurf::TrimSmCrvOnSurf.cpp:144333[CrvOnSurf::trim]
SmCrvOnSurf::TransformSmCrvOnSurf.cpp:148634[CrvOnSurf::transform]
sm_EvalDistAndDevSmCrvOnSurf.cpp:1530103eval_dist_and_dev (private)
SmCrvOnSurf::SurfaceCurveMaxDistanceBetweenSmCrvOnSurf.cpp:1663418[CrvOnSurf::surface_curve_max_distance_between], [SurfaceCurveGap]
SmCrvOnSurf::ReadFromDBSmCrvOnSurf.cpp:219892[CrvOnSurf::read_from_db]
SmCrvOnSurf::IsKindOfSmCrvOnSurf.cpp:22954[CrvOnSurf::is_kind_of]
Module file-header table (32 rows)
RustUpstream
[CrvOnSurf]SmCrvOnSurf
[CrvOnSurf::new]SmCrvOnSurf(rUVCurve, rSurface, ...), SetAll
[CrvOnSurf::from_uv_line]SmCrvOnSurf(rStartUV, rEndUV, rSurface, ...)
[CrvOnSurf::empty]SmCrvOnSurf() (empty constructor for I/O)
[CrvOnSurf::copy], Clonecopy constructor, Copy
Drop (implicit)~SmCrvOnSurf
[CrvOnSurf::approx_eq]operator==
[CrvOnSurf::approximate_curve]ApproximateCurve
[CrvOnSurf::edit_parameterization]EditParameterization
[CrvOnSurf::evaluate]Evaluate
[CrvOnSurf::evaluate_point]EvaluatePoint
[CrvOnSurf::evaluate_uv_point]EvaluateUVPoint
[CrvOnSurf::evaluate_surface_normal]EvaluateSurfaceNormal
[CrvOnSurf::evaluate_surface_1st_deriv_derivs]EvaluateSurface1stDerivDerivs
[CrvOnSurf::calculate_bounding_box]CalculateBoundingBox
[CrvOnSurf::calculate_continuities]CalculateContinuities
[CrvOnSurf::drop_point]DropPoint
[CrvOnSurf::knots]GetKnots
[CrvOnSurf::number_natural_knots]GetNumberNaturalKnots
[CrvOnSurf::get_or_create_bs_approx]GetOrCreateBSApproxPointer
[CrvOnSurf::set_uv_curve]SetUVCurve
[CrvOnSurf::reverse_parameterization]ReverseParameterization
[CrvOnSurf::trim]Trim
[CrvOnSurf::transform]Transform
eval_dist_and_dev (private)sm_EvalDistAndDev (static)
[CrvOnSurf::surface_curve_max_distance_between], [SurfaceCurveGap]SurfaceCurveMaxDistanceBetween
[CrvOnSurf::read_from_db]ReadFromDB
[CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d]GetNaturalInterval, GetUVCurve, GetBaseSurface, GetBSApproxMaxGap3d
[CrvOnSurf::is_analytic], [CrvOnSurf::is_bounded]IsAnalytic, IsBounded
[CrvOnSurf::TYPE], [CrvOnSurf::type_code], [CrvOnSurf::type_string], [CrvOnSurf::class_string]GetType, GetTypeString, GetClassString (SM_COMMON)
[CrvOnSurf::is_kind_of]IsKindOf
SetContext (dropped)SetContext

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