Skip to content

feat: add static Compute() overloads accepting levelRatio and minCoarseVertices #68

@csparker247

Description

@csparker247

HierarchicalLSCM::setLevelRatio() and setMinCoarseVertices() are only accessible via the instance API. Users who want non-default hierarchy parameters with the static convenience API must construct an instance, configure it, and call compute() instead of the simpler Compute(mesh) form.

Add static overloads:

static void Compute(Mesh::Pointer& mesh, std::size_t levelRatio, std::size_t minCoarseVerts);
static void Compute(Mesh::Pointer& mesh, std::size_t pin0, std::size_t pin1, std::size_t levelRatio, std::size_t minCoarseVerts);

Identified during code review of PR #44 (low priority).

Status (2026-06-15)

PR #93 introduced the PinMap interface, so the second proposed signature was adapted to:

static void Compute(Mesh::Pointer& mesh, const PinMap& pins, std::size_t levelRatio, std::size_t minCoarseVerts);

That overload has been implemented (track A10).

The first overload — Compute(mesh, levelRatio, minCoarseVerts) — cannot be added today: its (Mesh::Pointer&, size_t, size_t) signature collides with the still-present [[deprecated]] Compute(mesh, pin0Idx, pin1Idx) overload. It is blocked by #96 (remove 3.0-deprecated LSCM/HLSCM functions); once that lands, this overload can be added in a follow-up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions