occ
Loading...
Searching...
No Matches
improve_quality.h File Reference
#include <algorithm>
#include <ankerl/unordered_dense.h>
#include <cmath>
#include <cstdint>
#include <occ/core/linear_algebra.h>
#include <occ/core/log.h>
#include <occ/geometry/half_edge.h>
#include <occ/isosurface/mesh_utils.h>
#include <occ/isosurface/projection.h>
#include <vector>
#include <numbers>
Include dependency graph for improve_quality.h:

Classes

struct  occ::isosurface::QualityParams
struct  occ::isosurface::AngleStats

Namespaces

namespace  occ
namespace  occ::isosurface
namespace  occ::isosurface::impl

Functions

FVec3 occ::isosurface::impl::vert_at (const std::vector< float > &V, int i)
float occ::isosurface::impl::tri_min_angle (const FVec3 &a, const FVec3 &b, const FVec3 &c)
FVec3 occ::isosurface::impl::face_normal (const FVec3 &a, const FVec3 &b, const FVec3 &c)
uint64_t occ::isosurface::impl::edge_key (int a, int b)
int occ::isosurface::impl::flip_sweep (occ::geometry::HalfEdgeMesh &mesh, const std::vector< float > &V, float feat_cos)
template<typename Func>
int occ::isosurface::impl::relax_sweep (const Func &func, float iso, const occ::geometry::HalfEdgeMesh &mesh, std::vector< float > &V, float feat_cos, float lambda, int proj_steps)
template<typename Func>
int occ::isosurface::impl::collapse_short_edges (const Func &func, float iso, std::vector< float > &V, std::vector< float > &N, std::vector< float > &C, std::vector< uint32_t > &F, float ratio)
AngleStats occ::isosurface::triangle_angle_stats (const std::vector< float > &V, const std::vector< uint32_t > &F)
template<typename Func>
void occ::isosurface::improve_mesh_quality (const Func &func, float isovalue, const QualityParams &params, std::vector< float > &V, std::vector< float > &N, std::vector< float > &C, std::vector< uint32_t > &F)