OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
priv::IntersectionSources Struct Reference

Corefine visitor Store intersection source for vertices of constrained edge of tm1 Must be used with corefine flag no modification of tm2. More...

Collaboration diagram for priv::IntersectionSources:

Public Member Functions

void intersection_point_detected (std::size_t i_id, int sdim, HI h_f, HI h_e, const CutMesh &tm_f, const CutMesh &tm_e, bool is_target_coplanar, bool is_source_coplanar)
void new_vertex_added (std::size_t i_id, VI v, const CutMesh &tm)
 Store VI to intersections by i_id.
void before_subface_creations (FI, CutMesh &)
void after_subface_created (FI, CutMesh &)
void after_subface_creations (CutMesh &)
void before_subface_created (CutMesh &)
void before_edge_split (HI, CutMesh &)
void edge_split (HI, CutMesh &)
void after_edge_split ()
void add_retriangulation_edge (HI, CutMesh &)

Public Attributes

const CutMesh * patch
const CutMesh * model
VertexSourceMap vmap
Sources * sources

Detailed Description

Corefine visitor Store intersection source for vertices of constrained edge of tm1 Must be used with corefine flag no modification of tm2.

Member Function Documentation

◆ add_retriangulation_edge()

void priv::IntersectionSources::add_retriangulation_edge ( HI ,
CutMesh &  )
inline
2451{}

◆ after_edge_split()

void priv::IntersectionSources::after_edge_split ( )
inline
2450{}

◆ after_subface_created()

void priv::IntersectionSources::after_subface_created ( FI ,
CutMesh &  )
inline
2445{}

◆ after_subface_creations()

void priv::IntersectionSources::after_subface_creations ( CutMesh & )
inline
2446{}

◆ before_edge_split()

void priv::IntersectionSources::before_edge_split ( HI ,
CutMesh &  )
inline
2448{}

◆ before_subface_created()

void priv::IntersectionSources::before_subface_created ( CutMesh & )
inline
2447{}

◆ before_subface_creations()

void priv::IntersectionSources::before_subface_creations ( FI ,
CutMesh &  )
inline
2444{}

◆ edge_split()

void priv::IntersectionSources::edge_split ( HI ,
CutMesh &  )
inline
2449{}

◆ intersection_point_detected()

void priv::IntersectionSources::intersection_point_detected ( std::size_t i_id,
int sdim,
HI h_f,
HI h_e,
const CutMesh & tm_f,
const CutMesh & tm_e,
bool is_target_coplanar,
bool is_source_coplanar )
inline
2390 {
2391 Source source;
2392 if (&tm_e == model) {
2393 source = {h_e, sdim};
2394 // check other CGAL model that is patch
2395 assert(&tm_f == patch);
2396 if (is_target_coplanar) {
2397 assert(sdim == 0);
2398 vmap[tm_f.source(h_f)] = source;
2399 }
2400 if (is_source_coplanar) {
2401 assert(sdim == 0);
2402 vmap[tm_f.target(h_f)] = source;
2403 }
2404
2405 // clear source to be able check that this intersection source is
2406 // not used any more
2407 if (is_source_coplanar || is_target_coplanar) source = {};
2408 } else {
2409 source = {h_f, sdim};
2410 assert(&tm_f == model && &tm_e == patch);
2411 assert(!is_target_coplanar);
2412 assert(!is_source_coplanar);
2413 // if (is_target_coplanar) vmap[tm_e.source(h_e)] = source;
2414 // if (is_source_coplanar) vmap[tm_e.target(h_e)] = source;
2415 // if (sdim == 0)
2416 // vmap[tm_e.target(h_e)] = source;
2417 }
2418
2419 // By documentation i_id is consecutive.
2420 // check id goes in a row, without skips
2421 assert(sources->size() == i_id);
2422 // add source of intersection
2423 sources->push_back(source);
2424 }
@ Source
Definition PluginSort.hpp:21
Sources * sources
Definition CutSurface.cpp:2379
const CutMesh * patch
Definition CutSurface.cpp:2372
const CutMesh * model
Definition CutSurface.cpp:2373
VertexSourceMap vmap
Definition CutSurface.cpp:2375

References model, patch, sources, and vmap.

◆ new_vertex_added()

void priv::IntersectionSources::new_vertex_added ( std::size_t i_id,
VI v,
const CutMesh & tm )
inline

Store VI to intersections by i_id.

Parameters
i_idOrder number of intersection point
vNew added vertex
tmAffected mesh
2433 {
2434 // check that it is first insertation into item of vmap
2435 assert(!vmap[v].hi.is_valid());
2436 // check valid addresing into sources
2437 assert(i_id < sources->size());
2438 // check that source has value
2439 assert(sources->at(i_id).hi.is_valid());
2440 vmap[v] = sources->at(i_id);
2441 }

References sources, and vmap.

Member Data Documentation

◆ model

const CutMesh* priv::IntersectionSources::model

◆ patch

const CutMesh* priv::IntersectionSources::patch

◆ sources

Sources* priv::IntersectionSources::sources

◆ vmap

VertexSourceMap priv::IntersectionSources::vmap

The documentation for this struct was generated from the following file:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/CutSurface.cpp