WIP on pillar grouping
This commit is contained in:
parent
d3a2f11e29
commit
5f63b4496d
@ -21,7 +21,7 @@ class Properties
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
constexpr bool group_pillars() const noexcept { return false; }
|
constexpr bool group_pillars() const noexcept { return true; }
|
||||||
|
|
||||||
// Maximum slope for bridges of the tree
|
// Maximum slope for bridges of the tree
|
||||||
Properties &max_slope(double val) noexcept
|
Properties &max_slope(double val) noexcept
|
||||||
|
@ -198,6 +198,9 @@ PointCloud::PointCloud(std::vector<Node> meshpts,
|
|||||||
for (size_t i = 0; i < m_leafs.size(); ++i) {
|
for (size_t i = 0; i < m_leafs.size(); ++i) {
|
||||||
Node &n = m_leafs[i];
|
Node &n = m_leafs[i];
|
||||||
n.id = int(LEAFS_BEGIN + i);
|
n.id = int(LEAFS_BEGIN + i);
|
||||||
|
n.left = Node::ID_NONE;
|
||||||
|
n.right = Node::ID_NONE;
|
||||||
|
|
||||||
m_ktree.insert({n.pos, n.id});
|
m_ktree.insert({n.pos, n.id});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -382,20 +382,20 @@ void create_branching_tree(SupportTreeBuilder &builder, const SupportableMesh &s
|
|||||||
BranchingTreeBuilder vbuilder{builder, sm, nodes};
|
BranchingTreeBuilder vbuilder{builder, sm, nodes};
|
||||||
branchingtree::build_tree(nodes, vbuilder);
|
branchingtree::build_tree(nodes, vbuilder);
|
||||||
|
|
||||||
|
std::cout << "Original pillar count: " << vbuilder.pillars().size() << std::endl;
|
||||||
|
|
||||||
if constexpr (props.group_pillars()) {
|
if constexpr (props.group_pillars()) {
|
||||||
|
|
||||||
std::vector<branchingtree::Node> bedleafs;
|
std::vector<branchingtree::Node> bedleafs;
|
||||||
for (auto n : vbuilder.pillars()) {
|
std::copy(vbuilder.pillars().begin(), vbuilder.pillars().end(), std::back_inserter(bedleafs));
|
||||||
n.left = branchingtree::Node::ID_NONE;
|
|
||||||
n.right = branchingtree::Node::ID_NONE;
|
|
||||||
bedleafs.emplace_back(n);
|
|
||||||
}
|
|
||||||
|
|
||||||
branchingtree::PointCloud gndnodes{{}, nodes.get_bedpoints(), bedleafs, props};
|
branchingtree::PointCloud gndnodes{{}, nodes.get_bedpoints(), bedleafs, props};
|
||||||
BranchingTreeBuilder gndbuilder{builder, sm, gndnodes};
|
BranchingTreeBuilder gndbuilder{builder, sm, gndnodes};
|
||||||
branchingtree::build_tree(gndnodes, gndbuilder);
|
branchingtree::build_tree(gndnodes, gndbuilder);
|
||||||
|
|
||||||
|
std::cout << "Grouped pillar count: " << gndbuilder.pillars().size() << std::endl;
|
||||||
build_pillars(builder, gndbuilder, sm);
|
build_pillars(builder, gndbuilder, sm);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
build_pillars(builder, vbuilder, sm);
|
build_pillars(builder, vbuilder, sm);
|
||||||
}
|
}
|
||||||
|
@ -629,7 +629,7 @@ std::optional<Head> calculate_pinhead_placement(Ex policy,
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (optimize_pinhead_placement(policy, sm, head)) {
|
if (optimize_pinhead_placement(policy, sm, head)) {
|
||||||
head.id = suppt_idx;
|
head.id = long(suppt_idx);
|
||||||
|
|
||||||
return head;
|
return head;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user