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 unit | Deferred cases |
|---|---|
intersect.curve_class_p4 claimed | 307 |
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 function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmCrvOnSurf::SmCrvOnSurf | SmCrvOnSurf.h:50 | 11 | [CrvOnSurf] |
SmCrvOnSurf::SmCrvOnSurf | SmCrvOnSurf.h:74 | 8 | [CrvOnSurf] |
SmCrvOnSurf::GetNaturalInterval | SmCrvOnSurf.h:186 | 1 | [CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d] |
SmCrvOnSurf::GetUVCurve | SmCrvOnSurf.h:261 | 1 | [CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d] |
SmCrvOnSurf::GetBaseSurface | SmCrvOnSurf.h:262 | 1 | [CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d] |
SmCrvOnSurf::GetBSApproxMaxGap3d | SmCrvOnSurf.h:264 | 1 | [CrvOnSurf::natural_interval], [CrvOnSurf::uv_curve], [CrvOnSurf::surface], [CrvOnSurf::bs_approx_max_gap_3d] |
SmCrvOnSurf::SetContext | SmCrvOnSurf.h:274 | 4 | SetContext (dropped) |
SmCrvOnSurf::IsAnalytic | SmCrvOnSurf.h:292 | 1 | [CrvOnSurf::is_analytic], [CrvOnSurf::is_bounded] |
SmCrvOnSurf::IsBounded | SmCrvOnSurf.h:293 | 1 | [CrvOnSurf::is_analytic], [CrvOnSurf::is_bounded] |
SmCrvOnSurf::GetClassString | SmCrvOnSurf.h:367 | 1 | [CrvOnSurf::TYPE], [CrvOnSurf::type_code], [CrvOnSurf::type_string], [CrvOnSurf::class_string] |
SmCrvOnSurf::GetType | SmCrvOnSurf.h:367 | 1 | [CrvOnSurf::TYPE], [CrvOnSurf::type_code], [CrvOnSurf::type_string], [CrvOnSurf::class_string] |
SmCrvOnSurf::GetTypeString | SmCrvOnSurf.h:367 | 1 | [CrvOnSurf::TYPE], [CrvOnSurf::type_code], [CrvOnSurf::type_string], [CrvOnSurf::class_string] |
SmCrvOnSurf::SetAll | SmCrvOnSurf.cpp:18 | 111 | [CrvOnSurf::new] |
SmCrvOnSurf::SmCrvOnSurf | SmCrvOnSurf.cpp:186 | 59 | [CrvOnSurf] |
SmCrvOnSurf::operator== | SmCrvOnSurf.cpp:252 | 33 | [CrvOnSurf::approx_eq] |
SmCrvOnSurf::Copy | SmCrvOnSurf.cpp:291 | 10 | [CrvOnSurf::copy], Clone |
SmCrvOnSurf::~SmCrvOnSurf | SmCrvOnSurf.cpp:308 | 13 | Drop (implicit) |
SmCrvOnSurf::ApproximateCurve | SmCrvOnSurf.cpp:348 | 41 | [CrvOnSurf::approximate_curve] |
SmCrvOnSurf::EditParameterization | SmCrvOnSurf.cpp:395 | 45 | [CrvOnSurf::edit_parameterization] |
SmCrvOnSurf::Evaluate | SmCrvOnSurf.cpp:449 | 149 | [CrvOnSurf::evaluate] |
SmCrvOnSurf::EvaluatePoint | SmCrvOnSurf.cpp:607 | 18 | [CrvOnSurf::evaluate_point] |
SmCrvOnSurf::EvaluateUVPoint | SmCrvOnSurf.cpp:633 | 18 | [CrvOnSurf::evaluate_uv_point] |
SmCrvOnSurf::EvaluateSurfaceNormal | SmCrvOnSurf.cpp:747 | 56 | [CrvOnSurf::evaluate_surface_normal] |
SmCrvOnSurf::EvaluateSurface1stDerivDerivs | SmCrvOnSurf.cpp:811 | 42 | [CrvOnSurf::evaluate_surface_1st_deriv_derivs] |
SmCrvOnSurf::CalculateBoundingBox | SmCrvOnSurf.cpp:862 | 27 | [CrvOnSurf::calculate_bounding_box] |
SmCrvOnSurf::CalculateContinuities | SmCrvOnSurf.cpp:909 | 56 | [CrvOnSurf::calculate_continuities] |
SmCrvOnSurf::DropPoint | SmCrvOnSurf.cpp:1049 | 85 | [CrvOnSurf::drop_point] |
SmCrvOnSurf::GetKnots | SmCrvOnSurf.cpp:1145 | 126 | [CrvOnSurf::knots] |
SmCrvOnSurf::GetNumberNaturalKnots | SmCrvOnSurf.cpp:1279 | 23 | [CrvOnSurf::number_natural_knots] |
SmCrvOnSurf::GetOrCreateBSApproxPointer | SmCrvOnSurf.cpp:1309 | 69 | [CrvOnSurf::get_or_create_bs_approx] |
SmCrvOnSurf::SetUVCurve | SmCrvOnSurf.cpp:1400 | 13 | [CrvOnSurf::set_uv_curve] |
SmCrvOnSurf::ReverseParameterization | SmCrvOnSurf.cpp:1419 | 18 | [CrvOnSurf::reverse_parameterization] |
SmCrvOnSurf::Trim | SmCrvOnSurf.cpp:1443 | 33 | [CrvOnSurf::trim] |
SmCrvOnSurf::Transform | SmCrvOnSurf.cpp:1486 | 34 | [CrvOnSurf::transform] |
sm_EvalDistAndDev | SmCrvOnSurf.cpp:1530 | 103 | eval_dist_and_dev (private) |
SmCrvOnSurf::SurfaceCurveMaxDistanceBetween | SmCrvOnSurf.cpp:1663 | 418 | [CrvOnSurf::surface_curve_max_distance_between], [SurfaceCurveGap] |
SmCrvOnSurf::ReadFromDB | SmCrvOnSurf.cpp:2198 | 92 | [CrvOnSurf::read_from_db] |
SmCrvOnSurf::IsKindOf | SmCrvOnSurf.cpp:2295 | 4 | [CrvOnSurf::is_kind_of] |
Module file-header table (32 rows)
| Rust | Upstream |
|---|---|
[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], Clone | copy 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