FuncViz lib
Generalized bitree/quadtree/octree library
Loading...
Searching...
No Matches
mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps > Class Template Reference

Template class used to store and transform cell complexes (mesh/triangluation/etc...) and data sets generated from MR_rect_tree sample data. More...

#include <MR_cell_cplx.hpp>

Cells.

enum class  cell_stat_t {
  GOOD , TOO_FEW_PNT , TOO_MANY_PNT , NEG_PNT_IDX ,
  BIG_PNT_IDX , DUP_PNT , DIM_LOW , BAD_EDGEI ,
  BAD_FACEI , FACE_BENT , CONCAVE
}
 Cell Status. More...
 
enum class  cell_kind_t {
  POINT , SEGMENT , TRIANGLE , QUAD ,
  HEXAHEDRON , PYRAMID
}
 Cell Types. More...
 
typedef node_idx_list_t cell_verts_t
 Type to hold the vertexes of a poly cell.
 
typedef cell_lst_t cell_structure_t
 Cell segment/face/etc structure.
 
typedef std::vector< cell_verts_tcell_lst_t
 Type for a list of poly cells.
 
typedef std::set< cell_verts_tuniq_cell_lst_t
 Used to uniquify cells.
 
cell_lst_t cell_lst
 House all poly cells.
 
uniq_cell_lst_t uniq_cell_lst
 Unique cell list.
 
bool last_cell_new = true
 True if the last cell given to the add_cell() method was new – i.e.
 
cell_stat_t last_cell_stat = cell_stat_t::GOOD
 Status of the last cell added via add_cell() method.
 
int num_cells () const
 Number of cells.
 
cell_structure_tcell_kind_to_structure (cell_kind_t cell_kind, int dimension) const
 Convert cell_kind_t value to a list of vertexes.
 
int cell_kind_to_dimension (cell_kind_t cell_kind) const
 Convert cell_kind_t value to the logical dimension of the cell.
 
int cell_kind_to_req_pt_cnt (cell_kind_t cell_kind) const
 Convert cell_kind_t value to the number of points required for cell type.
 
int cell_kind_to_vtk_type (cell_kind_t cell_kind) const
 Convert cell_kind_t value to the VTK cell type integer.
 
std::string cell_kind_to_string (cell_kind_t cell_kind) const
 Convert cell_kind_t value to the VTK cell type integer.
 
cell_kind_t req_pt_cnt_to_cell_kind (std::vector< int >::size_type node_count) const
 Convert number of points in a cell to cell_kind_t.
 
bool cell_stat_is_good (cell_stat_t cell_stat) const
 Convert cell_stat_t to a bool (true if GOOD).
 
bool cell_stat_is_bad (cell_stat_t cell_stat) const
 Convert cell_stat_t to a bool (true if BAD).
 
std::string cell_stat_to_string (cell_stat_t cell_stat) const
 Convert cell_stat_t enum value to a string.
 
cell_stat_t check_cell_vertexes (cell_kind_t cell_kind, cell_verts_t cell_verts) const
 Perform cell vertex checks.
 
cell_stat_t check_cell_dimension (cell_kind_t cell_kind, cell_verts_t cell_verts) const
 Perform cell dimension (2D cells must not be colinear & 3D cells must not be coplainer)
 
cell_stat_t check_cell_edge_intersections (cell_kind_t cell_kind, cell_verts_t cell_verts) const
 Checks that cell edges have expected intersections.
 
cell_stat_t check_cell_face_intersections (cell_kind_t cell_kind, cell_verts_t cell_verts) const
 Checks that cell faces have expected intersections.
 
cell_stat_t check_cell_faces_plainer (cell_kind_t cell_kind, cell_verts_t cell_verts) const
 Check if the vertexes of a cell are coplainer.
 
int add_cell (cell_kind_t new_cell_kind, cell_verts_t new_cell_verts, int dimension)
 Add parts of a cell of the specified dimension.
 
bool add_cell (cell_kind_t new_cell_kind, cell_verts_t new_cell_verts)
 Add a cell.
 
cell_stat_t status_of_last_cell_added () const
 Retruns the status of the last cell given to the add_cell() method.
 
bool last_cell_added_was_new () const
 Retruns true if the last cell given to the add_cell() was new and the return value of status_of_last_cell_added() is cell_stat_t::GOOD.
 

3D Geometry Computations.

Methods with geomi_ prefix take point index types while methods with a geomr_ prefix take double tuples.


enum class  seg_isect_t {
  C0_EMPTY , C1_VERTEX1 , C1_INTERIOR , CI_VERTEX2 ,
  CI_VERTEX1 , CI_VERTEX0 , BAD_SEGMENT
}
 Segment intersection types. More...
 
std::string seg_isect_to_string (seg_isect_t seg_isect) const
 Convert an seg_isect_t to a string.
 
seg_isect_t geomi_seg_isect_type (node_idx_t ilin1pnt1, node_idx_t ilin1pnt2, node_idx_t ilin2pnt1, node_idx_t ilin2pnt2) const
 Determine the nature of the intersection between two line segments.
 
bool geomi_seg_isect1 (node_idx_t ilin1pnt1, node_idx_t ilin1pnt2, node_idx_t ilin2pnt1, node_idx_t ilin2pnt2) const
 Check if two line segments intersect in a single point.
 
bool geomr_seg_isect1 (const fvec3_t &lin1pnt1, const fvec3_t &lin1pnt2, const fvec3_t &lin2pnt1, const fvec3_t &lin2pnt2) const
 Check if two line segments intersect in a single point.
 
uft_t geomi_pnt_line_distance (node_idx_t ilinpnt1, node_idx_t ilinpnt2, node_idx_t ipnt, bool seg_distance) const
 Distance between a point and a line.
 
uft_t geomr_pnt_line_distance (const fvec3_t &linpnt1, const fvec3_t &linpnt2, const fvec3_t &pnt, bool seg_distance) const
 Distance between a point and a line.
 
uft_t geomr_pnt_pnt_distance (const fvec3_t &pnt1, const fvec3_t &pnt2) const
 Compute the euculedian (2 norm) distance between two points.
 
fvec3_t geomr_tri_normal (const fvec3_t &tripnt1, const fvec3_t &tripnt2, const fvec3_t &tripnt3, bool unit) const
 Compute the normal of a triangle (or a plane defined by 3 points)
 
uft_t geomr_pnt_pln_distance (const fvec3_t &plnpnt1, const fvec3_t &plnpnt2, const fvec3_t &plnpnt3, const fvec3_t &pnt) const
 Compute the distance between a point and a plane.
 
uft_t geomr_pnt_tri_distance (const fvec3_t &tripnt1, const fvec3_t &tripnt2, const fvec3_t &tripnt3, const fvec3_t &pnt) const
 Compute the distance between a point and a triangle.
 
bool geomr_pnt_zero (const fvec3_t &p1) const
 Check if points (just one point for this function) are zero.
 
