Units / query
query.tess partial
- Layer
- 45
- Upstream lines
- 838
- Functions
- 21
- Rust module
query::tess
Source: crates/solidcore/src/query/tess.rs
Upstream: source/SMLib/inc/SmTess.h, source/SMLib/src/SmTess.cpp
Notes
PARTIAL: difftest 676 cases (28 upstream-derived fixtures: smTessTest.cpp tolerances / SmTess.cpp cache construction on Surface.sms, DropCurveSurface.sms, offset_nurb.sms + 48 adversarial review fixtures incl. 8 on SmPlane + 600 generated, 12% on bounded SmPlane surfaces: constructor/getters/drivers, TestAgainstTolerances incl. view-based silhouette retests, BuildTreeWithSubdivision, ImplantUVSegment, MarkFaceContainment, full BuildTree with poly boundaries, SmPolyToEUVUAttr MakeCopy; scales 1e-3..1e3), 665 bit-identical, 0 failed, 11 deferred (intersect.curve_class_p4 via FindTessellationSplits in block subdivision); perturbation 665/665 detected. Review fix: BuildTree on a plane / surface of revolution makes the missing NURB first (GetOrCreateGwNurbPointer). Not compared: SmSurfOfRevolution faces, face-owned surfaces (GetTree rebuild branch), CurveBounded/STEP faces (base BuildTree, unported via surface.surface_p6), and the FFI-rejected Implant-without-tree / Test-without-driver / Mark-without-poly-B-rep inputs. Wired UNPORTED(query.tess) subdivision-surface split in SurfaceCache::SubdivideNode (SnapToKnots/SplitAt, halves named by SurfaceCache::set_subdivision_handles); added ToleranceTester hook (subdivide_to_tolerances_with/build_tree_with) for the virtual TestAgainstTolerances and find_uv_nodes_built; surface.surface_cache_p3 (38) and surface.trim_srf_cache (4) query.tess deferrals now compare (0 failed). SmPolyToEUVUAttr/SmPolyEdgeToVertexUseAttr are AttributeValue variants in geom::attribute. Builds on query.poly (PR #73). 21 fns; largest: SmTessSrfCache::BuildTree, SmTessSrfCache::MarkFaceContainment, SmTessSrfCache::ImplantUVSegment, SmTessSrfCache::BuildTreeWithSubdivision; unit-SCC #22 (220 units); only 8 of 838 lines survive RTA (reached via virtual dispatch to classes no in-scope entry point constructs); low priority / likely deferrable; 319 upstream test entry points reach this unit
Difftest
- Cases
- 676
- Passed
- 665
- Deferred
- 11
- 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 | 11 |
Report JSON (per-case results)
Dependencies
Depends on: geom.attribute green geom.extent2d green geom.object partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_surface_p1 green query.poly partial surface.surface_cache_p1 green surface.surface_cache_p2 partial surface.surface_cache_p3 partial surface.trim_srf_cache partial
Soft dependencies: geom.extent1d green geom.tree partial surface.surface_p2 partial surface.surface_p7 partial topology.face_p2 partial
Dependents: audit.recursion todo
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmPolyToEUVUAttr::SmPolyToEUVUAttr | SmTess.h:79 | 7 | [poly_to_euvu_attribute], [AttributeValue::PolyToEuVu] |
SmPolyToEUVUAttr::~SmPolyToEUVUAttr | SmTess.h:87 | 1 | |
SmTessSrfCache::GetFace | SmTess.h:171 | 1 | [TessSrfCache::face], [TessSrfCache::ts_poly_brep] |
SmTessSrfCache::GetType | SmTess.h:230 | 1 | [TYPE], [TYPE_STRING], [TessSrfCache::type_code], [TessSrfCache::type_string] |
SmTessSrfCache::GetTypeString | SmTess.h:230 | 1 | [TYPE], [TYPE_STRING], [TessSrfCache::type_code], [TessSrfCache::type_string] |
SmSurfaceTessDriver::GetType | SmTess.h:396 | 1 | [SurfaceTessDriver::type_code], [SURFACE_TESS_DRIVER_TYPE], [VIEW_BASED_TESS_DRIVER_TYPE] |
SmViewBasedTessDriver::GetType | SmTess.h:451 | 1 | [SurfaceTessDriver::type_code], [SURFACE_TESS_DRIVER_TYPE], [VIEW_BASED_TESS_DRIVER_TYPE] |
SmViewBasedTessDriver::GetViewVector | SmTess.h:453 | 1 | [SurfaceTessDriver::view_vector], [SurfaceTessDriver::silhouette_chord_height], [SurfaceTessDriver::silhouette_angle_tolerance] |
SmViewBasedTessDriver::GetSilhouetteChordHeight | SmTess.h:454 | 1 | [SurfaceTessDriver::view_vector], [SurfaceTessDriver::silhouette_chord_height], [SurfaceTessDriver::silhouette_angle_tolerance] |
SmViewBasedTessDriver::GetSilhouetteAngleTolerance | SmTess.h:455 | 1 | [SurfaceTessDriver::view_vector], [SurfaceTessDriver::silhouette_chord_height], [SurfaceTessDriver::silhouette_angle_tolerance] |
SmPolyToEUVUAttr::MakeCopy | SmTess.cpp:797 | 10 | [Attribute::make_copy] (unit geom.attribute) |
SmPolyEdgeToVertexUseAttr::SmPolyEdgeToVertexUseAttr | SmTess.cpp:986 | 4 | [poly_edge_to_vertex_use_attribute], [AttributeValue::PolyEdgeToVertexUse] |
SmPolyEdgeToVertexUseAttr::~SmPolyEdgeToVertexUseAttr | SmTess.cpp:991 | 1 | |
SmPolyEdgeToVertexUseAttr::MakeCopy | SmTess.cpp:993 | 6 | [Attribute::make_copy] (unit geom.attribute) |
SmTessSrfCache::TestAgainstTolerances | SmTess.cpp:12622 | 94 | [TessSrfCache::test_against_tolerances] |
SmTessSrfCache::BuildTreeWithSubdivision | SmTess.cpp:13103 | 97 | [TessSrfCache::build_tree_with_subdivision] |
SmTessSrfCache::BuildTree | SmTess.cpp:13215 | 278 | [TessSrfCache::build_tree] |
SmTessSrfCache::ImplantUVSegment | SmTess.cpp:14293 | 137 | [TessSrfCache::implant_uv_segment] |
SmTessSrfCache::MarkFaceContainment | SmTess.cpp:14437 | 185 | [TessSrfCache::mark_face_containment] |
SmTessSrfCache::~SmTessSrfCache | SmTess.cpp:14660 | 6 | Drop (implicit) |
SmTessSrfCache::IsKindOf | SmTess.cpp:14671 | 4 | [is_kind_of], [TessSrfCache::is_kind_of] |
Module file-header table (18 rows)
| Rust | Upstream |
|---|---|
[TessSrfCache], [TessHandle] | SmTessSrfCache (and the pointers it stores) |
[TessSrfCache::new] | SmTessSrfCache::SmTessSrfCache |
Drop (implicit) | SmTessSrfCache::~SmTessSrfCache |
[TessSrfCache::face], [TessSrfCache::ts_poly_brep] | GetFace, GetTS_PolyBrep |
[TYPE], [TYPE_STRING], [TessSrfCache::type_code], [TessSrfCache::type_string] | SmTessSrfCache::GetType, GetTypeString (SM_COMMON) |
[is_kind_of], [TessSrfCache::is_kind_of] | SmTessSrfCache::IsKindOf |
[TessSrfCache::test_against_tolerances] | SmTessSrfCache::TestAgainstTolerances |
[TessSrfCache::build_tree_with_subdivision] | SmTessSrfCache::BuildTreeWithSubdivision |
[TessSrfCache::build_tree] | SmTessSrfCache::BuildTree |
[TessSrfCache::implant_uv_segment] | SmTessSrfCache::ImplantUVSegment |
[TessSrfCache::mark_face_containment] | SmTessSrfCache::MarkFaceContainment |
[SurfaceTessDriver], [SurfaceTessDriver::new], [SurfaceTessDriverOptions] | SmSurfaceTessDriver, its constructor and default arguments |
[SurfaceTessDriver::view_based], [ViewBasedTessDriverOptions], [ViewBased] | SmViewBasedTessDriver, its constructor and default arguments |
[SurfaceTessDriver::type_code], [SURFACE_TESS_DRIVER_TYPE], [VIEW_BASED_TESS_DRIVER_TYPE] | SmSurfaceTessDriver::GetType, SmViewBasedTessDriver::GetType |
[SurfaceTessDriver::view_vector], [SurfaceTessDriver::silhouette_chord_height], [SurfaceTessDriver::silhouette_angle_tolerance] | SmViewBasedTessDriver::GetViewVector, GetSilhouetteChordHeight, GetSilhouetteAngleTolerance |
[poly_to_euvu_attribute], [AttributeValue::PolyToEuVu] | SmPolyToEUVUAttr::SmPolyToEUVUAttr (~ is Drop) |
[poly_edge_to_vertex_use_attribute], [AttributeValue::PolyEdgeToVertexUse] | SmPolyEdgeToVertexUseAttr::SmPolyEdgeToVertexUseAttr (~ is Drop) |
[Attribute::make_copy] (unit geom.attribute) | SmPolyToEUVUAttr::MakeCopy, SmPolyEdgeToVertexUseAttr::MakeCopy |
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