OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
QuadricEdgeCollapse.cpp File Reference
#include "QuadricEdgeCollapse.hpp"
#include <cstddef>
#include <algorithm>
#include <functional>
#include <cstdint>
#include <array>
#include <limits>
#include <cmath>
#include <cassert>
#include <cstdlib>
#include <iterator>
#include <tuple>
#include <optional>
#include "MutablePriorityQueue.hpp"
#include "libslic3r.h"
#include "Point.hpp"
#include <tbb/parallel_for.h>
#include <vector>
#include <utility>
Include dependency graph for QuadricEdgeCollapse.cpp:

Go to the source code of this file.

Classes

class  QuadricEdgeCollapse::SymMat
struct  QuadricEdgeCollapse::Error
struct  QuadricEdgeCollapse::TriangleInfo
struct  QuadricEdgeCollapse::VertexInfo
struct  QuadricEdgeCollapse::EdgeInfo
struct  QuadricEdgeCollapse::CopyEdgeInfo

Namespaces

namespace  QuadricEdgeCollapse

Typedefs

using QuadricEdgeCollapse::Vertices = std::vector<stl_vertex>
using QuadricEdgeCollapse::Triangle = stl_triangle_vertex_indices
using QuadricEdgeCollapse::Indices = std::vector<stl_triangle_vertex_indices>
using QuadricEdgeCollapse::ThrowOnCancel = std::function<void(void)>
using QuadricEdgeCollapse::StatusFn = std::function<void(int)>
using QuadricEdgeCollapse::Errors = std::vector<Error>
using QuadricEdgeCollapse::TriangleInfos = std::vector<TriangleInfo>
using QuadricEdgeCollapse::VertexInfos = std::vector<VertexInfo>
using QuadricEdgeCollapse::EdgeInfos = std::vector<EdgeInfo>
using QuadricEdgeCollapse::CopyEdgeInfos = std::vector<CopyEdgeInfo>

Functions

Vec3d QuadricEdgeCollapse::create_normal (const Triangle &triangle, const Vertices &vertices)
std::array< Vec3d, 3 > QuadricEdgeCollapse::create_vertices (uint32_t id_v1, uint32_t id_v2, const Vertices &vertices)
std::array< double, 3 > QuadricEdgeCollapse::vertices_error (const SymMat &q, const std::array< Vec3d, 3 > &vertices)
double QuadricEdgeCollapse::calculate_determinant (const SymMat &q)
double QuadricEdgeCollapse::calculate_error (uint32_t id_v1, uint32_t id_v2, const SymMat &q, const Vertices &vertices)
Vec3f QuadricEdgeCollapse::calculate_vertex (uint32_t id_v1, uint32_t id_v2, const SymMat &q, const Vertices &vertices)
Vec3d QuadricEdgeCollapse::calculate_vertex (double det, const SymMat &q)
double QuadricEdgeCollapse::vertex_error (const SymMat &q, const Vec3d &vertex)
SymMat QuadricEdgeCollapse::create_quadric (const Triangle &t, const Vec3d &n, const Vertices &vertices)
std::tuple< TriangleInfos, VertexInfos, EdgeInfos, Errors > QuadricEdgeCollapse::init (const indexed_triangle_set &its, ThrowOnCancel &throw_on_cancel, StatusFn &status_fn)
std::optional< uint32_t > QuadricEdgeCollapse::find_triangle_index1 (uint32_t vi, const VertexInfo &v_info, uint32_t ti, const EdgeInfos &e_infos, const Indices &indices)
void QuadricEdgeCollapse::reorder_edges (EdgeInfos &e_infos, const VertexInfo &v_info, uint32_t ti0, uint32_t ti1)
bool QuadricEdgeCollapse::is_flipped (const Vec3f &new_vertex, uint32_t ti0, uint32_t ti1, const VertexInfo &v_info, const TriangleInfos &t_infos, const EdgeInfos &e_infos, const indexed_triangle_set &its)
bool QuadricEdgeCollapse::degenerate (uint32_t vi, uint32_t ti0, uint32_t ti1, const VertexInfo &v_info, const EdgeInfos &e_infos, const Indices &indices)
bool QuadricEdgeCollapse::create_no_volume (uint32_t vi0, uint32_t vi1, uint32_t ti0, uint32_t ti1, const VertexInfo &v_info0, const VertexInfo &v_info1, const EdgeInfos &e_infos, const Indices &indices)
Vec3d QuadricEdgeCollapse::calculate_3errors (const Triangle &t, const Vertices &vertices, const VertexInfos &v_infos)
Error QuadricEdgeCollapse::calculate_error (uint32_t ti, const Triangle &t, const Vertices &vertices, const VertexInfos &v_infos, unsigned char &min_index)
void QuadricEdgeCollapse::remove_triangle (EdgeInfos &e_infos, VertexInfo &v_info, uint32_t ti)
void QuadricEdgeCollapse::change_neighbors (EdgeInfos &e_infos, VertexInfos &v_infos, uint32_t ti0, uint32_t ti1, uint32_t vi0, uint32_t vi1, uint32_t vi_top0, const Triangle &t1, CopyEdgeInfos &infos, EdgeInfos &e_infos1)
void QuadricEdgeCollapse::compact (const VertexInfos &v_infos, const TriangleInfos &t_infos, const EdgeInfos &e_infos, indexed_triangle_set &its)

Variables

const uint32_t QuadricEdgeCollapse::check_cancel_period = 16
const size_t QuadricEdgeCollapse::max_triangle_count_for_one_vertex = 50
const int QuadricEdgeCollapse::status_init_size = 10
const int QuadricEdgeCollapse::status_normal_size = 25
const int QuadricEdgeCollapse::status_sum_quadric = 25
const int QuadricEdgeCollapse::status_set_offsets = 10
const int QuadricEdgeCollapse::status_calc_errors = 30
const int QuadricEdgeCollapse::status_create_refs = 10