bool geomi_pts_colinear (node_idx_t pi1, node_idx_t pi2, node_idx_t pi3, node_idx_t pi4) const
 Check if points are colinear.
 
bool geomi_pts_colinear (node_idx_t pi1, node_idx_t pi2, node_idx_t pi3) const
 Check if points are colinear.
 
bool geomr_pts_colinear (fvec3_t p1, fvec3_t p2, fvec3_t p3) const
 Check if points are colinear.
 
bool geomi_pts_coplanar (const node_idx_list_t &pnt_list) const
 Check if points are coplanar.
 
bool geomi_pts_coplanar (node_idx_t pi1, node_idx_t pi2, node_idx_t pi3, node_idx_t pi4) const
 Check if points are coplanar.
 
bool geomr_pts_coplanar (fvec3_t p1, fvec3_t p2, fvec3_t p3, fvec3_t p4) const
 Check if points are coplanar.
 
bool geomr_seg_tri_intersection (fvec3_t tp1, fvec3_t tp2, fvec3_t tp3, fvec3_t sp1, fvec3_t sp2) const
 Compute intersection of a segment and a triangle.
 

Global Types & Constants.

typedef flt_type uft_t
 Universal floating point type – used for point components, scalar data values, vector components, all computation, etc....
 
static constexpr uft_t epsilon = eps
 epsilon
 
static constexpr uft_t uft_epsilon = std::numeric_limits<uft_t>::epsilon()
 

Node Data.

typedef std::vector< uft_tnode_data_t
 Type to hold a data for a single node.
 
typedef std::variant< int, uft_tnode_data_idx_t
 Type used to hold an index into a node_data_t or a constant MR_cell_cplx::uft_t.
 
typedef std::vector< node_data_idx_tnode_data_idx_lst_t
 Type to hold a list of data indexes – one element for scalars, 3 for vectors, etc....
 
typedef node_data_t vdat_t
 Type to hold a list values extracted from node data via a MR_cell_cplx::node_data_idx_lst_t (also see MR_cell_cplx::fvec3_t).
 
typedef int node_idx_t
 Integer type used to indentify/index nodes.
 
typedef std::vector< node_idx_tnode_idx_list_t
 list of node indexes.
 
typedef std::array< uft_t, 3 > fvec3_t
 Hold a tuple of real values defining a point/vector in R^3 (also see MR_cell_cplx::vdat_t).
 
typedef std::vector< fvec3_tfvec3_list_t
 Hold a list of MR_cell_cplx::fvec3_t objects.
 
typedef std::map< fvec3_t, node_idx_t, pnt_less > pnt_to_node_idx_map_t
 Used to uniquify points and assign point index values.
 
typedef std::vector< node_data_tnode_idx_to_node_data_t
 Type to hold a all node data.
 
node_data_idx_lst_t node_data_to_pnt
 How to construct a point from a node dataset.
 
node_idx_t last_point_idx = -1
 The index of the last point added via the add_node() method.
 
bool last_point_new = true
 True if the last point given to the add_node() method was new – i.e.
 
pnt_to_node_idx_map_t pnt_to_node_idx_map
 Maps points to point index – used to detect points with nearly identical geometric points in R^3.
 
node_idx_to_node_data_t node_idx_to_node_data
 Hold all node data sets.
 
node_idx_t node_count () const
 Return the number of points in the central node data list.
 
fvec3_t get_pnt (node_idx_t pnt_idx) const
 Return point given a node index.
 
node_idx_t idx_of_last_point_added () const
 Retruns the index of the last point given to the add_node() method.
 
node_idx_t last_point_added_was_new () const
 Retruns true if the last point given to the add_node() method was a new point.
 
node_idx_t add_node (node_data_t node_data)
 Add a point to the central node data store.
 
fvec3_t fvec3_from_node_data (node_data_idx_lst_t data_idx_lst, node_data_t node_data) const
 Construct a fvec3_t from a node_data_t and a node_data_idx_lst_t.
 
vdat_t vector_from_node_data (node_data_idx_lst_t data_idx_lst, node_data_t node_data) const
 Construct a vdat_t from a node_data_t and a node_data_idx_lst_t.
 
uft_t scalar_from_node_data (node_data_idx_t data_idx, node_data_t node_data) const
 Extract a uft_t from a node_data_t and a node_data_idx_t.
 
std::string node_to_string (node_idx_t pnt_idx) const
 Convert a fvec3_t to a string representation.
 

Named Node Datasets.

typedef std::string named_data_name_t
 Type to hold a dataset name.
 
typedef std::vector< named_data_name_tnamed_data_name_list_t
 Type to hold a list of dataset names.
 
typedef std::map< named_data_name_t, node_data_idx_lst_tdata_name_to_node_data_idx_lst_t
 Type to map names to named data sets (index lists).
 
data_name_to_node_data_idx_lst_t data_name_to_data_idx_lst
 Hold named descriptions of data (scalars & vectors)
 
int named_scalar_datasets_count () const
 Return the number of named scalar datasets.
 
int named_vector_datasets_count () const
 Return the number of named vector datasets.
 
int named_datasets_count () const
 Return the number of named (both vector and scalar) datasets.
 
void set_data_name_to_data_idx_lst (data_name_to_node_data_idx_lst_t names)
 Create named data sets by setting raw member.
 
void create_named_datasets (named_data_name_list_t scalar_name_strings)
 Create named data sets.
 
void create_named_datasets (named_data_name_list_t scalar_name_strings, data_name_to_node_data_idx_lst_t names)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
void create_dataset_to_point_mapping (node_data_idx_lst_t point_data_index)
 Create mapping beteen node data and geometric pionts.
 

I/O.

typedef int io_result
 Type returned by I/O functions.
 
io_result write_xml_vtk (std::string file_name, std::string description)
 Dump to an XML VTK unstructured grid file.
 
io_result write_legacy_vtk (std::string file_name, std::string description)
 Dump to a legacy VTK UNSTRUCTUREDGRID file.
 
void dump_cplx (int max_num_print) const
 Dump object to STDOUT.
 
io_result write_ply (std::string file_name, std::string description)
 Dump to a PLY file.
 

Complex Computation.

typedef std::function< node_data_t(const node_data_t &)> p2data_func_t
 Function that takes and returns a node_data_t (Node Data Transform)
 
typedef std::function< uft_t(const node_data_t &)> p2real_func_t
 Function that takes node data and returns a float (Node Data SDF)
 
typedef std::function< bool(const node_data_t &)> p2bool_func_t
 Function that takes node data and returns a bool (Node Data Predicate)
 
typedef std::function< bool(const cell_verts_t &)> c2bool_func_t
 Function that takes a cell and returns a bool (Cell Predicate)
 
int cull_cells (c2bool_func_t func)
 Delete cells matching a predicate function.
 
void mirror (std::vector< int > flip_list, uft_t zero_epsilon=epsilon *1000, bool reverse_vertex_order=true)
 Add new cells with points from existing cells with the given coordinates negated.
 
