Program Listing for File ridge_set_maker.h
↰ Return to documentation for file (src/ridge_impl/ridge_set_maker.h)
#pragma once
#include <unordered_set> // for unordered_set
#include <vector> // for vector
#include "ridge_impl/ridge.h" // for Ridge
#include "ridge_impl/ridge_connection.h"
#include "ridge_impl/ridge_mesh.h"
#include "tal/vector3.h"
namespace sota {
class RidgeConnection;
class RidgeMesh;
using RidgeMeshPointerVector = std::vector<RidgeMesh*>;
using RidgeVector = std::vector<Ridge>;
class RidgeSetMaker {
public:
RidgeSetMaker(RidgeMeshPointerVector meshes) : _meshes(meshes) {}
std::vector<RidgeConnection> construct(float offset);
private:
RidgeMeshPointerVector _meshes;
std::unordered_set<RidgeMesh*> _visited;
unsigned int unvisited_neighbours_count(const RidgeMesh* mesh) const;
RidgeMeshPointerVector unvisited_neighbours(const RidgeMesh* mesh) const;
};
} // namespace sota