void clear_cache_edge_solver_sdf ()
 Clear the solution cache stored in edge_solver_sdf().
 
node_idx_t edge_solver_sdf (p2data_func_t dat_func, node_idx_t pnt_idx1, node_idx_t pnt_idx2, p2real_func_t sdf_func, uft_t solve_epsilon=epsilon/10)
 Solve an SDF function for zero on a line between two node data sets, and add the solution to the central node data.
 
void triangle_folder (p2data_func_t data_func, p2real_func_t sdf_func, uft_t solve_epsilon=epsilon/10)
 Fold triangles that cross over an SDF function.
 
void segment_folder (p2data_func_t data_func, p2real_func_t sdf_func, uft_t solve_epsilon=epsilon/10)
 Fold segments that cross over an SDF function.
 

3D Vector Computations.

These functions operate on fvec3_t objects (arrays of 3 real numbers), but treat them as 3-vectors.

uft_t vec3_two_norm (const fvec3_t &pnt) const
 Compute the magnitude.
 
uft_t vec3_self_dot_product (const fvec3_t &pnt) const
 Compute the self dot product – i.e.
 
uft_t vec3_dot_product (const fvec3_t &pnt1, const fvec3_t &pnt2) const
 Compute the cross prodcut.
 
fvec3_t vec3_cross_product (const fvec3_t &pnt1, const fvec3_t &pnt2) const
 Compute the cross prodcut.
 
fvec3_t vec3_diff (const fvec3_t &pnt1, const fvec3_t &pnt2) const
 Compute the vector diffrence.
 
uft_t vec3_scalar_triple_product (const fvec3_t &pnt1, const fvec3_t &pnt2, const fvec3_t &pnt3) const
 Compute the vector diffrence.
 
bool vec3_unitize (fvec3_t &pnt) const
 Unitize the given point in place.
 
fvec3_t vec3_linear_combination (uft_t scl1, const fvec3_t &pnt1, uft_t scl2, const fvec3_t &pnt2) const
 Compute the linear combination.
 
uft_t vec3_det3 (const fvec3_t &pnt1, const fvec3_t &pnt2, const fvec3_t &pnt3) const
 Determinant of 3x3 matrix with given vectors as columns/rows.
 

Class utilities.

void clear ()
 

Point Tests & Predicates

bool pnt_has_nan (const fvec3_t &test_pnt)
 Return true if any component of the point has a NaN.
 
int pnt_vs_level (const fvec3_t &test_pnt, int axis_index, uft_t level, uft_t close_epsilon=epsilon)
 Return 0 if point is close to the level, -1 if it is below the level, and 1 if it is above the level.
 

Cell Predicates

bool cell_above_level (const cell_verts_t cell_verts, int level_index, uft_t level, uft_t level_epsilon=epsilon)
 Return true if ALL vertexes are above the level by more than epsilon.
 
bool cell_below_level (const cell_verts_t cell_verts, int level_index, uft_t level, uft_t level_epsilon=epsilon)
 Return true if ALL vertexes are below the level by more than epsilon.
 
bool cell_near_sdf_boundry (const cell_verts_t cell_verts, p2real_func_t sdf_function, uft_t sdf_epsilon=epsilon)
 Return true if cell is near SDF boundry.
 

Detailed Description

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type, flt_type eps>
requires ((std::is_floating_point<flt_type>::value) && (eps > std::numeric_limits<flt_type>::epsilon()))
class mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >

Template class used to store and transform cell complexes (mesh/triangluation/etc...) and data sets generated from MR_rect_tree sample data.

The primary use case is to store and manipulate geometric (i.e. mesh) data derived from MR_rect_tree objects. On the mesh manipulation front the focus is on computations that require knowledge related to the function being approximated.

This code is a quick-n-dirty hack job. I simply wanted to quickly get to a point where I could visually test MR_rect_tree objects. Logically this class should be split into several classes (point, point list, cell, cell list, 3D vectors, 3D analytic geometry, etc...). It's a bit of a mess.

Design Constraints:

  • Geometry
    • Only four types of cells are supported: points, segments, triangles, quads, pyramids, & hexahedrons.
    • No tetrahedrons! This may seem bazaar; however, they are simply not a natural product of MR_rect_tree tessellation.
    • Unlike MR_rect_tree, this class can't operate on data of dimension higher than 3!
  • Data
    • Only point data is supported (i.e. no cell data)
    • Data elements are scalar and/or vector. No tensors, fields, etc...
    • uft_t types are used for atomic data components (scalars are uft_t, and components of vectors are uft_t).
  • Computations/Manipulation
    • Supported is focused on manipulation that benefits from knowledge of the approximated function
    • The idea is that one can use one of the many mesh packages for standard types of mesh computations
  • I/O
    • Write only.
    • VTK files
      • Only Unstructured_Grid files are supported
      • Both legacy & XML files are supported, but they are ASCII only.
      • XML files are serial and self contained
      • Note that NaN's in ASCII legacy files are not properly handled by many VTK applications
  • Error Checking
    • It's pretty limited
    • Memory allocation – you run out, the thing crashes
    • Cells that are a part of other cells may be added (i.e. a segment that is part of an existing triangle)
    • Geometry checks are quite basic, and I don't even bother with things like convexity. ;)

Cells supported:

  • Point
    • Zero-dimensional cell.
    • Defined by a single point.
  • Segment
    • One-dimensional cell.
    • Defined an ordered list of two points.
    • The direction along the line is from the first point to the second point.
  • Triangle
    • Two-dimensional cell.
    • Defined by an ordered list of three points.
    • The points are ordered counterclockwise, defining a surface normal using the right-hand rule.
  • Quadrilateral
    • Two-dimensional cell.
    • Defined by an ordered list of four points.
    • The points are ordered counterclockwise, defining a surface normal using the right-hand rule.
    • The points must be coplainer
    • The quadrilateral is convex and its edges must not intersect.
  • Hexahedron
    • Three-dimensional cell consisting of six quadrilateral faces, twelve edges, and eight vertices.
    • The hexahedron is defined by an ordered list of eight points.
    • The faces and edges must not intersect any other faces and edges, and the hexahedron must be convex.
  • Pyramid

    • Three-dimensional cell consisting of one quadrilateral face, four triangular faces, eight edges, and five vertices.
    • The pyramid is defined by an ordered list of five points.
    • The four points defining the quadrilateral base plane must be convex
    • The fifth point, the apex, must not be co-planar with the base points.
                                                                            HEXAHEDRON                            4
                                                                                                     PYRAMID     .^.
                                                                            3---------2                       .  / \ .
                                      TRIANGLE          QUAD               /|        /|                     .   /   \  .
                                                                          / |       / |                  .     /     \   .
        POINT    SEGMENT                 2            3---------2        7---------6  |                 1...../.......\.....0  Back
                                        / \           |         |        |  |      |  |                 |    /         \    |
        0        0-------1             /   \          |         |        |  0------|--1 Back            |   /           \   |
                                      /     \         |         |        | /       | /                  |  /             \  |
                                     0-------1        |         |        |/        |/                   | /               \ |
                                                      0---------1        4---------5 Front              |/                 \|
                                                                                                        2 ----------------- 3  Front

A number of quality checks may be performed on points and cells before they are added to the object. These checks can slow down execution of add_cell() by an order of magnitude, and almost double the RAM required for this class. These checks are entirely optional.

  • chk_point_unique:
    • Many 3D file formats store the master list of potential points, and then use an integer index into this list when defining geometric objects.
    • Most visualization software is pretty tolerant of having duplicate points on this list when just doing rendering.
    • Duplicate points can break many software packages pretty badly when it comes to computation.
    • Depending on how points are added to this object, this check can avoid quite a bit of wasted RAM and produce much smaller output files.
    • I normally leave this check turned on.
  • chk_cell_unique:
    • Most packages can render objects with duplicate cells, but you might see graphical artifacts or glitching.
    • When using a mesh with duplicate cells, computations can sometimes fail or take a very long time
    • I normally leave this check turned on.
  • chk_cell_vertexes:
    • This check makes sure that cells have the correct number of vertexes and that those vertexes are valid (on the master point list)
    • This check also makes sure cells have no duplicate vertexes.
    • In general this check is pretty cheap, and catches a great many common mesh problems.
    • This is the only check required for cell_kind_t::POINT and cell_kind_t::SEG cells
  • chk_cell_dimension:
    • This check makes sure that PYRAMIDS & HEXAHEDRONS are not co-planar and that TRIANGLES & QUADS are not co-linear.
    • Combined with chk_cell_vertexes this check is all that is required for cell_kind_t::TRIANGLE cells
  • chk_cell_edges:
    • This check makes sure that no cell edges intersect in disallowed ways
    • This check when combined with the above checks, usually produce cells good enough for most software packages.

Levels Of Cell Goodness

 +-------------+-------------------+--------------------+--------------------+-------------------------------+-------------------------------+
 |             | chk_point_unique  | chk_point_unique   | chk_point_unique   | chk_point_unique              | chk_point_unique              |
 |             | chk_cell_unique   | chk_cell_unique    | chk_cell_unique    | chk_cell_unique               | chk_cell_unique               |
 |             | chk_cell_vertexes | chk_cell_vertexes  | chk_cell_vertexes  | chk_cell_vertexes             | chk_cell_vertexes             |
 |             |                   | chk_cell_dimension | chk_cell_dimension | chk_cell_dimension            | chk_cell_dimension            |
 |             |                   |                    | chk_cell_edges     | chk_cell_edges                | chk_cell_edges                |
 |             |                   |                    |                    | check_cell_face_intersections | check_cell_face_intersections |
 |             |                   |                    |                    |                               | check_cell_faces_plainer      |
 |             |                   |                    |                    |                               | check_cell_convex             |
 +-------------+-------------------+--------------------+--------------------+-------------------------------+-------------------------------+
 | vertex      | Perfect           |                    |                    |                               |                               |
 | segment     | Perfect           |                    |                    |                               |                               |
 | triangle    |                   | Perfect            |                    |                               |                               |
 | quad        |                   |                    | Good Enough        |                               | Perfect                       |
 | hexahedron  |                   |                    | Mostly OK          | Good Enough                   | Perfect                       |
 | pyramid     |                   |                    | Good Enough        |                               | Perfect                       |
 +-------------+-------------------+--------------------+--------------------+-------------------------------+-------------------------------+
Template Parameters
chk_point_uniqueOnly allow unique points on the master point list
chk_cell_uniqueOnly allow unique cells on the master cell list. Won't prevent cells that are sub-cells of existing cells.
chk_cell_vertexesDo cell vertex checks (See: cell_stat_t)
chk_cell_dimensionDo cell dimension checks (See: cell_stat_t)
chk_cell_edgesDo cell edge checks (See: cell_stat_t)
flt_typeType for floating point values (
epsEpsilon used to detect zero

Definition at line 211 of file MR_cell_cplx.hpp.

Member Typedef Documentation

◆ c2bool_func_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::function<bool(const cell_verts_t&)> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::c2bool_func_t

Function that takes a cell and returns a bool (Cell Predicate)

Definition at line 1687 of file MR_cell_cplx.hpp.

◆ cell_lst_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::vector<cell_verts_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst_t
private

Type for a list of poly cells.

Definition at line 371 of file MR_cell_cplx.hpp.

◆ cell_structure_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef cell_lst_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_structure_t

Cell segment/face/etc structure.


Definition at line 936 of file MR_cell_cplx.hpp.

◆ cell_verts_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef node_idx_list_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_verts_t

Type to hold the vertexes of a poly cell.

Definition at line 309 of file MR_cell_cplx.hpp.

◆ data_name_to_node_data_idx_lst_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::map<named_data_name_t, node_data_idx_lst_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_node_data_idx_lst_t

Type to map names to named data sets (index lists).

Definition at line 277 of file MR_cell_cplx.hpp.

◆ fvec3_list_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::vector<fvec3_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_list_t

Hold a list of MR_cell_cplx::fvec3_t objects.

Definition at line 261 of file MR_cell_cplx.hpp.

◆ fvec3_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::array<uft_t, 3> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_t

Hold a tuple of real values defining a point/vector in R^3 (also see MR_cell_cplx::vdat_t).


Definition at line 258 of file MR_cell_cplx.hpp.

◆ io_result

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::io_result

Type returned by I/O functions.

Definition at line 1324 of file MR_cell_cplx.hpp.

◆ named_data_name_list_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::vector<named_data_name_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_data_name_list_t

Type to hold a list of dataset names.

Definition at line 274 of file MR_cell_cplx.hpp.

◆ named_data_name_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::string mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_data_name_t

Type to hold a dataset name.

Definition at line 271 of file MR_cell_cplx.hpp.

◆ node_data_idx_lst_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::vector<node_data_idx_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_idx_lst_t

Type to hold a list of data indexes – one element for scalars, 3 for vectors, etc....

Definition at line 243 of file MR_cell_cplx.hpp.

◆ node_data_idx_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::variant<int, uft_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_idx_t

Type used to hold an index into a node_data_t or a constant MR_cell_cplx::uft_t.

Definition at line 240 of file MR_cell_cplx.hpp.

◆ node_data_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::vector<uft_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_t

Type to hold a data for a single node.

Definition at line 237 of file MR_cell_cplx.hpp.

◆ node_idx_list_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::vector<node_idx_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_list_t

list of node indexes.

Definition at line 255 of file MR_cell_cplx.hpp.

◆ node_idx_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_t

Integer type used to indentify/index nodes.

Definition at line 252 of file MR_cell_cplx.hpp.

◆ node_idx_to_node_data_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::vector<node_data_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data_t
private

Type to hold a all node data.

Definition at line 352 of file MR_cell_cplx.hpp.

◆ p2bool_func_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::function<bool(const node_data_t&)> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::p2bool_func_t

Function that takes node data and returns a bool (Node Data Predicate)

Definition at line 1685 of file MR_cell_cplx.hpp.

◆ p2data_func_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::function<node_data_t(const node_data_t&)> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::p2data_func_t

Function that takes and returns a node_data_t (Node Data Transform)

Definition at line 1680 of file MR_cell_cplx.hpp.

◆ p2real_func_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::function<uft_t(const node_data_t&)> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::p2real_func_t

Function that takes node data and returns a float (Node Data SDF)

Definition at line 1683 of file MR_cell_cplx.hpp.

◆ pnt_to_node_idx_map_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::map<fvec3_t, node_idx_t, pnt_less> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_to_node_idx_map_t
private

Used to uniquify points and assign point index values.

Definition at line 346 of file MR_cell_cplx.hpp.

◆ uft_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef flt_type mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uft_t

Universal floating point type – used for point components, scalar data values, vector components, all computation, etc....

Definition at line 220 of file MR_cell_cplx.hpp.

◆ uniq_cell_lst_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef std::set<cell_verts_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uniq_cell_lst_t
private

Used to uniquify cells.

Definition at line 377 of file MR_cell_cplx.hpp.

◆ vdat_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
typedef node_data_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vdat_t

Type to hold a list values extracted from node data via a MR_cell_cplx::node_data_idx_lst_t (also see MR_cell_cplx::fvec3_t).

Definition at line 246 of file MR_cell_cplx.hpp.

Member Enumeration Documentation

◆ cell_kind_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
enum class mjr::MR_cell_cplx::cell_kind_t
strong

Cell Types.

Enumerator
POINT 
SEGMENT 
TRIANGLE 
QUAD 
HEXAHEDRON 
PYRAMID 

Definition at line 299 of file MR_cell_cplx.hpp.

◆ cell_stat_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
enum class mjr::MR_cell_cplx::cell_stat_t
strong

Cell Status.


Enumerator
GOOD 

Looks like a good cell N/A.

TOO_FEW_PNT 

List of points was empty check_cell_vertexes.

TOO_MANY_PNT 

List of points was too long (>5) check_cell_vertexes.

NEG_PNT_IDX 

Negative point index (i.e. not on the central node data) check_cell_vertexes.

BIG_PNT_IDX 

Point index was too big (i.e. not on the central node data) check_cell_vertexes.

DUP_PNT 

At least two points have the same index check_cell_vertexes.

DIM_LOW 

Dimension low (degenerate) check_cell_dimension.

BAD_EDGEI 

Bad edge-edge intersection check_cell_edge_intersections.

BAD_FACEI 

Bad face-edge intersection check_cell_face_intersections.

FACE_BENT 

A face (QUAD, HEXAHEDRON, or PYRAMID) was not plainer check_cell_faces_plainer.

CONCAVE 

(QUAD, HEXAHEDRON, or PYRAMID) was concave TBD

Definition at line 285 of file MR_cell_cplx.hpp.

◆ seg_isect_t

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
enum class mjr::MR_cell_cplx::seg_isect_t
strong

Segment intersection types.

Enumerator
C0_EMPTY 

Cardinality=0. Intersection is the empty set.

C1_VERTEX1 

Cardinality=1. Intersection is a single, shared vertex.

C1_INTERIOR 

Cardinality=1. Intersection is a single point in interior of at least one segment.

CI_VERTEX2 

Cardinality=infinite. Intersection is a segment – equal to input segments.

CI_VERTEX1 

Cardinality=infinite. Intersection is a segment – exactially one vertex in the intersection.

CI_VERTEX0 

Cardinality=infinite. Intersection is a segment – no vertexes included.

BAD_SEGMENT 

At least one of the segments was degenerate.

Definition at line 664 of file MR_cell_cplx.hpp.

Member Function Documentation

◆ add_cell() [1/2]

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell ( cell_kind_t new_cell_kind,
cell_verts_t new_cell_verts )
inline

Add a cell.

Parameters
new_cell_kindThe type of the new cell
new_cell_vertsThe vertexes of the new cell
Returns
A boolean indicateing success
Return values
trueThe cell was added or had been added previously
falseThe cell could not be added (because of a failed geometric check)

Definition at line 1269 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_stat_is_bad(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_dimension(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_edge_intersections(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_vertexes(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_new, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_stat, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uniq_cell_lst.

◆ add_cell() [2/2]

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell ( cell_kind_t new_cell_kind,
cell_verts_t new_cell_verts,
int dimension )
inline

Add parts of a cell of the specified dimension.

Example 1: a valid cell_kind_t::PYRAMID cell added wth dimension == 2 results in three cell_kind_t::TRIANGLE cells and one cell_kind_t::QUAD cell.

Example 2: a valid cell_kind_t::PYRAMID cell added wth dimension == 3 results in one cell_kind_t::PYRAMID cell added

Example 3: a valid cell_kind_t::PYRAMID cell added wth dimension == 1 results in 8 cell_kind_t::SEG cells added

Parameters
new_cell_kindThe type of the new cell
new_cell_vertsThe vertexes of the new cell
dimensionThe dimension of the parts to add.
Returns
Number of cells added

Definition at line 1245 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_dimension(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_structure(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind().

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder().

◆ add_node()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
node_idx_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node ( node_data_t node_data)
inline

Add a point to the central node data store.

The geometric point coordinates are extracted, and tested before the node data is added leading to three cases:

Case 1: If the geometric point contains a NaN, then the point is NOT added to the central node data store, last_point_idx=-1, and last_point_new=false.

Case 2: If the geometric point is already on the list and chk_point_unique is true, then the point is NOT added to the central node data store, last_point_idx is stet to the existing point's index, and last_point_new=false. Only the geometric point components are used to determine if a point exists in the store.

Case 3: If the geometric point is not on the list, then the point is added to the central node data store, last_point_idx is set to the new point's index, and last_point_new=true Note that last_point_idx is always the return value.

Parameters
node_dataThe point to add!

Definition at line 434 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_idx, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_new, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_has_nan(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_to_node_idx_map.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::edge_solver_sdf(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror().

◆ cell_above_level()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_above_level ( const cell_verts_t cell_verts,
int level_index,
uft_t level,
uft_t level_epsilon = epsilon )
inline

Return true if ALL vertexes are above the level by more than epsilon.

Definition at line 1922 of file MR_cell_cplx.hpp.

◆ cell_below_level()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_below_level ( const cell_verts_t cell_verts,
int level_index,
uft_t level,
uft_t level_epsilon = epsilon )
inline

Return true if ALL vertexes are below the level by more than epsilon.

Definition at line 1926 of file MR_cell_cplx.hpp.

◆ cell_kind_to_dimension()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_dimension ( cell_kind_t cell_kind) const
inline

◆ cell_kind_to_req_pt_cnt()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_req_pt_cnt ( cell_kind_t cell_kind) const
inline

◆ cell_kind_to_string()

◆ cell_kind_to_structure()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_structure_t & mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_structure ( cell_kind_t cell_kind,
int dimension ) const
inline

Convert cell_kind_t value to a list of vertexes.

Definition at line 944 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_dimension(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::POINT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_edge_intersections(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_faces_plainer().

◆ cell_kind_to_vtk_type()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_vtk_type ( cell_kind_t cell_kind) const
inline

◆ cell_near_sdf_boundry()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_near_sdf_boundry ( const cell_verts_t cell_verts,
p2real_func_t sdf_function,
uft_t sdf_epsilon = epsilon )
inline

◆ cell_stat_is_bad()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_stat_is_bad ( cell_stat_t cell_stat) const
inline

◆ cell_stat_is_good()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_stat_is_good ( cell_stat_t cell_stat) const
inline

◆ cell_stat_to_string()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
std::string mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_stat_to_string ( cell_stat_t cell_stat) const
inline

Convert cell_stat_t enum value to a string.

Definition at line 1082 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_EDGEI, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_FACEI, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BIG_PNT_IDX, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CONCAVE, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::DIM_LOW, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::DUP_PNT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::FACE_BENT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::NEG_PNT_IDX, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TOO_FEW_PNT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TOO_MANY_PNT.

◆ check_cell_dimension()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_stat_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_dimension ( cell_kind_t cell_kind,
cell_verts_t cell_verts ) const
inline

Perform cell dimension (2D cells must not be colinear & 3D cells must not be coplainer)

Warning
This function assumes that check_cell_vertexes() would have returned GOOD for the cell being checked!
Will not detect degenerate cell_kind_t::SEGMENT as that is handled by check_cell_vertexes.
Parameters
cell_kindThe type of the potential cell.
cell_vertsThe vertexes of the potential cell.

Definition at line 1138 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::DIM_LOW, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell().

◆ check_cell_edge_intersections()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_stat_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_edge_intersections ( cell_kind_t cell_kind,
cell_verts_t cell_verts ) const
inline

Checks that cell edges have expected intersections.

Checks that every pair of cell edges has the correct intersection type (i.e. intersect in a single vertex or an empty intersection). If a bad intersection is detected, then a cell_stat_t of cell_stat_t::BAD_EDGEI will be returned. Otherwise cell_stat_t::GOOD will be returned.

Warning
This function assumes that check_cell_vertexes() would have returned GOOD for the cell being checked!

Note that this function will detect some conditions caught by other checks. For example, this function will return cell_stat_t::BAD_EDGEI for cell_kind_t::SEG cells for which check_cell_dimension() returns cell_stat_t::DUP_PNT. Note the cell_stat_t values are different depending upon which check function is called.

Parameters
cell_kindThe type of the potential cell.
cell_vertsThe vertexes of the potential cell.

Definition at line 1168 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_EDGEI, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C0_EMPTY, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C1_VERTEX1, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_structure(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect_type(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell().

◆ check_cell_face_intersections()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_stat_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_face_intersections ( cell_kind_t cell_kind,
cell_verts_t cell_verts ) const
inline

◆ check_cell_faces_plainer()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_stat_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_faces_plainer ( cell_kind_t cell_kind,
cell_verts_t cell_verts ) const
inline

Check if the vertexes of a cell are coplainer.

Returns cell_stat_t::FACE_BENT if the cell is not plainer, and cell_stat_t::GOOD if it is.

Note that most visualization packages are tolerant of non-plainer faces, and can render them just fine. For example, most applications will automatically split a non-plainer cell_kind_t::QUAD into two triangles. That said such faces can be an issue when using a tessellation for computation. Such issues are most severe for things like FEM, but they can also show up for common visualization computations like the extraction of level curves/surfaces.

Parameters
cell_kindThe type of the potential cell.
cell_vertsThe vertexes of the potential cell.

Definition at line 1221 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_structure(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::FACE_BENT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD.

◆ check_cell_vertexes()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_stat_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_vertexes ( cell_kind_t cell_kind,
cell_verts_t cell_verts ) const
inline

◆ clear()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear ( )
inline

Definition at line 917 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_new, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_stat, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_idx, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_new, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_to_node_idx_map, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uniq_cell_lst.

◆ clear_cache_edge_solver_sdf()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear_cache_edge_solver_sdf ( )
inline

◆ create_dataset_to_point_mapping()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::create_dataset_to_point_mapping ( node_data_idx_lst_t point_data_index)
inline

Create mapping beteen node data and geometric pionts.

Geometric points are constructed from node data via a node_data_idx_lst_t – just like named data sets. Each time a geometric point is required, it is dynamically pulled from the point's data via this mapping.

Parameters
point_data_indexA node_data_idx_lst_t defining how to construct a geometric point.

Definition at line 570 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt.

◆ create_named_datasets() [1/2]

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::create_named_datasets ( named_data_name_list_t scalar_name_strings)
inline

Create named data sets.

Simple way to create named scalar datasets for the first n elements in each point's data.

Parameters
scalar_name_stringsScalar data set names to apply, in order, to node data elements.

Definition at line 549 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst.

◆ create_named_datasets() [2/2]

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::create_named_datasets ( named_data_name_list_t scalar_name_strings,
data_name_to_node_data_idx_lst_t names )
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
scalar_name_stringsScalar data set names to apply, in order, to node data elements.
namesdata_name_to_data_idx entries to create – frequently used to add a named vector dataset.

Definition at line 558 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst.

◆ cull_cells()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cull_cells ( c2bool_func_t func)
inline

◆ dump_cplx()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx ( int max_num_print) const
inline

Dump object to STDOUT.

Parameters
max_num_printMaximum number of points/cells to print. Use 0 to print all points/cells.

Definition at line 1524 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_string(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_scalar_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_vector_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_to_string(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind().

◆ edge_solver_sdf()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
node_idx_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::edge_solver_sdf ( p2data_func_t dat_func,
node_idx_t pnt_idx1,
node_idx_t pnt_idx2,
p2real_func_t sdf_func,
uft_t solve_epsilon = epsilon/10 )
inline

Solve an SDF function for zero on a line between two node data sets, and add the solution to the central node data.

The SDF must have different signs on the given points. If this is not the case, then the endpoint with SDF closest to zero will be returned.

Uses bisection. Halting conditions:

  • The SDF value at the most recent guess is within solve_epsilon of zero
  • The absolute difference in SDF values at the end points is less than solve_epsilon

This function stores a cache of previous solution results. This cache may be cleared by clear_cache_edge_solver_sdf().

Parameters
pnt_idx1First edge vertex
pnt_idx2Second edge vertex
sdf_funcData function (if nullptr, then clear solver cache and return immediately)
solve_epsilonUsed to detect SDF value near zero
dat_funcProduce the node data vector for the newly solved point.

Definition at line 1766 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear_cache_edge_solver_sdf(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder().

◆ fvec3_from_node_data()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
fvec3_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data ( node_data_idx_lst_t data_idx_lst,
node_data_t node_data ) const
inline

Construct a fvec3_t from a node_data_t and a node_data_idx_lst_t.

This is a speciazlied form of vector_from_node_data() that produces fvec3_t objects. Primarly used to extract the location coordinates from node data. Note data_idx_lst must contain at least three values, but only the first three are used. If the node_data_idx_lst_t has fewer than three elements, then this function will throw.

Parameters
data_idx_lstIndex list used to identify the data to pull
node_datanode data vector from which to pull data

Definition at line 472 of file MR_cell_cplx.hpp.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply().

◆ geomi_pnt_line_distance()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pnt_line_distance ( node_idx_t ilinpnt1,
node_idx_t ilinpnt2,
node_idx_t ipnt,
bool seg_distance ) const
inline

◆ geomi_pts_colinear() [1/2]

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear ( node_idx_t pi1,
node_idx_t pi2,
node_idx_t pi3 ) const
inline

◆ geomi_pts_colinear() [2/2]

◆ geomi_pts_coplanar() [1/2]

◆ geomi_pts_coplanar() [2/2]

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar ( node_idx_t pi1,
node_idx_t pi2,
node_idx_t pi3,
node_idx_t pi4 ) const
inline

◆ geomi_seg_isect1()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect1 ( node_idx_t ilin1pnt1,
node_idx_t ilin1pnt2,
node_idx_t ilin2pnt1,
node_idx_t ilin2pnt2 ) const
inline

◆ geomi_seg_isect_type()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
seg_isect_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect_type ( node_idx_t ilin1pnt1,
node_idx_t ilin1pnt2,
node_idx_t ilin2pnt1,
node_idx_t ilin2pnt2 ) const
inline

Determine the nature of the intersection between two line segments.

Definition at line 688 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_SEGMENT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C0_EMPTY, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C1_INTERIOR, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C1_VERTEX1, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX0, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX1, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX2, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pnt_line_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect1().

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_edge_intersections().

◆ geomr_pnt_line_distance()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_line_distance ( const fvec3_t & linpnt1,
const fvec3_t & linpnt2,
const fvec3_t & pnt,
bool seg_distance ) const
inline

Distance between a point and a line.

The result depends on the value of seg_distance:

  • seg_distance==false: Distance between the point pnt and the line containing linpnt1 & linpnt2.
  • seg_distance==true: Distance between the point pnt and the line segment with endpoints linpnt1 & linpnt2.

Definition at line 792 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_pnt_distance().

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pnt_line_distance(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_tri_distance().

◆ geomr_pnt_pln_distance()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_pln_distance ( const fvec3_t & plnpnt1,
const fvec3_t & plnpnt2,
const fvec3_t & plnpnt3,
const fvec3_t & pnt ) const
inline

◆ geomr_pnt_pnt_distance()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_pnt_distance ( const fvec3_t & pnt1,
const fvec3_t & pnt2 ) const
inline

◆ geomr_pnt_tri_distance()

◆ geomr_pnt_zero()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_zero ( const fvec3_t & p1) const
inline

Check if points (just one point for this function) are zero.

Checks if the infinity norm is less than epsilon.

Definition at line 861 of file MR_cell_cplx.hpp.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pts_colinear().

◆ geomr_pts_colinear()

◆ geomr_pts_coplanar()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pts_coplanar ( fvec3_t p1,
fvec3_t p2,
fvec3_t p3,
fvec3_t p4 ) const
inline

◆ geomr_seg_isect1()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_seg_isect1 ( const fvec3_t & lin1pnt1,
const fvec3_t & lin1pnt2,
const fvec3_t & lin2pnt1,
const fvec3_t & lin2pnt2 ) const
inline

◆ geomr_seg_tri_intersection()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_seg_tri_intersection ( fvec3_t tp1,
fvec3_t tp2,
fvec3_t tp3,
fvec3_t sp1,
fvec3_t sp2 ) const
inline

Compute intersection of a segment and a triangle.

Definition at line 906 of file MR_cell_cplx.hpp.

◆ geomr_tri_normal()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
fvec3_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_tri_normal ( const fvec3_t & tripnt1,
const fvec3_t & tripnt2,
const fvec3_t & tripnt3,
bool unit ) const
inline

◆ get_pnt()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
fvec3_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt ( node_idx_t pnt_idx) const
inline

Return point given a node index.

Definition at line 405 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pnt_line_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect1(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().

◆ idx_of_last_point_added()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
node_idx_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::idx_of_last_point_added ( ) const
inline

◆ last_cell_added_was_new()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_added_was_new ( ) const
inline

Retruns true if the last cell given to the add_cell() was new and the return value of status_of_last_cell_added() is cell_stat_t::GOOD.

If chk_cell_unique is true, this value is updated each time add_cell() is called. Otherwise its value is always true.

Definition at line 1314 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_new.

◆ last_point_added_was_new()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
node_idx_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_added_was_new ( ) const
inline

Retruns true if the last point given to the add_node() method was a new point.

Definition at line 415 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_new.

◆ mirror()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror ( std::vector< int > flip_list,
uft_t zero_epsilon = epsilon*1000,
bool reverse_vertex_order = true )
inline

Add new cells with points from existing cells with the given coordinates negated.

When zero_epsilon is positive, some existing points may be adjusted such that components on the flipped axis near zero will become zero. When chk_point_unique is true, both the original point coordinates and the new point coordinates will be mapped to the same point index – that is to say if you add a new point to the complex with the old coordinates or the new coordinates, you will get the same index. Note that a point collision may occur if the adjusted point is equal-ish to another, existing point – a message is printed when this occurs.

Parameters
flip_listA vector of booleans (0 or 1). 1 indicates the coordinate in a node_data_t vector should be negated.
zero_epsilonIf non-negative, will collapse flipped coordinates near zero to be precisely zero.
reverse_vertex_orderReverse the order of vertexes in each cell – useful if vertex order impacts rendering.

Definition at line 1716 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_to_node_idx_map, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind().

◆ named_datasets_count()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_datasets_count ( ) const
inline

◆ named_scalar_datasets_count()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_scalar_datasets_count ( ) const
inline

◆ named_vector_datasets_count()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_vector_datasets_count ( ) const
inline

◆ node_count()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
node_idx_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count ( ) const
inline

◆ node_to_string()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
std::string mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_to_string ( node_idx_t pnt_idx) const
inline

◆ num_cells()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells ( ) const
inline

◆ pnt_has_nan()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_has_nan ( const fvec3_t & test_pnt)
inline

Return true if any component of the point has a NaN.

Parameters
test_pntThe point to test

Definition at line 1656 of file MR_cell_cplx.hpp.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node().

◆ pnt_vs_level()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_vs_level ( const fvec3_t & test_pnt,
int axis_index,
uft_t level,
uft_t close_epsilon = epsilon )
inline

Return 0 if point is close to the level, -1 if it is below the level, and 1 if it is above the level.

Parameters
test_pntThe point to test
axis_indexWhich axis to compare to the level
levelLevel to test aginst
close_epsilonEpsilon used to check for "closeness".

Definition at line 1665 of file MR_cell_cplx.hpp.

◆ req_pt_cnt_to_cell_kind()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_kind_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind ( std::vector< int >::size_type node_count) const
inline

Convert number of points in a cell to cell_kind_t.

Definition at line 1059 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::POINT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().

◆ scalar_from_node_data()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::scalar_from_node_data ( node_data_idx_t data_idx,
node_data_t node_data ) const
inline

Extract a uft_t from a node_data_t and a node_data_idx_t.

Parameters
data_idxIndex list used to identify the data to pull
node_datanode data vector from which to pull data

Definition at line 498 of file MR_cell_cplx.hpp.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().

◆ seg_isect_to_string()

◆ segment_folder()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder ( p2data_func_t data_func,
p2real_func_t sdf_func,
uft_t solve_epsilon = epsilon/10 )
inline

◆ set_data_name_to_data_idx_lst()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::set_data_name_to_data_idx_lst ( data_name_to_node_data_idx_lst_t names)
inline

Create named data sets by setting raw member.

Parameters
namesvalue to set.

Definition at line 542 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst.

◆ status_of_last_cell_added()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_stat_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::status_of_last_cell_added ( ) const
inline

Retruns the status of the last cell given to the add_cell() method.

If (chk_cell_vertexes || chk_cell_dimension | chk_cell_edges) is true, this value is updated each time add_cell() is called. Otherwise its value is always cell_stat_t::GOOD.

Definition at line 1308 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_stat.

◆ triangle_folder()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
void mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder ( p2data_func_t data_func,
p2real_func_t sdf_func,
uft_t solve_epsilon = epsilon/10 )
inline

◆ vec3_cross_product()

◆ vec3_det3()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_det3 ( const fvec3_t & pnt1,
const fvec3_t & pnt2,
const fvec3_t & pnt3 ) const
inline

Determinant of 3x3 matrix with given vectors as columns/rows.

Definition at line 645 of file MR_cell_cplx.hpp.

◆ vec3_diff()

◆ vec3_dot_product()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_dot_product ( const fvec3_t & pnt1,
const fvec3_t & pnt2 ) const
inline

◆ vec3_linear_combination()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
fvec3_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_linear_combination ( uft_t scl1,
const fvec3_t & pnt1,
uft_t scl2,
const fvec3_t & pnt2 ) const
inline

◆ vec3_scalar_triple_product()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_scalar_triple_product ( const fvec3_t & pnt1,
const fvec3_t & pnt2,
const fvec3_t & pnt3 ) const
inline

◆ vec3_self_dot_product()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_self_dot_product ( const fvec3_t & pnt) const
inline

◆ vec3_two_norm()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_two_norm ( const fvec3_t & pnt) const
inline

◆ vec3_unitize()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_unitize ( fvec3_t & pnt) const
inline

◆ vector_from_node_data()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
vdat_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vector_from_node_data ( node_data_idx_lst_t data_idx_lst,
node_data_t node_data ) const
inline

Construct a vdat_t from a node_data_t and a node_data_idx_lst_t.

Parameters
data_idx_lstIndex list used to identify the data to pull
node_datanode data vector from which to pull data

Definition at line 485 of file MR_cell_cplx.hpp.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk().

◆ write_legacy_vtk()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
io_result mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk ( std::string file_name,
std::string description )
inline

Dump to a legacy VTK UNSTRUCTUREDGRID file.

Note: A point vector data set named "NORMALS" will be used for normal vectors. Note: A point vector data set named "COLORS" will be used as COLOR_SCALARS. Components should be in [0.0, 1.0].

Parameters
file_nameThe name of the output file
descriptionThis is the file description.
Returns
0 if everything worked, and non-zero otherwise

Definition at line 1436 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_vtk_type(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_scalar_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_vector_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::scalar_from_node_data(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vector_from_node_data().

◆ write_ply()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
io_result mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply ( std::string file_name,
std::string description )
inline

Dump to a PLY file.

Note: If one of the point vector data sets is named "NORMALS", then it will be used for normal vectors. Note: If one of the point vector data sets is named "COLORS", then it will be used for color data. Components should be in [0.0, 1.0].

Parameters
file_nameThe name of the output file
descriptionFor legacy files, this is the file description. For XML files this is included as a file comment at the start of the file.
Returns
0 if everything worked, and non-zero otherwise

Definition at line 1571 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_unitize().

◆ write_xml_vtk()

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
io_result mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk ( std::string file_name,
std::string description )
inline

Dump to an XML VTK unstructured grid file.

Note: A point vector data set named "NORMALS" will be used for normal vectors.

Parameters
file_nameThe name of the output file
descriptionThis is included as a file comment at the start of the file.
Returns
0 if everything worked, and non-zero otherwise

Definition at line 1333 of file MR_cell_cplx.hpp.

References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_vtk_type(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::scalar_from_node_data().

Member Data Documentation

◆ cell_lst

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_lst_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst
private

House all poly cells.

Definition at line 374 of file MR_cell_cplx.hpp.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cull_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().

◆ data_name_to_data_idx_lst

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
data_name_to_node_data_idx_lst_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst
private

Hold named descriptions of data (scalars & vectors)

Definition at line 363 of file MR_cell_cplx.hpp.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::create_named_datasets(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::create_named_datasets(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_scalar_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_vector_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::set_data_name_to_data_idx_lst(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().

◆ epsilon

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::epsilon = eps
staticconstexpr

epsilon

Definition at line 223 of file MR_cell_cplx.hpp.

◆ last_cell_new

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_new = true
private

◆ last_cell_stat

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
cell_stat_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_stat = cell_stat_t::GOOD
private

◆ last_point_idx

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
node_idx_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_idx = -1
private

◆ last_point_new

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
bool mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_new = true
private

◆ node_data_to_pnt

◆ node_idx_to_node_data

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
node_idx_to_node_data_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data
private

Hold all node data sets.

Definition at line 355 of file MR_cell_cplx.hpp.

Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_near_sdf_boundry(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::edge_solver_sdf(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_to_string(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().

◆ pnt_to_node_idx_map

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
pnt_to_node_idx_map_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_to_node_idx_map
private

◆ uft_epsilon

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uft_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uft_epsilon = std::numeric_limits<uft_t>::epsilon()
staticconstexpr

Definition at line 224 of file MR_cell_cplx.hpp.

◆ uniq_cell_lst

template<bool chk_point_unique, bool chk_cell_unique, bool chk_cell_vertexes, bool chk_cell_dimension, bool chk_cell_edges, typename flt_type , flt_type eps>
uniq_cell_lst_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uniq_cell_lst
private

The documentation for this class was generated from the following file: